数字图像处理图像编码 下载本文

理论对该曲线进行变换。不同的曲线表示方法有不同的特性,一个好的表示方法 应该使最终获得的傅立叶描述子具有尺度、旋转、平移不变性及起始点的无关性。

傅立叶描述子,是物体形状边界曲线的傅立叶变换系数,是物体边界曲线信号的频域分析结果。它是一种描述不受起始点移动尺寸变化及旋转影响的曲线的方法。傅立叶描述子的基本思想,是把坐标的序列点看作复数:

s(k)?s(k)?jy(k)

即x 轴作为实轴,y 轴作为虚轴,边界的性质不变。这种表示方法的优点,是将 一个二维问题简化成一个一维问题。对s(k)的傅立叶变换为:

a(u)??s(k)e?j2?uk/N

k?0N?1 傅立叶描述子序列{a(u)}反映了原曲线的形状特征,同时,由于傅立叶变换具有能 量集中性,因此,少量的傅立叶描述子就可以重构出原曲线。

三.实现代码

1.主函数

%图像傅里叶算子边界描述 %生成图像边界矩阵 clc;

r=zeros(15,15); %构造15*15的0矩阵

13

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; for m=1:15 for n=1:15

if r(m,n)==1 %将边界坐标存入S矩阵 s(i,1)=m; s(i,2)=n; i=i+1; end end end

z=frdescp(s);

%图像傅里叶算子边界逆描述 z34=ifrdescp(z,34); z34=uint8(z34);

I=zeros(15,15); for k=1:34

I(z34(k,1),z34(k,2))=1; k=k+1; end

subplot(122);

14

imshow(I);

title('34个描绘子重构的图像');

2.Frdescp函数

功能:计算边界的傅里叶描绘子s

%傅里叶边界描述算子生成函数 function z=frdescp(s) [np,nc]=size(s); if nc~=2

error('S must be of size (np,2)'); %必须为2列的矩阵 end

if np/2~=round(np/2); %若点数不是偶数,则补一个点 s(end+1,:)=s(end,:); np=np+1; end

x=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函数

功能:给定一组傅里叶描绘子,该函数可用给定数量的描绘子计算其逆变换,以产生一条封闭的空间曲线

%傅里叶边界描述逆算子函数 function s=ifrdescp(z,nd)

np=length(z);

if nargin==1|| nd>np; nd=np; end

x=0:(np-1); m=((-1).^x)';

15

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个描绘子重构的图像 16

四.结果分析