APP下载

一种工业恶劣环境下的图像二值化方法及FPGA实现

2017-08-08张梅王涛

微型电脑应用 2017年7期
关键词:邻域像素点灰度

张梅, 王涛

(江苏自动化研究所 计算机事业部, 连云港 222006)



一种工业恶劣环境下的图像二值化方法及FPGA实现

张梅, 王涛

(江苏自动化研究所 计算机事业部, 连云港 222006)

针对工业恶劣环境情况,在研究Canny算法的基础上,对其进行了中值滤波改进。根据改进的Canny 算子边缘信息,将最佳全局阈值法与局部阈值自适应法在边缘信息的基础上融合起来,对图像进行了二值化处理,讨论了算法的FPGA实现方法。实验表明此算法在二值化图像时具有良好的效果,能较好的保留图像的边缘信息。

图像二值化; 恶劣环境; Canny; FPGA

0 引言

图像二值化在目标识别、图像分析及OCR等图像处理中有着非常重要的作用。图像二值化方法的关键是阈值的选取,目前,阈值的选取方法可分为全局阈值法、局部阈值法及动态阈值法[1]。

通常来说,全局阈值法对直方图为双峰、质量较好的图像有效,但对于低对比度和光照不均匀的图像二值化效果不佳,因而应用范围有限。局部阈值法则能够适应较为复杂的情况,比全局阈值法有更为广泛的应用。但它往往忽略了图像的边界特征信息,使得原图像中的一些不同区域在二值化后变成了一块大区域,造成二值化结果图像某些重要信息的丢失。动态阈值法充分考虑了像元的邻域特征,能够根据图像的不同背景情况自适应地改变阈值,可较精确地提取出二值图像,但它过渡地夸大了像元的邻域灰度的变化,会把不均匀灰度分布的背景分割到目标中去,带来许多不应出现的假目标[1]。

在工业恶劣环境下,由于采集的图像都存在着一定程度的噪声干扰而且图像呈低对比度的特点,利用普通的阈值方法进行二值化对工业环境下采集的图像进行二值化往往会带来目标细节上的缺失,给后续的分析带来了一定的困难。鉴于此,本文提出了一种利用边缘特征的自适应二值化方法。

对图像二值化等预处理,它的特点是处理数据量大,如果用一般的软件来实现必然会比较慢,实时性差。针对以上特点,利用FPGA,并结合verilog HDL类C语言编程灵活的特点,可以方便地实现系统级设计,大大提高图像二值化效率。

1 图像二值化方法

常用的几种用于边缘检测的算子有Roberts,Sobel,Prewitt,LoG和Laplacian等。这些算子的主要缺点是对噪声敏感,而工业恶劣环境中噪声是难以避免的。

Canny边缘提取方法是由John Canny在1986年首先提出的,之后迅速成为边缘提取的一种重要方法。Canny算子充分反映了最优边缘检测器的数学特性,是对信噪比与定位能力的最优化逼近算子,广泛应用于图像处理和模式识别问题中[2]。

1.1 Canny算法介绍

Canny算法的实现主要有四个步骤:

(1) 用2D高斯滤波模板进行卷积运算以消除噪声;

高斯函数可表达为式(1)。

(1)

(2) 计算梯度的大小和方向

Canny算法采用2×2邻域一阶偏导的有限差分来计算滤波后的数据阵列I(x,y)的梯度大小和梯度方向。

(3) 非极大值抑制

沿幅角方向检测模值的极大值点,即边缘点,遍历8个方向图像像素,把每个像素偏导值与相邻像素的模值比较,取其最大值为边缘点,置像素灰度值为0。

(4) 双阈值检测

由于单阈值处理时,合适的阈值选择较困难,常常需要采用反复试验,因此采用双阈值检测算法。对经过非极大值抑制后的图像作用两个高低阈值:高阈值TH1和低阈值TL2(一般取TH1=0.4×TL2),两个阈值作用后得到两个图像1、2,较大阈值检测出的图像1去除了大部分噪声,但是也损失了有用的边缘信息。较小阈值检测得到的图像2则保留着较多的边缘信息,以此为基础,补充图像1中的丢失的信息,连接图像边缘。

1.2 Canny算法的改进

Canny算法采用高斯滤波器以消除噪声,然而高斯滤波器一方面会造成原图像的过度光滑,另一方面会造成缓变边缘容易丢失,这样会导致复杂图像的弱边缘检测产生丢失现象。而中值滤波器可以克服高斯滤波器给图像带来的模糊,对多种噪声都有着很好的适应性,并且有一定的边缘保持能力[3]。中值滤波就是用一个含有奇数点的滑动窗口,将窗口正中点的值用窗口内各点的中值代替。

