引言
图像边缘检测是图像处理的一项基本技术,在工业、医学、航天和军事等领域有着广泛的应用。图像处理的速度一直是一个难题。虽然DSP具备指令流水线特性和很高的处理速度,但其速度仍然很受限制,而利用高速可编程逻辑器件FPGA/CPLD来设计图像边缘检测器可以很好的克服这个问题,是一种全新的解决方案。
1 图像边缘检测算法
用于图像边缘检测的算法很多,诸如Rorberts算子、Sobel算子、Prewitt算子、Laplaceian算子等,由于Sobel算法只涉及到加法操作,并且可以取得很好的效果,所以是最常用的边缘检测算法。由于图像在边缘附近会出现灰度上的突变,所以,Sobel边缘检测方法以原始图像灰度为基础,并通过考察图像每个像素在某个领域内灰度的变化,然后利用边缘邻近的一阶导数最大值来检测边缘,再设置权重来检测水平、垂直、左对角、右对角等各个不同方向上密度幅度的不同来实现边沿检测。图1所示是一个3×3像素的举例,其水平、垂直、左对角和右对角图像上密度幅度的变化可以表示为:
H=(Q0+Q3+Q3+Q6)-(Q2+Q5+Q5+Q8)
V=(Q0+Q1+Q1+Q2)-(Q6+Q7+Q7+Q8)
DR=(Q1+Q0+Q0+Q3)-(Q5+Q8+Q8+Q7)
DL=(Q1+Q2+Q2+Q5)-(Q3+Q6+Q6+Q7)
其中,H、V、DL、DR用于计算梯度的大小和方向,而梯度的大小可由正式给出一个普遍的估计值:
Magnitude=Max(H,V,DR,DL)
这样,通过对图像灰度作直方图分析,便可以给出区分度阀值,如果Magnitude大于这个阀值,则该像素为边界像素,否则为一般像素。
2 系统设计
该边缘检测器以ALTERA公司的FLEX10K20芯片为核心器件。由图像传感器获取的图像经前端处理器处理即可得到3×3像素图形数据,然后送入各个滤波器进行滤波,最后将有关结果送输出处理模块处理后输出,其流程图如图2所示。
边缘检测的关键是求出四个方向的图像梯度数据绝对值的最大值,同时判别最大值出现的方向,其内部结构如图3所示,边缘检测的核心部分包括滤波器FILTER、比较器COMPARE、边界判断器JUDGE和寄存器等。