数字图像处理实验报告
姓名:郑思义
学号:201216524
课程:数字图像处理
题目:
实验一:图像复原算法。
实验二:读入一幅彩色图像,显示各层图像。 实验三:图像的变换(小波或FT 变换)。 实验四:图像的信息隐藏。
实验一:图像复原算法
一、实验内容:读入一幅彩色图片,将其转化为灰度图像。加入退化函数后加入高斯噪声,依次利用直接全逆滤波(适用噪声较小时)、维纳滤波复原图像。 二、实验原理:
1、逆滤波复原法也叫做反向滤波法,其主要过程是首先将要处理的数字图像从空间域转换到傅里叶频域中,进行反向滤波后再由频率域转回到空间域,从而得到复原的图像信号。
有噪声的情况下逆滤波的原理:G(u,v)=F(u,v)H(u,v)+N(u,v) 写成逆滤波的方式:F(u,v)=F(u,v)+ N(u,v)/H(u,v)。实验证明:当退化图像噪声较小时采用逆滤波的方法可以获得比较好的结果。 2、采用维纳滤波是假设图像信号可以近似看成平稳随机过程的前提下,按照使f(x,y)和f(x,y)之间的均方误差达到最小的准则函数来实现
图像复原的,即[]{}
2
2
),(?),(min y x f y x f E e -=式中,E 代表期望值,因
此维纳滤波又称最小均方误差滤波器。
维纳滤波需要假定下述条件成立:1、系统为线性空间移不变系统。2、退化图像、原始图像噪声都是均匀随机场,噪声的均值为零,且与图像不相关。
滤波器的传递函数为:
没有噪声时,维纳滤波退化为逆滤波。有噪声时,维纳滤波利用信噪功率比恢复过程进行修正。 三、实验算法步骤:
1、读入一幅彩色图片,转化为灰度图片I 。
2、对灰度图片退化,利用退化函数()()()[]6
/52
22/2/v u,n v m u k e H -+--=(k
是与湍流有关的常数,k=0.0025)
3、加入高斯噪声。显示模糊退化且添加高斯噪声的图像I2。
4、直接对I2图像进行逆滤波复原I3。
5、对I2图像进行维纳滤波复原I4。
6、对比I3和I4复原效果。 四、实验代码:
clc; clear;
I0=imread('F:\个人\gesang.png'); %读入原图 I=rgb2gray(I0); %将彩色图片转化为灰度图像 imshow(I0);%原图 figure;
subplot(2,2,1);imshow(I); %灰度图 I=double(I); [m,n]=size(I); k=0.0025;
for u=1:m
for v=1:n
H(u,v)=exp((-k)*(((u-m/2)^2+(v-n/2)^2)^(5/6)));
end
end
F=fftshift(fft2(I));
G=F.*H;
I1=real(ifft2(fftshift(G)));
I2=imnoise(uint8(I1),'gaussian',0,0.001);
subplot(2,2,2);imshow(uint8(I2));%模糊退化且添加高斯噪声的图像
F0=fftshift(fft2(I2));
F1=F0./H;
I3=ifft2(fftshift(F1));
subplot(2,2,3); imshow(uint8(I3));%逆滤波复原图
k=0.1;
for u=1:m
for v=1:n
H(u,v)=exp(-k*(((u-m/2)^2+(v-n/2)^2)^(5/6)));
H0(u,v)=(abs(H(u,v)))^2;
H1(u,v)=H0(u,v)/(H(u,v)*(H0(u,v)+k));
end
end
F2=H1.*F0;
I4=ifft2(fftshift(F2));
subplot(2,2,4); imshow(uint8(I4));%维纳滤波复原图
五、实验结果:
六、实验分析:对于噪声很小的或者单纯除燥的情况,逆滤波才会有很好的视觉效果。而维纳滤波对于那些退化函数已知的情况会有
很好的结果。当然退化函数的选取也是比较麻烦的,往往退化函数并不已知。而且与湍流的性质有关的常数K的选取也会起到关键作用。总之很麻烦,刚开始的时候图片像素的大小也会导致H发生变化,H 很小时逆滤波会把噪声放大,导致效果很差。
实验二:读入一幅彩色图像,显示各层图像。
(本实验很简单所以只提供实验代码和结果。)
一、实验代码:
clc;
clear;
I=imread('F:\个人\gesang.png');
R=I;G=I;B=I;
R(:,:,2)=0;R(:,:,3)=0;
G(:,:,1)=0;G(:,:,3)=0;
B(:,:,1)=0;B(:,:,2)=0;
figure;
subplot(2,2,1);imshow(I,[]);title('I');
subplot(2,2,2);imshow(R,[]);title('R');
subplot(2,2,3);imshow(G,[]);title('G');
subplot(2,2,4);imshow(B,[]);title('B');
二、实验结果:
实验三:图像的变换(FT变换)。一、实验代码:
A=imread('F:\个人\gesang.png');
subplot(1,2,1);imshow(A); %显示原图像
if length(size(A))==3
A=rgb2gray(A);
end
subplot(1,2,2);imshow(A); %对灰度图像
A2=fft2(A);
A2=fftshift(A2); %进行二维傅里叶变换
figure,imshow(log(abs(A2)+1),[0,12]); %显示傅里叶变换后的图像title('傅里叶变换后的图像');
二、实验结果:
实验四:图像的信息隐藏(以数字水印为例)
一、实验代码:
W=imread('F:\个人\shuiyin.png');%水印
A=imread('F:\个人\gesang.png');%原图
%加入水印
[a1,a2,a3]=size(W);
A0=A([1:a1],[1:a2],:);
A0=double(A0);W=double(W);
a=0.1;%嵌入强度因子
for i=1:3
[U1{i},S1{i},V1{i}]=svd(A0(:,:,i));
A1(:,:,i)=S1{i}+a*W(:,:,i);
[U2{i},S2{i},V2{i}]=svd(A1(:,:,i));
A2(:,:,i)=U1{i}*S2{i}*V1{i}';
end
AW=A;
AW([1:a1],[1:a2],:)=A2;
AW=uint8(AW);W=uint8(W);
subplot(1,3,1), imshow(A);%显示原图
subplot(1,3,2), imshow(W);%显示水印
subplot(1,3,3), imshow(AW);%显示加水印后的图片二、实验结果: