课程设计报告
一、图像处理基本功能
普通傅里叶变换(ft)与逆变换(ift)、快速傅里叶变换(fft)与逆变换(ifft)、离散余弦变换(DCT),小波变换;数字图像直方图的统计及绘制等;图像平滑算法实现及应用。
(一)、程序源代码:
代码一:
clc;
I=imread('aaa.jpg');
length(size(I))==3
g=rgb2gray(I);
subplot(1,2,1)
imshow(I);
title('原图');
subplot(1,2,2)
I=rgb2gray(I);
subplot(2,2,1);imshow(I);title('原始图象');
[J,T] = histeq(I);
subplot(2,2,3);imshow(J);title('增强图象');
subplot(2,2,2);imhist(I,64);title('原始图象直方图');
subplot(2,2,4);imhist(J,64);title('均衡化图象直方图');
colorbar;
J=fft2(g);%快速傅里叶变换
figure;
subplot(1,2,1)
imshow(J);
title('FFT变换结果');
subplot(1,2,2)
K=fftshift(J);
imshow(K);
title('零点平移');
% 图象的DCT变换
RGB=imread('aaa.jpg');
figure;
subplot(1,2,1)
imshow(RGB);
title('彩色原图');
a=rgb2gray(RGB);
subplot(1,2,2)
imshow(a);
title('灰度图');
figure;
b=dct2(a);
imshow(log(abs(b)),[]),colormap(jet(64)),colorbar;
title('DCT变换结果');
figure;
b(abs(b)<10)=0;
% idct
c=idct2(b)/255;
imshow(c);
title('IDCT变换结果');
运行结果:
代码二:
用小波变换对图像进行增强
clear
I= imread ( 'aaa.jpg') ;
X=rgb2gray(I);
subplot (121) ;
imshow(X);
title ('原始图像') ;%画出原图像
[c,s] =wavedec2 (X, 2, 'sym4') ;
%进行二层小波分解
len = length ( c) ;%处理分解系数,突出轮廓,弱化细节
for I = 1: len
if (c( I )>350)
c( I ) = 2*c (I ) ;
else
c( I ) = 0.5*c( I ) ;
end
end
nx =waverec2 ( c, s, 'sym4') ;
%分解系数重构
subplot(122) ;
image( nx) ;
title('增强图像')
%画出增强图像
(二)运行结果:
代码三:利用巴特沃斯(Butterworth)低通滤波器对受噪声干扰的图像进行平滑处理
I=imread('aaa.jpg');
imshow(I);
J1=imnoise(I,'salt & pepper'); % 叠加椒盐噪声
figure,imshow(J1);
f=double(J1); % 数据类型转换,MATLAB不支持图像的无符号整型的计算
g=fft2(f); % 傅立叶变换
g=fftshift(g); % 转换数据矩阵
[M,N]=size(g);
nn=2; % 二阶巴特沃斯(Butterworth)低通滤波器
d0=50;
m=fix(M/2); n=fix(N/2);
for i=1:M
for j=1:N
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+0.414*(d/d0)^(2*nn)); % 计算低通滤波器传递函数
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
J2=ifft2(result);
J3=uint8(real(J2));
figure,imshow(J3); % 显示滤波处理后的图像
运行结果:
图片自己添加