数字图像处理图像编码

上式中的?2h称为高斯—拉普拉斯滤波(Laplacian of Gaussian,LoG)算子,也称为“墨西哥草帽”。它是一个轴对称函数,各向同性,它的一个轴截面如图所示。

由图可见,这个函数在r=±s处有过零点,在|r|s时为负;可以证明这个算子定义域内的平均值为零,因此将它与图像卷积并不会改变图像的整体动态范围。但由于它相当光滑,因此将它与图像卷积会模糊图像,并且其模糊程度是正比于s的。

2正因为?h的平滑性质能减少噪声的影响,所以当边缘模糊或噪声较大时,2利用?h检测过零点能提供较可靠的边缘位置。在该算子中,s的选择很重要,

s小时边缘位置精度高,但边缘细节变化多;s大时平滑作用大,但细节损失大,边缘点定位精度低。应根据噪声水平和边缘点定位精度要求适当选取s。 LoG算子用到的卷积模板一般较大,不过这些模板可以分解为一维卷积来快速计算。通过判断零交叉点及其两侧像素符号的变化来确定边缘点。边缘点两侧的二阶微分是异号的,且正号对应边像点的暗侧,负号对应边像点的亮侧,两侧的符号指示着边缘的起伏走向。

三.实现代码

1.主函数 clc;

i = imread('D:\\matlab2011\\work\\p5-03.tif'); subplot(121);imshow(i);title('原图像');

b=log_edge(i);

subplot(122);imshow(b);title('原图像');

9

2.LoG算子提取边缘点函数

%下面的代码可以实现LoG算子提取边缘点的功能 function e=log_edge(a) %该函数实现LoG算子提取边缘点 %输入为图像a,输出为边缘图像e [m,n]=size(a);

e=repmat(logical(uint8(0)),m,n); sigma=2;

%产生同样大小的边缘图像e,初始化为0 rr=2:m-1;cc=2:n-1; fsize=ceil(sigma*3)*2+1;

%选择点数为奇数的滤波器的尺寸fsize>6*sigma; op=fspecial('log',fsize,sigma); %产生LoG滤波器

op=op-sum(op(:))/prod(size(op)); %将LoG滤波器的均值变为0 b=filter2(op,a);

%利用LoG算子对图像滤波

thresh=.75*mean2(abs(b(rr,cc))); %设置过零检测的门限

%寻找滤波后的过零点:+ -和- +表示水平方向从左到右和从右到左过零 %[+ -]'和[- +]'表示垂直方向从上到下和从下到上过零 %这里我们选择边缘点为值为负的点

[rx,cx]=find(b(rr,cc)<0&b(rr,cc+1)>0

&abs(b(rr,cc)-b(rr,cc+1))>thresh); %[- +]的情况 e((rx+1)+cx*m)=1;

[rx,cx]=find(b(rr,cc-1)>0&b(rr,cc)<0

&abs(b(rr,cc-1)-b(rr,cc))>thresh); %[+ -]的情况 e((rx+1)+cx*m)=1;

[rx,cx]=find(b(rr,cc)<0&b(rr+1,cc)>0&abs(b(rr,cc)-b(rr+1,cc))>thresh); %[- +]'的情况 e((rx+1)+cx*m)=1;

[rx,cx]=find(b(rr-1,cc)>0&b(rr,cc)<0

&abs(b(rr-1,cc)-b(rr,cc))>thresh); %[+ -]'的情况 e((rx+1)+cx*m)=1;

%某些情况下LoG滤波结果可能正好为0,下面考虑这种情况: [rz,cz]=find(b(rr,cc)==0); if~isempty(rz) %寻找滤波后的过零

%+0-和-0+表示水平方向从左到右和从右到左过零 %[+0-]'和[-0+]'表示垂直方向从上到下和从下到上过零 %边缘正好位于滤波值为零点上

zero=(rz+1)+cz*m; %零点的线性坐标

10

zz=find(b(zero-1)<0&b(zero+1)>0

&abs(b(zero-1)-b(zero+1))>2*thresh); %[-0+]'情况 e(zero(zz))=1;

zz=find(b(zero-1)>0&b(zero+1)<0&abs(b(zero-1)-b(zero+1))>2*thresh); %[+0-]'情况

e(zero(zz))=1;

zz=find(b(zero-m)<0&b(zero+m)>0

&abs(b(zero-m)-b(zero+m))>2*thresh); %[-0+]情况 e(zero(zz))=1;

zz=find(b(zero-m)>0&b(zero+m)<0

&abs(b(zero-m)-b(zero+m))>2*thresh); %[+0-]情况 e(zero(zz))=1; end

四.结果分析

用LoG算子进行边缘检测的结果如图。Laplace算子对通过图像进行操作实现边缘检测的时,对离散点和噪声比较敏感。于是,首先对图像进行高斯暖卷积滤波进行降噪处理,再采用Laplace算子进行边缘检测,由上图可见有较好提取边缘的效果。

11

DIP-6 图像描述

一.题目要求

对下图象提取多边形对象的边缘,根据傅氏描述算子重建该图多边形的边界

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

二.算法设计

傅立叶描述子(Fourier Descriptor,简称FD)常用来表示单封闭曲线的形状特征,其基本思想是将目标轮廓曲线建模成一维序列,对该序列进行一维的傅立叶变换,从而获得一系列的傅立叶系数,用这些系数对该目标轮廓进行描述。傅立叶描述子方法有一系列优点,如:计算原理简单,描述清晰,具有由粗及精的特性等。计算原理简单可以使得特征提取更加稳定,因为在计算的过程中,无须设置大量控制参数就可以获得结果,计算的一致性好。傅立叶描述子具有明确的物理或几何意义,它比某些特征描述子(如Hu 不变矩)更具直观性。此外,由于任何一个序列经傅立叶变换后,其能量主要集中于少数几个低频傅立叶系数 上,因此采用极少的傅立叶系数就可以描绘该序列特征。同时,随着傅立叶系数 的增多,该序列的细节特征得以更好地描述。因此,傅立叶描述子对目标轮廓有 非常好的由粗及精的描述能力。一个傅立叶描述子的构建包括两步:首先,定义 一种好的表示(representation)方法对轮廓曲线进行描述;然后,采用傅立叶

12

联系客服:779662525#qq.com(#替换为@)