1、引言
边缘是图像剖析畛域最根本和最重要的概念之一。边缘检测是图像处理中的一项根本工作,用于检测图像中的边缘,并将其分离出来。边缘检测办法有很多种,其中最罕用的是基于Sobel算子、Prewitt算子、Roberts算子等的边缘检测办法。这些办法能够检测出二值图像中的直线和圆形边缘。
然而,在理论利用中,人眼对图像的边缘敏感度较低,因而须要进行边缘检测的优化。Zernike矩是一种新型的函数空间办法,其提出的边缘强度因子更适宜检测边缘细节,尤其是对于简单图像更加敏感。本文将介绍如何应用Zernike矩进行亚像素级别的边缘检测,并给出Matlab源码实现。
2、Zernike矩
Zernike矩是一种形容灰度值散布的函数空间办法。其根本思维是通过对灰度值进行高斯加权均匀来建设Zernike矩,而后利用该矩阵计算亚像素级别的边缘强度因子。具体来说,Zernike矩能够示意为:
W(x,y) = ∑i=1N(xi−x)(yi−y)xy(xi,yi) = \sum{i=1}^{N}(x_i-\mu_x)(y_i-\mu_y)\sigma{xy}(xi,y_i) = \sum{i=1}^{N}(xi-\mu_x)(y_i-\mu_y){xy}(xi,y_i) = \sum{i=1}^{N}(x_i-\mu_x)(y_i-\mu_y)xyi其中,$\mu_x$和$\mu_y$是两个常数,$N$是像素数,$xy$是灰度值之间的标准差。
Zernike矩具备以下特点:
- 对于单个像素而言,Zernike矩是恒定不变的。
- 对于多个相邻像素而言,Zernike矩随着间隔的减少而发生变化。
- 对于不同灰度级别的像素而言,Zernike矩具备不同的权重系数。
- 对于简单图像而言,Zernike矩可能更加敏感地检测出边缘细节。
3、基于Zernike矩的亚像素级别边缘检测
上面将介绍如何应用Matlab实现基于Zernike矩的亚像素级别边缘检测。具体步骤如下:
- 读取图像并转换为灰度图像。
- 计算每个像素四周8个像素的Zernike矩。
- 依据Zernike矩计算每个像素的边缘强度因子。
将边缘强度因子依照从大到小的程序排序,选取前K个最大值作为最终的边缘检测后果。
本文由mdnice多平台公布