中国地质大学(武汉)数字图像处理上机实习(第三专题)学生姓名:班级:学号:指导老师:实验内容一图计算图象的傅氏变换频谱函数要求(1-6):设计图象f6(x,y) 为3*30*30/256*256,居中垂直排列,选用Matlab函数直接调用实现,重点观察空域图象和频域频谱的对应关系;补充完成:设计120*30/256*256,观察空域图象和频域频谱的对应关系。
1.算法设计2.程序代码%观察空域图象和频域频谱的对应关系%设计图象f6(x,y) 为3*30*30/256*256f=zeros(256,256);f([30:60],[113:143])=1;f([90:120],[113:143])=1;f([150:180],[113:143])=1;subplot(221);imshow(f);% 设计图象f2(x,y)为120*30/256*256,并作fft变换f2 = zeros(256,256);f2(114:143,69:188) = ones(30,120);subplot(223);imshow(f2);%二维傅里叶变换F=fft2(f);F2 = fft2(f2);%绘制fft图subplot(222);imshow(fftshift(log(abs(F))));%title('频谱图')subplot(224);imshow(fftshift(log(abs(F2))));%title('频谱图(量化)')figuresubplot(121);mesh(fftshift(abs(F)));subplot(122);mesh(fftshift(abs(F2)));3.结果分析(1)空域图象和频域频谱对比(2)频谱图(量化)对比二计算显示图象的频谱函数要求(2-6):对f6(x,y)的离散余弦变换,显示其频谱函数补充完成:实现离散傅立叶变换、离散余弦变换、Walsh变换和Hadamard变换,比较四种变换所得到的频谱。
1.程序代码clc;clear;f=zeros(256,256);f([30:60],[113:143])=1;f([90:120],[113:143])=1;f([150:180],[113:143])=1;subplot(232);imshow(f);title('原图像')f1 = double(f);F1 = fft2(f1); %fftF2 = dct2(f1); %DCTF3 = (1/256) * hadamard(256)*f1*hadamard(256); %hadamardF4 = (1/256) * walsh(256)*f1*walsh(256); %walshsubplot(2,4,5);imshow(uint8(abs(F1)));title('fft变换图像')subplot(2,4,6);imshow(abs(F2));title('dct变换图像')subplot(2,4,7);imshow(abs(F3));title('hadamard变换图像')subplot(2,4,8);imshow(abs(F4));title('walsh变换图像')离散余弦变换函数:function b=dct2(arg1,mrows,ncols)[m, n] = size(arg1);if (nargin == 1),if (m > 1) && (n > 1),b = dct(dct(arg1).').';return;elsemrows = m;ncols = n;endend% Padding for vector input.a = arg1;if nargin==2, ncols = mrows(2); mrows = mrows(1); endmpad = mrows; npad = ncols;if m == 1 && mpad > m, a(2, 1) = 0; m = 2; endif n == 1 && npad > n, a(1, 2) = 0; n = 2; endif m == 1, mpad = npad; npad = 1; end% For row vector.b = dct(a, mpad);if m > 1 && n > 1, b = dct(b.', npad).'; end2.运行结果(1)离散余弦变换,显示其频谱函数(2)实现离散傅立叶变换、离散余弦变换、Walsh变换和Hadamard变换,比较四种变换所得到的频谱三设计图象的频域滤波要求(3-6):根据窗函数法设计一个高通滤波器,对图象f6(x,y)进行低通滤波,观察分析空域图象和频谱分布的变化(设计2个截止频率)。
1.算法设计2.程序代码f=zeros(256,256);f([30:60],[113:143])=1;f([90:120],[113:143])=1;f([150:180],[113:143])=1;%subplot(221);imshow(f);F1 = fft2(f);F1_shift = fftshift(F1);%高通滤波F2 = imhp1(f,200);F2_shift = fftshift(F2);g = abs(j);subplot(2,3,1);imshow(f);title('原图像')subplot(2,3,4);imshow(uint8(F1_shift));title('原频谱')subplot(2,3,2);imshow(g);title('高通处理 D1=200')subplot(2,3,5);imshow(uint8(F2_shift));title('高通后的频谱')F2 = imhp1(f,100);F2_shift = fftshift(F2);g = abs(j);subplot(2,3,3);imshow(g);title('高通处理 D1=100')subplot(2,3,6);imshow(uint8(F2_shift));title('高通后的频谱')相关函数:function g= imhp1(f,D0)% 高通滤波% f为输入图像F=fftshift(fft2(f));[W,L] = size(F);x0=floor(W/2);y0=floor(L/2); %设置图像的中心点for i=1:Wfor j=1:LD=sqrt((i-x0)^2+(j-y0)^2); %计算图像中距中心点的距离if D<=D0F(i,j)=0;else%若大于阈值D0,不作处理endendendg=ifft2(ifftshift(F)); %由IFFT得到原函数3.运行结果及分析对图象f6(x,y)进行高通滤波,设置两个截止频率,观察分析空域图象和频谱分布的变化本次设计的为理想高通滤波器,在频域中大于截止频率的范围内全通,在小于截止频率时赋值为零。
在空域中,高通滤波后的图像与原图像相比,保留了边缘部分,这是因为图像的边缘处高频分量较多,被保留;在频域中,经过高通滤波,低频分量被滤除,截止频率越高,被滤除的低频分量越多。
四实际图象的频域滤波要求(3-6):根据窗函数法设计一个高通滤波器,对图象p03-02进行高通滤波,观察分析空域图象和频谱分布的变化(设计2个截止频率)。
1.算法设计算法设计同设计图象的频域滤波。
2.程序代码f = imread('D:\matlab2011\work\P03-02.tif');F1 = fft2(f);F1_shift = fftshift(F1);%高通滤波[F2,j] = imhp(f,200);g = abs(j);figure;subplot(2,3,1);imshow(f);title('原图像')subplot(2,3,4);imshow(uint8(F1_shift));title('原频谱')g= imhp1(f,100);F=fftshift(fft2(g));subplot(2,3,2);imshow(g);title('高通处理 D1=100')subplot(2,3,5);imshow(F);title('高通后的频谱')g= imhp1(f,200);F=fftshift(fft2(g));subplot(2,3,3);imshow(g);title('高通处理 D1=200')subplot(2,3,6);imshow(F);title('高通后的频谱')3.运行结果及分析本次设计的为理想高通滤波器,在频域中大于截止频率的范围内全通,在小于截止频率时赋值为零。
在空域中,高通滤波后的图像与原图像相比,保留了边缘部分,这是因为图像的边缘处高频分量较多,被保留;在频域中,经过高通滤波,低频分量被滤除,截止频率越高,被滤除的低频分量越多。