DIP-6图像描述一.题目要求对下图象提取多边形对象的边缘,根据傅氏描述算子重建该图多边形的边界二.算法设计傅立叶描述子(FourierDescriptor,简称FD)常用来表示单封闭曲线的形状特征,其基本思想是将目标轮廓曲线建模成一维序列,对该序列进行一维的傅立叶变换,从而获得一系列的傅立叶系数,用这些系数对该目标轮廓进行描述。傅立叶描述子方法有一系列优点,如:计算原理简单,描述清晰,具有由粗及精的特性等。计算原理简单可以使得特征提取更加稳定,因为在计算的过程中,无须设置大量控制参数就可以获得结果,计算的一致性好。傅立叶描述子具有明确的物理或几何意义,它比某些特征描述子(如Hu不变矩)更具直观性。此外,由于任何一个序列经傅立叶变换后,其能量主要集中于少数几个低频傅立叶系数上,因此采用极少的傅立叶系数就可以描绘该序列特征。同时,随着傅立叶系数的增多,该序列的细节特征得以更好地描述。因此,傅立叶描述子对目标轮廓有非常好的由粗及精的描述能力。一个傅立叶描述子的构建包括两步:首先,定义一种好的表示(representation)方法对轮廓曲线进行描述;然后,采用傅立叶000000000000000000000000000000000000011111100000000100000100000001000000100001110000000100001000000000100001000000000100001000000000100001000000000100001000000001000001000000010000001111111100000000000000000000000000000000000理论对该曲线进行变换。不同的曲线表示方法有不同的特性,一个好的表示方法应该使最终获得的傅立叶描述子具有尺度、旋转、平移不变性及起始点的无关性。傅立叶描述子,是物体形状边界曲线的傅立叶变换系数,是物体边界曲线信号的频域分析结果。它是一种描述不受起始点移动尺寸变化及旋转影响的曲线的方法。傅立叶描述子的基本思想,是把坐标的序列点看作复数:()()jy(k)sksk即x轴作为实轴,y轴作为虚轴,边界的性质不变。这种表示方法的优点,是将一个二维问题简化成一个一维问题。对s(k)的傅立叶变换为:12/0()()NjukNkauske傅立叶描述子序列{()}au反映了原曲线的形状特征,同时,由于傅立叶变换具有能量集中性,因此,少量的傅立叶描述子就可以重构出原曲线。三.实现代码1.主函数%图像傅里叶算子边界描述%生成图像边界矩阵clc;r=zeros(15,15);%构造15*15的0矩阵r(3,8:13)=1;%按要求构造“R”型图像r(4,7)=1;r(4,13)=1;r(5,6)=1;r(5,13)=1;r(6,3:5)=1;r(6,13)=1;r(7,3)=1;r(7,13)=1;r(8,3)=1;r(8,13)=1;r(9,3)=1;r(9,13)=1;r(10,3)=1;r(10,13)=1;r(11,3)=1;r(11,12)=1;r(12,3)=1;r(12,11)=1;r(13,3:10)=1;subplot(121);imshow(r);title('构建的图像边界');%主函数%图像傅里叶算子边界描述i=1;form=1:15forn=1:15ifr(m,n)==1%将边界坐标存入S矩阵s(i,1)=m;s(i,2)=n;i=i+1;endendendz=frdescp(s);%图像傅里叶算子边界逆描述z34=ifrdescp(z,34);z34=uint8(z34);I=zeros(15,15);fork=1:34I(z34(k,1),z34(k,2))=1;k=k+1;endsubplot(122);imshow(I);title('34个描绘子重构的图像');2.Frdescp函数功能:计算边界的傅里叶描绘子s%傅里叶边界描述算子生成函数functionz=frdescp(s)[np,nc]=size(s);ifnc~=2error('Smustbeofsize(np,2)');%必须为2列的矩阵endifnp/2~=round(np/2);%若点数不是偶数,则补一个点s(end+1,:)=s(end,:);np=np+1;endx=0:(np-1);m=((-1).^x)';s(:,1)=m.*s(:,1);s(:,2)=m.*s(:,2);s=s(:,1)+i*s(:,2);z=fft(s);3.Ifrdescp函数功能:给定一组傅里叶描绘子,该函数可用给定数量的描绘子计算其逆变换,以产生一条封闭的空间曲线%傅里叶边界描述逆算子函数functions=ifrdescp(z,nd)np=length(z);ifnargin==1||ndnp;nd=np;endx=0:(np-1);m=((-1).^x)';d=round((np-nd)/2);z(1:d)=0;z(np-d+1:np)=0;zz=ifft(z);s(:,1)=real(zz);s(:,2)=imag(zz);s(:,1)=m.*s(:,1);s(:,2)=m.*s(:,2);四.结果分析1.34个描绘子重构的图像2.32个描绘子重构的图像3.29个描绘子重构的图像4.25个描绘子重构的图像以上为用34,,3,29,25个描绘子重建的图像。使用34个描绘子重建的图像显示的边界与原图像相同,随着所用描述子减少,出现失真。本图像较简单,若是复杂图像,随着描述子减少重建图像的变化趋势为:1.显示稍微平滑一些的边界,但产生的形状与原图像十分接近。2.仅保留了边界的主要特征。3.丢失边界的主要特征,出现失真。描绘算子应该尽可能的对平移、旋转和缩放等改变不敏感。当结果取决于所处理的点的顺序时,要给它们加一个额外的约束,以便使描绘子对起始点不敏感。傅里叶描绘子虽然对几何变化简介不敏感,但这些参数的变化却与描绘子的简单变化有关。