1.3 自适应阈值的二值化算法

自适应阈值的二值化算法结合了全局阈值法和局部阈值方法。

全局阈值方法主要有:P-tile方法、大津法[5]等等。大津法(OTSU)是一种确定图像二值化分割阈值的算法,由日本学者大津于1979年提出。从大津法的原理上来讲,该方法又称作最大类间方差法。其基本原理可表述为:

对于图像I(x,y),前景(即目标)和背景的分割阈值记作T,属于前景的像素点数占整幅图像的比例记为ω0,其平均灰度μ0;背景像素点数占整幅图像的比例为ω1,其平均灰度为μ1。图像的总平均灰度记为μ,类间方差记为g。

假设图像的大小为M×N,图像中像素的灰度值小于阈值T的像素个数记作N0,像素灰度大于阈值T的像素个数记作N1,则有式(2)~式(8)。

(2)

(3)

N0+N1=M+N

(4)

ω0+ω1=1

(5)

μ=ω0*μ0+ω1*μ1

(6)

g=ω0(μ0-μ)2+ω1(μ1-μ)2

(7)

g=ω0ω1(μ0-μ1)2

(8)

采用遍历的方法得到使类间方差g最大的阈值T,此灰度值就作为图像二值化处理的阈值。

局部阈值方法主要有邻域均值法。若考虑到二值图像扫描中目标边缘的灰度值总是小于其局部背景的灰度值(邻域灰度的变化特征),则可以采用类似于Musavi的局部自适应二值化方法。该方法利用各象素的n×n邻域(n为奇数,为减少运算量,一般取n=3或5),对该象素的邻域灰度进行统计

T=M+a×s

其中,a为0~1之间的常数,由图像的质量确定(当图像质量较好时,a取较小的值);M为某一象素邻域内各象素的灰度平均值;S为该邻域内象素灰度的标准差。T为考虑邻域的局部自适应阈值,该值用来对局部图像进行二值化处理。

自适应阈值的二值化算法的基本思路是:先用改进的Canny算法检测获得图像的边缘特征,然后根据边缘像素点的空间位置关系,实现不同像素点的二值化处理。如果图像点是非边界像素点,则用大津法确定出最佳全局阈值进行二值化处理,如果图像点是边界像素点,则采用局部阈值法(Musavi)来确定阈值。

2 算法的FPGA实现方法

采用FPGA实现自适应阈值二值化方法的基本流程,如图1所示。

图1 3×3窗口模板原理框图

图1中改进的Canny算法中包含了中值滤波计算、梯度大小和方向、非极大值计算及双阈值检测等。

2.1 中值滤波

中值滤波硬件实现主要完成两个模块的设计:窗口模块和排序模块。本文选用了3×3窗口,原理图如图1所示。

FIFO缓冲器和寄存器分别用来产生行延时和列延时,其中FIFO由FPGA中的RAM模块例化实现,其深度对应于图像的列数。图2中P1.1-P1.3、P2.1-P2.3及P3.1-P3.3对应于窗口中的9个数据,可采用三级比较法得到相应的中值。三级比较法原理如下:

首先通过第一级比较器获取各组最大值、中值、最小值并分别送到第二级的3个比较器中,经过再次比较后将获取的各组的中值送到第三级比较器,然后比较得出中值。三级比较可并行运行实现对图像所有像素的中值运算[3]。

2.2 梯度大小和方向计算

经过中值滤波的数据再通过一个2×2的模板形成一个2×2的邻域窗口,按照下式即可求出梯度大小,如式(9)~(11)

(11)

其中py[i,j]、px[i,j]分别表示像素点x和y方向偏导数,M[i,j]表示像素点梯度大小。

传统的梯度方向计算是通过反正切而得出的,这种计算虽然精确但计算非常复杂,不利于实时处理。由于在非极大值抑制时,无需知道具体指向那个方向,只需要知道法向方向,于是可以通过比较px和py的正负及两者大小即可近似估计梯度的方向。

2.3 非极大值抑制与边缘检测

