实时图像边缘检测形态学优化设计及FPGA实现*
2013-09-07刘紫燕
刘紫燕,祁 佳
(贵州大学 计算机科学与信息学院,贵州 贵阳 550025)
图像边缘通常指图像灰度变化率最大的像素点的总和,边缘广泛地分布于物体之间、物体与背景之间[1]。图像边缘也是人眼和计算机识别图像、获取信息的重要特征来源,因此图像的边缘检测在在航空、军事、人工智能等需要图像处理的领域都有着广泛应用研究[2]。
数学形态学是以集合论为基础的学科,是几何形态学分析与描述的工具。数学形态学在计算机视觉、图像分析、模式识别等方面得到了广泛的应用。
传统的实时图像边缘检测大多只使用Sobel算子进行处理得出边缘[2],基本能满足实时图像边缘的要求,但是仍存在很强的背景噪声[3]。本文利用FPGA对实时图像进行边缘检测并进行形态学的优化,得到的边缘清晰,同时很好地抑制了背景噪声。
1 系统总体框架设计
Sobel边缘检测算子是实时图像边缘检测比较常用的算子,在FPGA上实现简单,对于噪声有一定的抑制能力,同时又能取得比较好的边缘检测效果。
为了获得更加精细的边缘以及更好地抑制背景噪声,本文利用形态学的闭运算优化边缘。基于FPGA的实时图像边缘检测形态学优化系统如图1所示。
图1 基于FPGA的实时图像边缘检测形态学优化系统框图
本系统主要设计思想是在实时图像Sobel边缘检测之后,增加边缘形态学的处理,采用先进行膨胀运算,再进行腐蚀运算实现对边缘的形态学优化。
2 数学形态学及基本运算
数学形态学是分析几何形状和结构的一种数学方法[4],是以集合代数为基础,并用集合论的方法来研究几何结构的学科。数学形态学的思想是利用具有一定形态的结构元素度量和提取图像的对应特征,达到对图像分析以及识别的目的。结构元素是数学形态学中最重要、最基本的概念,是在分析图像时收集图像信息的探针,在图像中不断移动探针就可确定图像中各部分间的关系,从而提取有用的特征[5]。
常用的形态学运算有腐蚀、膨胀、开运算和闭运算。
腐蚀(Θ)在数学形态学运算中作用是消除物体边界点,膨胀(⊕)作用是把图像周围的背景点合并到物体中[5]。
设A为一幅二值图像,B为结构元素,则膨胀运算定义为[6]:
膨胀运算为集合B首先做关于原点的映射Bˆ,然后平移a形成集合(Bˆ)a,最后计算集合(Bˆ)a与集合A不为空集的结构元素参考点的集合。
设A为一幅二值图像,B为结构元素,则腐蚀运算定义为:
腐蚀运算为集合B平移a后得到的(B)a仍在集合A中的结构元素参考点的集合。
膨胀扩大图像,腐蚀收缩图像。开运算可以平滑图像轮廓,削弱狭窄部分,去掉细的突出;闭运算也可以平滑图像的轮廓,它一般融合窄的缺口和细长的弯口,去掉小洞,填补轮廓上的缝隙[6]。设A为一幅二值图像,B为结构元素,则有如下定义:
其中◦表示开运算,·表示闭运算。
本文运用数学形态学闭运算对检测出的图像边缘进行优化。
3 形态学优化的设计与实现
本文改进算法先对实时图像进行Sobel边缘检测,再将检测出来的边缘进行形态学的优化。如图2所示。
图2 本文算法框架图
3.1 灰度图像及Sobel梯度计算
实时图像的边缘检测必须将采集到的原始图像转换为RGB图像,再将RGB图像转换为灰度图像[6]。用Sobel边缘检测算子对图像进行运算时,先用Sobel算子对图像像素做卷积运算,再用梯度公式计算图像梯度[7]。本系统用3条线性缓冲器来实现Sobel算子对图像的据卷积运算。P1~P9为Sobel算子3×3运算模板中需要处理的像素点灰度值,X1~X9为Sobel算子模板的系数,乘加部分由QuartusII软件中LPM/Megafunctions宏功能模块库的可编程乘加器altmult_add与可编程多路并行加法器parallel_add模块进行运算[8]。如图3所示。
图3 三条线性缓冲器卷积运算示意图
3.2 形态学闭运算优化
形态学运算在FPGA上的具体实现过程与前述的卷积运算过程相似,因此在卷积运算的基础上得出腐蚀和膨胀的运算流程。本系统用3条线性缓冲器来实现对边缘检测后图像数据的膨胀运算。在Sobel边缘检测算子检测出图像的边缘数据后,将边缘数据送入膨胀运算模块,P1~P9为膨胀模块3×3运算模板中需要处理的边缘数据,如图4所示。
图4 膨胀运算的过程示意图
与腐蚀运算一样,本系统仍选用3条线性缓冲器来实现对边膨胀运算后图像数据的腐蚀运算,将膨胀运算后的数据送入腐蚀运算模块,经过腐蚀模块3×3模板运算,最终得到形态学优化的边缘图像。
膨胀模块的核心部分Verilog HDL代码为:
always@(posedge iCLK or negedge iRST_N)begin
if(!iRST_N)begin
……
end
else begin
oDVAL<=iDVAL;
P9<=Line0;
P8<=X9;
P7<=X8;
P6<=Line1;
P5<=X6;
P4<=X5;
P3<=Line2;
P2<=X3;
P1<=X2;
if(iDVAL)
oDATA<=P9|P8|P7|P6|P5|P4|P3|P2|P1;
else
oDATA<=0;
将P1~P9做OR运算。
腐蚀模块的核心部分Verilog HDL代码与膨胀部分的代码基本相同,只是将像素点相“与”,代码如下:
if(iDVAL)
oDATA<=P9&P8&P7&P6&P5&P4&P3&
P2&P1;
else
oDATA<=0;
将P1~P9做AND运算。
4 形态学优化检测结果与分析
图5为采用Sobel算法进行实时边缘检测后的图像,图6为采用Sobel算法进行边缘检测之后,又经形态学闭运算优化的图像,即改进算法的结果。对比运行结果可以得出,本系统对于实时图像进行边缘检测之后,进行了形态学闭运算的优化,检测的精度显著提高,特别是背景噪声得到很好的抑制。
图5 Sobel实时边缘结果
图6 本文改进算法结果
本文采用Sobel算子实现实时图像的边缘检测,再进行数学形态学闭运算的优化,最后在友晶公司的DE2-70的FPGA平台上实现。与传统边缘检测相比,本文方法进一步提高了图像边缘检测的精度,同时很好地抑制了背景噪声。可应用在监控、航空等实时性高、计算量大的领域。
[1]高德威,陈天煌,刘朋.蚁群算法在图像边缘检测上的应用研究[J].计算机与数字工程,2009,37(1):131-134.
[2]刘紫燕.实时图像边缘检测的设计及FPGA实现[J].电子科技,2011,24(12)∶1-3,6.
[3]李杰,彭月英,元昌安,等.基于数学形态学细化算法的图像边缘细化[J].计算机应用,2012,32(2)∶514-516,520.
[4]何希平,基于邻域Mean-Shift的彩色图像滤波算法[J].计算机应用,2011,31(2)∶386-389.
[5]赵德春,彭承琳,陈园园,等.用形态学改进医学图像边缘检测算法[J].重庆大学学报,2010,33(2)∶123-126.
[6]张广军.视觉测量[M].北京∶科学出版社,2008.
[7]谷陆生.基于SOPC的实时边缘检测系统的研究[J].电子技术应用,2009,35(8)∶47-48,75.
[8]李明,赵勋杰,毛伟民.Sobel边缘检测的FPGA实现[J].现代电子技术,2009,33(16)∶44-46.