图像预处理(二值化)

图像预处理(二值化)

本文的实验室主要经过opencv与python3实现,相关的代码能够在GitHub中找到。html

1. 图像获取与灰度化

经过摄像头获取到的图像为彩色的图像。彩色图像主要分为两种类型,RGB及CMYK。其中RGB的彩色图像是由三种不一样颜色成分组合而成,一个为红色,一个为绿色,另外一个为蓝色。而CMYK类型的图像则由四个颜色成分组成:青C、品M、黄Y、黑CMYK类型的图像主要用于印刷行业。python

每一个图像的像素一般对应于二维空间中一个特定的位置,而且有一个或者多个与那个点相关的采样值组成数值。灰度图像,也称为灰阶图像,图像中每一个像素能够由0(黑)到255(白)的亮度值(Intensity)表示。0-255之间表示不一样的灰度级。git

将彩色图像转化成为灰度图像的过程称为图像的灰度化处理。灰度化,在RGB模型中,若是R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,所以,灰度图像每一个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。彩色图像中的每一个像素的颜色有R、G、B三个份量决定,而每一个份量有255个值可取,这样一个像素点能够有1600多万(255255255)的颜色的变化范围。而灰度图像一个像素点的变化范围为255种,因此在数字图像处理种通常先将各类格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。灰度图像的描述与彩色图像同样仍然反映了整幅图像的总体和局部的色度和亮度等级的分布和特征。对于灰度化的方式有份量法、最大值法、平均值法,加权平均法等。本文使用平均值法对图像进行灰度化。github

对于平均值法,将彩色图像中的R、G、B三个份量的亮度求简单的平均值,将获得的值做为灰度值输出而获得灰度图。其实现的表达式以下:算法

1524360552787

经过实验获得获得以下图所示,灰度化先后:(实现代码)函数

2.二值化

经过以上对彩色图片进行灰度化之后,把获取到的灰度图像进行二值化处理。对于二值化,其目的是将目标用户背景分类,为后续车道的识别作准备。灰度图像二值化最经常使用的方法是阈值法,他利用图像中目标与背景的差别,把图像分别设置为两个不一样的级别,选取一个合适的阈值,以肯定某像素是目标仍是背景,从而得到二值化的图像。测试

对于阈值法二值化,假设阈值设置为T,就能够以T为边界,把数值分为两个部分,则二值化的公式以下:
1524362043254
式中,Gray(i,j)表示在图片(i,j)处的灰度值,Ϝ(i,j)表示二值化后的值,只能取0或者1。在阈值二值化中,最主要的是选取合适的阈值,这也是二值化的难点所在。经常使用的二值化阈值选取方法有双峰法、p参数法、大律法(Otsu法)、最大熵阈值法、迭代法等。3d

2.1 双峰法选取阈值T

若是给定的图像的灰度分布是比较有规律,苗木表和背景在图像的直方图各自造成一个波峰,他们之间存在波谷。那么,阈值T能够在波谷取值,以下图所示:
1524362867104
实现的表达式以下:

式中,T表示阈值,Gray(i,j)表示原始图像的灰度值,G(i,j)表示二值化后的灰度值。经过实验获取获得的道路图像的直方图灰度分布,如图所示。

从图中能够看出,在道路图像二值化中不适合使用双峰法选取阈值。htm

2.2 P参数法选取阈值T

若已知目标区域的P值,则能够采用P参数的法进行分割。假设已知直方图中目标区域所占的比例为P_1,则该算法实现的步骤以下:
(1). 计算图像直方图的分布P(t),其中t = 0,1,2...255,表示图像的灰度值;
(2). 从t=0开始,计算图像的累积分布直方图,实现的表达式为:

(3). 计算阈值T,

获得的T值也表示P_1最接近累积分布的灰度分布值t。图片

2.3 大律法(Otsu法)选取阈值T

Otsu算法的基本思想是用某一假定的灰度值t将图像的灰度分为两组,当两组的类间方差最大时,此灰度值t就是图像二值化的最佳阈值。假设图像有L个灰度值,那么灰度值的取值范围为0~L-1,在此范围内取灰度值T,将图像分红两组G_1和G_2其中G_1包含的像素值在0~T,G_2的灰度值在T+1~ L-1,用N表示图像图像像素总数,n_i表示灰度值为i的像素的个数。求值过程以下:假设每个灰度值i出现的几率p_i= n_i/N,G_1和G_2两组像素个数在总体图像中所占的百分比为ω_1和ω_2,两组平均灰度值为μ_1和μ_2,则:
占比:

平均值灰度值:

图像总灰度值:

类间方差:

最佳阈值:获取类方差最大值时对应的灰度值t:

经过以上的步骤便可获得最佳的T值。

2.4 最大熵阈值法求T值

在信息论中的Shannon entropy概念用于图像分割,依据是使得图像中目标与背景分布的信息量最大,即经过测试图像灰度直方图的熵,找出最佳的阈值T。对于灰度值范围为0,1,2...L-1的图像,其直方图熵的定义为:

其中p_i为像素值为i的像素占整个图像的几率。设阈值t将图像划分为目标O和背景B两类,他们的几率分布分别为:

因此目标O和背景B的熵函数分别为:

其中,

图像的总熵为:

此方法不须要先验知识,而对非理想的双峰直方图也能够进行较好的分割,但不适合信噪比较低的图像分割。
经过实验,对灰度化的图像进行二值化后的效果以下,

能够本身调整阈值来到达更好的二值化效果。相关代码,与API在GitHub中能够找到。

未完待续。

参考文献

https://wenku.baidu.com/view/acc24dcf680203d8ce2f2469.html

https://wenku.baidu.com/view/bb6e38f7c8d376eeaeaa3163.html

相关文章
相关标签/搜索