基于形状边缘方向直方图的图像检索算法研究
2009年第8期陈泽滨等:基于形状边缘方向直方图的图像检索算法研究
e(i,j)255 if |M(i,j)|ΕMthreshold0 otherwise
145 (5)
1.1图像边缘方向直方图的提取
为了求取边缘方向直方图,需要提取图像中目标的边缘。基于形状的图像检索技术对于边缘的定位要求很高,这将会直接影响到最终的检索效果。图像边缘检测的方法很多,主要有Robert算子、Sobel算
子、Prewitt算子和LOG(LaplaceOfGauss)算子等,而Canny算子是目前图像边缘检测方法中最好的,它是Canny于1986年提出的,这样在e(i,j)=255处的梯度方向为
θ=arctan) for e(i,j)=255
P(i,j)
(6)
θ≤360,为了计算方便,θ量化为72份,每0≤
Histogram[i]/5],:
Histogram[i]/nEdge
精度。
Canny:
假设I是n,器(GaussianS滤波,消除图像中的噪声:
22
H(i,j)=δe
)δ22
其中nEdge为所有边缘方向的个数。
但是,边缘方向会受到图像旋转的影响,进而影响到其直方图,采用下面的平滑公式对直方图进行平滑:
G(i,j)=f(i,j)3H(i,j)(卷积)
(1)
Histogram[j]s=
j+k
其中δ是高斯函数的散步参数,用于控制平滑程度(本文中取值为1);f(i,j)为待平滑的图像数据,即图像I中的像素,G(i,j)为平滑后的图像数据,H(i,j)是高斯滤波函数。
Histogram[i]2k+1
(7)
Histogram[j]s为平滑后的直方图,参数K在本
文中取1。
通过以上步骤求出了灰度图像I的满足平移、尺度和旋转不变性的边缘方向直方图,最后只需用欧拉距离来计算两幅图像的边缘方向直方图距离即可得出它们之间的相似性。
接着对滤波后的图像求梯度,沿着x方向的梯度(水平梯度)为:
P(i,j)={G(i,j+1)2G(i,j)+G(i+1,j+1)2G(i+1,j)}/2,0<i,j<n
(2)
2 算法函数介绍
算法的准确性需要通过实验结果来验证,在Windows环境下开发一个基于上述算法的图像检索系统,下面是主要的算法函数介绍:
kernel=FilterGaussianMask(sigma,masksize);//构造高斯滤波器/高斯核sigma=1、masksize=9。ImageConvolution(3img,m-x,m-y,masksize,ker2nel);
//图像卷积,返回平滑去噪后的图像,kernel为高斯核函
表1 x方向梯度模板
j21i21ii+1
000
j0
j+1011
2121
沿着y方向的梯度(垂直梯度)为:
Q(i,j)={G(i,j)-G(i+1,j)+G(i,j+1)2G(i+1,j+1)}/2,0<i,j<n
(3)
数,masksize=9。
ImageGradient(pimgbuf0,m-x,m-y,masksize,kernel);//求取图像梯度,此时的kernel为梯度模板,masksize=3,x、y方向梯度分别为p、q。
MyMathFunctionAtan(p[i],q[i]);//梯度方向(角度),θ=atan(q[i]/p[i])。
ImageEdgeDirectionHistogram(pimgbuf0,x,y,thr,BIN-NUM).//二值化图像,提取出边缘:幅值magnitude>thr,像素点edge=255,否则edge=0;计算edge=255的点的梯度方向,并
表2 y方向梯度模板
j21i21ii+1
000
j01
j+101
2121
(i,j)=|P(i,j)|+|Q(i,j)|, 求取梯度后的图像,I′
通过下面两个式子求取幅值并勾勒出图像的边缘(即e(i,j)=255的像素点):
M(i,j)=
22
P(i,j)+Q(i,j)
进行统计,最后归一化,以数组形式返回图像的归一化边缘方向直方图。其中,thr为门限值(用于提取边缘取100),BIN-NUM为量化份数,等于72。
(4)