本文使用将强弱边缘检测同时进行,并且在边缘检测之前形成窗口,这样避免了后续考虑同步的问题,节省了存储单元。关于阈值选取,本文采用了基于统计梯度直方图的方法[4],当有梯度值输入时,RAM中相应的地址内容被读出来,加1后再存入该地址。如此进行下去,直到整幅图像扫描完毕,得到梯度的直方图。按照地址从小到大的顺序依次累加RAM中的值,当累加和不小于图像总像素的80%时,输出对应的地址,即为Th,而Tl则由Th右移一位近似得到。

获取图像边缘数据后,就可以利用Musavi算法获取局部阈值。Musavi算法可以简化成求取中心点像素的3×3窗口的均值灰度。

2.4 大津法

σ2(T)=a*(An-a)*(u-v)2

(12)

由上可知,进行类间方差计算时涉及两个除法运算,由于硬件进行浮点除法时资源消耗较大,精度有限,有必要将其转化为定点乘法的运算。其变换过程如式(13)。

σ2(T)=(An*b-a*Bn)2/(a*(An-a))

(13)

f=A*(An-A)*(An*bj-aj*Bn)2

(14)

n=aj*(An-aj)*(An*B-A*Bn)

(15)

1) 接收图像数据,以统计灰度直方图,同时计算统计量An、Bn;

2) 计算灰度级为i(0≤i≤255)时的统计量f、n;

3) 记录f

在此算法中,将实数运算转换为整数运算,提高了系统工作频率,而且避免了除法结果的舍入精度问题。

3 实验结果与分析

在工业环境下采集的图片,如图2所示。

图2 未经处理的图

大津法结果图,如图3、图4和图5、图6所示。

图3 大津法二值化图像

图4 本文方法获取的图像

本文算法结果图和局部阈值化方法结果图、硬件实现结果图。通过对比发现,本文算法较好的获取了二值化图像,而且保留了较多的边缘信息。本文通过结合边缘特征产生了二值化图像,而且结合硬件特点分析了硬件实现方法,结果表明算法具有明显的效果。

图5 局部阈值方法获取的图像

图6 硬件实现结果图

4 总结

本文二值化方法充分结合了Canny算子在边缘检测的优势,将全局阈值化与局部阈值化进行综合优化,同时针对图像特点对Canny算子进行了中值滤波改造,有效保留了图像的边缘信息。在算法的FPGA实现方面,本文结合硬件实现的特点探讨了硬件实现的方法并生成了硬件处理的图像。本文算法对低对比度图像二值化有着较为明显的效果,但对于高速实时图像处理方面还需要进一步探讨更为简化的硬件处理方法。

[1] 陈强,朱立新. 结合Canny算子的图像二值化[J].计算机辅助设计与图形学学报,2005,17(6):302-306.

[2]JohnCanny.AComputationalApproachtoEdgeDetection[J].IEEETransactionsonPatternAnalysisandMachineIntelligence,1986,8(6):679-698.

[3] 张素文,陈志星.Canny边缘检测算法的改进及FPGA实现[J].红外技术,2010,2:85-89.

[4] 冯柳,高晓蓉.Canny算法的改进及FPGA实现[J].电子技术应用,2008,44:34-36.

[5] 李俊丰,窦勇. 图像二值化中阈值计算优化与FPGA实现[J]. 计算机科学. 2006,33(7):461-465.

Research on Image Binarization in Industrial Harsh Environment and Implementation on FPGA

Zhang Mei, Wang Tao

(Computer Division, Jiangsu Automation Research Institute, Lianyungang 222006, China)

As to the industrial harsh environment, the paper firstly described the Canny algorithm and median filter improvement. Then, based on the edge information of improved Canny algorithm, authors carried out image binarizing process which combined the optimal global threshold and local adaptive threshold. At last, the FPGA implementation principles were discussed. The results showed that the method was available to binarize images and get image edge information in high quality.

Image binarization; Harsh environment; Canny algorithm; FPGA

张梅(1984-),女,莱西人,研究方向:加固计算机研制工作。 王涛(1984-),男,滕州,研究方向:加固计算机研制及其程序化应用研究。

1007-757X(2017)07-0069-04

TM46

B

2016.12.19)

猜你喜欢

邻域像素点灰度
基于混合变邻域的自动化滴灌轮灌分组算法
采用改进导重法的拓扑结构灰度单元过滤技术
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
基于局部相似性的特征匹配筛选算法
稀疏图平方图的染色数上界
基于5×5邻域像素点相关性的划痕修复算法
基于邻域竞赛的多目标优化算法
基于canvas的前端数据加密
基于最大加权投影求解的彩色图像灰度化对比度保留算法
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割