一种基于自定义高度场的二值图像去噪方法
2017-09-23黄秋波钟征祥苏厚勤
黄秋波 钟征祥 苏厚勤
(东华大学计算机科学与技术学院 上海 201620)
一种基于自定义高度场的二值图像去噪方法
黄秋波 钟征祥 苏厚勤
(东华大学计算机科学与技术学院 上海 201620)
为消除二值图像中的噪声,提高二值图像的质量,提出一种新的图像处理方法。对于图像中的黑斑区域以及物体内的像素空洞区域,对其中每个像素根据其周围环境以及在环境中所处的位置,类似于薄膜,为像素定义高度量,并采用二次曲线的方法计算每一个像素对应的高度,一幅图像便对应了一个高度场。然后根据选择的高度阈值,对每个像素进行调整,以减少噪声(缩小黑斑或缩小空洞)。以上过程经过若干次迭代,最后图像变化趋于稳定,此即最后的结果。通过实验结果可知,该算法具有较高的实用性。
二值图像 去噪 高度场
0 引 言
二值图像指的是像素只具有黑白两种颜色的图像。二值图像由于内容对比度大、信息精炼,便于进一步对信息进行处理。同时所需存储空间小,在机器视觉许多算法中成为信息传递的重要载体。根据其来源区分,有的二值图来源于图像采集设备采集的灰度图的直接二值化,有的来源于其他图像算法的输出。由于光照环境的不稳定性、算法的局限性、传输过程中的噪音等原因,二值图像往往不能达到人们想要的理想程度,总是存在着噪声。虽然研究者提出了很多不同的二值化方法,如全局二值化[1]、局部二值化[2]和自适应二值化方法[3]等,但任然无法避免二值化后的图像中存在噪声。
在本文研究中有一些十字路口的监控录像,计划实现对视频中车辆的稳定跟踪,首先使用Vibe算法[4]得到代表前景的二值图像。如图1所示,黑色像素点代表前景即运动物体,白色像素点代表背景。
图1 前景二值图像
如图1所示,前景二值图像存在两个缺点:
1) 由于树叶的摇曳、光照不稳定等原因,在每一帧都有很多本应属于背景的像素点错误地被Vibe算法判断为前景像素,在图中为一些离散稀疏的黑色散斑。
2) 运动物体如车辆、行人在前景二值图中能比较正确地表示出来,但有部分车辆在前景图像中的黑色区域比较零散、接近破碎,这不利于后续的处理分析,比如发现每辆车的轮廓。
根据分析,图中的噪声信息可以分为两类:一类是白色区域中小型黑色散斑,另一类是黑色区域中的白色空洞。空洞不一定被黑色前景包围,有时候也与外界联通,它们使得前景变得破碎。因此对前景图像进行增强处理,即设法消除这两类噪声信息。
目前常用的二值图像去噪方法有中值滤波[5-6],基于数学形态学的膨胀、腐蚀操作[7-8],基于连通域面积的调整方法[9]等。
中值滤波方法将处理区域中的所有像素按灰度值大小进行排序,并将排序后位于中间的像素赋予中心像素,噪声像素点经过排序后一般位于队首或队尾,因此中值滤波可以将噪声信息过滤掉。中值滤波的区域模板大小的选择与图像中噪声斑块的最大尺寸成正相关。但如果区域模板过大,在去除噪声的同时会使得真正的前景轮廓的边缘向内收缩,减少了前景二值图中蕴含的信息量。
膨胀操作将图像A与任意形状的内核B进行卷积,内核B通常为正方形或者圆形,其中有一个可定义的锚点,通常定义为内核中心点。进行膨胀操作时,将内核B划过图像,将内核B覆盖区域的最大像素值提取,并代替锚点位置的像素。这一操作会导致图像中的亮区开始扩展。腐蚀操作与膨胀操作相反,它提取的是内核覆盖下的像素最小值,因此导致暗区开始扩展。腐蚀操作可以使得相邻黑色区域连接起来,从而消除白色空洞,但同时它会使得黑色前景的轮廓向外扩展以及放大黑色噪声点。在腐蚀操作后,接着使用一次膨胀操作,一定程度上可以消除这些不利影响。
基于连通域面积的方法将二值图像中具有相同颜色且以四领域或八领域连接方式[9]相互连接的像素集合定义为连通域。然后考察各个连通域的面积,将具有较小面积的连通域认为是噪声信息。当位于前景中的噪声信息与背景联通时,这种方法就不能判断出这种噪声。
本文提出了一种崭新的图像处理方法,以空洞的处理阐述其原理。当扫描到图中的某个白色像素,其可能是背景像素,也可能是位于前景中的某个空洞,但空洞的轮廓形状相对于背景是比较小的,可以根据该像素所在的空洞轮廓的大小以及距离空洞轮廓的接近程度计算该像素的高度。高度计算方法使得背景中的像素高度和空洞中的像素高度可以被显著地区分,从而达到识别去除空洞的目的。
1 背景原理
本文算法具有一定的物理背景,是一种容易被理解,意义清晰的图像处理算法。当把一张拥有若干空洞的薄板浸入肥皂水中,然后把薄板向上提出,由于肥皂水具有比较大的表面张力,在空洞处形成一张稳定的液体薄膜。同时由于薄膜自身重力的影响,薄膜中心处高度较低,边缘处高度较高。如果形成的薄膜越大,则其自身重力也越大,在重力拉扯下,其中心的高度也越低。如图2所示。
图2 高度阈值过滤示意图
图中可观察到,在空洞边缘处,向中心移动时,高度的下降速度在大的轮廓中也越大。当给定一个不是很小的高度阈值(略小于零)时,大的空洞的边缘处只有小部分像素的高度大于阈值,而小空洞有更大比例的像素的高度大于阈值。这一点可以帮助达到小空洞与大空洞(被认为背景)分离的目的。
2 基本定义
定义1行程
在图像的某一行水平或竖直扫描线上,由多个连续的相同颜色像素点所组成的像素集合称为一个行程[10],用行程码[10]表示。按颜色分类二值图像有两种行程:黑色行程和白色行程。按扫描方式分类有水平行程和竖直行程两类。
定义2行程码
由一个行程的的起始和结束点坐标构成的二元组称为行程码,用(S,E)表示,其中S表示行程的起始坐标,E表示行程的终止坐标。对于水平行程,S、E代表横坐标;对于竖直行程,S、E代表纵坐标。
定义3高度场
高度场是一个矩阵,矩阵中的每个值是一个标量,代表对应位置上的高度值。二值图像可以表示为一个二维矩阵,矩阵中的每个值为0或1。本文设计了一种方法,为每个像素计算其高度,从而能够从图像矩阵得到相同尺寸的高度矩阵,作为下一步图像处理算法的基础数据。
3 像素高度计算方法
根据第1节所述,可以根据物理力学推导出薄膜上各个点的高度随位置的变化公式,然后将某个像素的坐标代入公式,即可求得其高度。但从物理学上推导薄膜的高度计算公式比较困难,推导出来的公式也可能存在计算量过大的问题。其实为了计算出高度场而进行图像处理,我们没必要追求高度变化规律与现实薄膜的曲线完全吻合,而只要符合以下几个总体上的变化趋势即可:1) 高度在中间比较小,在边缘比较大;2) 当从边缘运动到中心时,高度的下降速率减小;3) 空洞区域越大,高度在边缘的下降速率越大,在中心处的高度越低。因此本文提出了一种适合于计算机编程实现的高度计算方法。
如图3所示,正在处理像素点P,设P的坐标为(x,y),P所在的水平行程Rh为(Sh,Eh),竖直行程Rv为(Sv,Ev),其中Sh、Eh分别为水平行程的起始终止坐标,Sv、Ev分别为竖直行程的起始终止坐标。我们分别计算点P在两个行程内的对应的高度。P的高度将与行程的宽度以及点P在行程内的位置有关。然后在得到两个高度后,对它们进行融合,得到最终的高度。
图3 像素处理示意图
3.1 计算行程内高度
在某个行程内,像素点越靠近中心,其高度越低,越靠近边缘,其高度值越高。不同行程相比,如果行程长度越大,则其高度越低。
本文用二次曲线模拟像素点高度在某个行程内的变化规律。若行程R=(S,E),设高度坐标变化函数h=ax2+bx+c,其中参数a为输入参数,则将点(S-1,0)、(E+1,0)代入函数即可求得剩余参数。将P点坐标代入即可求得其在行程内的高度。
3.2 高度融合
根据3.1节所述,可以分别计算出水平行程和竖直行程上的高度,假设xHeight为像素P在水平行程内的高度,yHeight为竖直行程内的高度,下面使用融合的方式得到最终的高度finalHeight,则:
finalHeight=a×xHeight+b×yHeight
其中a、b为加权系数,a+b=1,0≤a,b≤1。
令
a=yWidth2/(xWidth2+yWidth2)
b=xWidth2/(xWidth2+yWidth2)
其中xWidth为点P所在水平行程的长度,即水平行程的起始终止坐标之间的差距的绝对值;yWidth为点P所在竖直行程的长度。
这样的设定使得较短的行程的高度对最终的高度的影响更大。因为如果一个像素所在的水平竖直行程有一个比较短,则其很可能处于边缘,高度值应较大。较短的行程中计算出来的高度往往是比较大的,同时我们为它赋予较大的权重,使得最后的高度也比较大。
4 图像调整算法
4.1 直接阈值化
首先阐述噪声信息之一,黑色斑块的消除。根据上述高度计算方法,可以计算得到上图中的各个黑色像素的高度,如图4所示。
图4 像素高度计算结果
然后选择一个高度阈值,将高度(注:高度值都为负数)大于阈值的像素调整为白色,高度小于阈值的像素调整为黑色。例如选择高度阈值为-5,则图4调整为图5。
图5 高度二值化处理结果
可见,靠近轮廓的黑色像素被调整为了白色,黑色斑块向内收缩。如果减小高度阈值,则可以将斑块中的全部黑色像素调整为白色。但高度阈值作用于整幅图像,在高度阈值过小的情况下,同样为黑色的前景也会向内收缩,前景边缘被破坏,有效信息受损失,这是不希望看到的。
对于消除另一类噪声信息即白色空洞,过程是类似的,不过是计算每个白色像素处的高度,然后将高度大于阈值的白色像素调整为黑色。
下面具体给出了这两个算法:
1) 空洞移除算法:removeHoles
输入:二值图像src,高度阈值ht
输出:二值图像dst
步骤:
(1) 扫描src,计算其中的每个白色像素处对应的高度;
(2) 判断高度是否大于ht,如果大于则将dst中对应位置的像素设置为黑色,否则设置为白色,将src中黑色区域对应的像素也设置为黑色;
(3) 输出dst。
2) 散斑移除算法:removeSpots
输入:二值图像src,高度阈值ht
输出:二值图像dst
步骤:
(1) 扫描src,计算其中的每个黑色像素处对应的高度;
(2) 判断高度是否大于ht,如果大于则将dst中对应位置的像素设置为白色,否则设置为黑色,将src中白色区域对应的像素也设置为白色;
(3) 输出dst。
图像中同时存在着这两类噪声信息,因此在先去除与后去除哪一类噪声信息的选择上存在两种选择。这两种选择会得到两种不同的结果。对于本文的图像应先去除白色空洞,后去除黑色散斑。首先去除白色空洞,它们存在于车辆或者行人图像的中间,去除它们使得车辆或者行人的黑色变得实心,但同时黑色散斑却不容易变得更大。然后下一步去除黑色散斑。如果首先去除黑色散斑,则会把车辆行人中的黑色像素块当做噪声去除,这是不对的。因此需要根据具体图像选择使用顺序。一般的第一步是使图像主要信息得到强化,本文是黑色的前景信息;第二步考虑去掉噪声信息。
4.2 多次迭代算法
为解决上述当高度阈值过小时,在去除噪声信息的同时,有效信息的边缘发生改变的问题,可以选择一个不是很小的高度阈值,将直接阈值化的结果图像重新作为算法的输入,经过若干次迭代,直到图像像素的改变趋于平稳,最后输出图像。
迭代算法:iterEnhance
输入:二值图像src,高度阈值ht,最大迭代次数maxIterNum
输出:二值图像dst
过程:
(1) 调用removeSpots(src,dst,ht)或removeHoles(src,dst,ht)并取得这次调用中发生调整的像素个数,同时迭代次数增一;
(2) 若发生调整的像素个数为零,或者已达到最大迭代次数,则算法结束,输出dst,否则令src为dst,返回第一步。
5 实验结果及分析
实验环境为window 7+opencv 3.0+msvc 12。使用一张由Vibe算法得到的前景二值图像进行测试。在图像处理软件中对原图的前景轮廓进行手动的处理得到了理想状态下的二值图像。两图如图6和图7所示。
图6 原图,PSNR=8.93
图7 手动勾勒的理想二值图
为衡量经过算法处理的图像与理想目标图像的逼近程度,可采用峰值信噪比(PSNR)作为评价指标,图像的峰值性噪比由下式定义:
其中:M、N是x、y方向图像像素点的个数,u和u*分别是处理后的图像和理想目标图像,L是图像中灰度的取值范围,对8 bit的灰度图像而言L=255。峰值信噪比越大表示处理后的图像越接近理想图像。
5.1 迭代算法效果分析
对原图首先进行迭代的removeHoles算法,然后进行迭代的removeSpots算法,高度阈值分别为-10、-5,最大迭代次数都为15,计算高度时采用的二次项系数为1。
根据实验结果,两者都在第7次迭代后结束。结果如图8-图13所示。
图8 removeHoles迭代1次,PSNR=10.92
图9 removeHoles迭代2次,PSNR=11.50
图10 removeHoles迭代7次,PSNR=11.36
图11 removeSpots迭代1次,PSNR=11.83
图12 removeSpots迭代2次,PSNR=11.94
图13 removeSpots迭代7次,PSNR=12.01,最终结果图
从图中可以看出,第一个阶段有效消除了白色空洞,第二个阶段有效消除了黑色斑点。使得最后的效果很接近于理想图。
5.2 与其他算法的结果对比
使用PSNR作为定量指标,与中值滤波,形态学膨胀腐蚀运算进行了对比,结果如图14、图15、表1所示。
图14 中值滤波结果
图15 腐蚀膨胀结果
PSNR本文算法中值滤波膨胀腐蚀运算12.019.2811.30
从表1中可以看到本文算法在三种算法中取得了最大的PSNR,说明处理后的图像与理想图像最为接近,取得了较好的效果。
6 结 语
一幅没有噪声并且完整地反映出真实信息的二值图像对基于图像应用的重要性是不言而喻的。本文提出了一种新的二值图像去噪算法,根据像素所处环境计算出其自定义的高度,由于在噪声区域和有效信息的边缘,高度具有不同的下降梯度。根据高度进行阈值化可以有效地区分噪声和有效信息,取较小的高度阈值进行多次迭代,进一步保护了有效信息的边缘轮廓特征。
实验结果表明,本文提出的算法对于二值图像的去噪取得了较好的效果,具有较高的实用性。对于视频序列处理,由于每一帧的图像都有所不同,如何自适应地调整参数,使得在每一帧都取得较好的处理结果,这是下一步需要研究的方向。
[1] Kurita T,Otsu N,Abdelmalek N.Maximum likelihood thresholding based on population mixture models[J].Pattern Recognition,1992,25(10):1231-1240.
[2] Sahoo P K,Soltani S,Wong A K C.A survey of thresholding techniques[J].Computer Vision Graphics & Image Processing,1988,41(2):233-260.
[3] Yang J D,Chen Y S,Hsu W H.Adaptive thresholding algorithm and its hardware implementation[J].Pattern Recognition Letters,1994,15(2):141-150.
[4] Barnich O,Van Droogenbroeck M.ViBE:A powerful random technique to estimate the background in video sequences[C]//IEEE International Conference on Acoustics,Speech and Signal Processing.IEEE Computer Society,2009:945-948.
[5] 袁新星.基于中值滤波的高密度椒盐噪声图像去噪算法研究[D].武汉:湖北工业大学,2014.
[6] 赵高长,张磊,武风.改进的中值滤波算法在图像去噪中的应用[J].应用光学,2011,32(4):678-682.
[7] Serra J.Image Analysis and Mathematical Morphology[M].New York:Academic Press,1983.
[8] 邹攀红,孙晓燕,张雄伟,等.一种基于数学形态学的二值图像去噪算法[J].微计算机信息,2010,26(11):202-204.
[9] 王树梅,赵卫东,王志成.一种基于对象的二值图像重构算法[J].计算机工程与应用,2008,44(4):27-29.
[10] 傅景广,许刚,王裕国.基于模式化方法的二值图像降噪[J].计算机工程与应用,2003,39(24):88-90.
ABINARYIMAGEDENOISINGMETHODBASEDONCUSTOMHEIGHTFIELD
Huang Qiubo Zhong Zhengxiang Su Houqin
(CollegeofComputerScienceandTechnology,DonghuaUniversity,Shanghai201620,China)
In order to eliminate the noise in the binary image and improve the quality of the binary image, this paper presents a new image processing method. For the dark areas in the image and the pixel void area within the object, each pixel defined a high amount depending on its surrounding environment and the location in the environment, similar to the film, using quadratic function to calculate the height corresponding to each pixel, and one image corresponded to a height field. Then we adjusted each pixel according to the selected height threshold to reduce noise (reduce dark spots or reduce the cavity). The above process after several iterations, the final image changes tended to be stable, and that was the final result. The experimental results show that the algorithm has high practicability.
Binary image Denoising Height field
TP751.1
A
10.3969/j.issn.1000-386x.2017.09.042
2016-10-24。黄秋波,副教授,主研领域:车联网,图像处理。钟征祥,硕士生。苏厚勤,教授级高工。