Advertisement

数字图像处理实验六 图像复原

阅读量:

数字图像处理学习记录
实验内容
(1)基于均值滤波器的图像复原。

复制代码
    img=imread('cameraman.tif');%读取图片
    subplot(2,3,1);
    imshow(img); %显示图像
    title(''),xlabel('原图');
    
    
    img_noise=double(imnoise(img,'gaussian',0.06)); %对图像附加高斯噪声
    subplot(2,3,2);
    imshow(img_noise,[]); %显示加噪图像
    title(''),xlabel('高斯噪声污染的图像');
    
    img_mean=imfilter(img_noise,fspecial('average',3));%对附加有高斯噪声的图像实行均值滤波器
    subplot(2,3,3);
    imshow(img_mean,[]);%显示算术均值滤波后的图像
    title(''),xlabel('用3x3算数均值滤波器滤波');
    
    img_mean=exp(imfilter(log(img_noise),fspecial('average',3)));%对附加有高斯噪声的图像实施几何均值滤波
    subplot(2,3,4);
    imshow(img_mean,[]);
    title(''),xlabel('3x3的几何均值滤波器滤波');
    
    Q=-1.5;  %对高斯噪声图像进行Q取负值的逆谐波滤波
    img_mean=imfilter(img_noise.^(Q+1),fspecial('average',3))./imfilter(img_noise.^Q,fspecial(('average'),3));
    subplot(2,3,5);
    imshow(img_mean,[]);
    title(''),xlabel('Q=-1.5的逆谐波滤波器滤波');
    
    Q=1.5;  %对高斯噪声图像进行Q取正数的逆谐波滤波
    img_mean=imfilter(img_noise.^(Q+1),fspecial('average',3))./imfilter(img_noise.^Q,fspecial(('average'),3));
    subplot(2,3,6);
    imshow(img_mean,[]);
    title(''),xlabel('Q=1.5的逆谐波滤波器滤波');

(2)基于顺序统计滤波器的图像复原。

复制代码
    img=imread('cameraman.tif');%读取图片
    subplot(2,3,1);
    imshow(img); %显示图像
    title(''),xlabel('原图');
    
    img_noise=double(imnoise(img,'salt & pepper',0.06));%加“椒盐”噪声
    subplot(2,3,2);
    imshow(img_noise,[]); %显示图像
    title(''),xlabel('椒盐噪声污染的图像');
    
    img_mean=imfilter(img_noise,fspecial('average',5));%对附加“椒盐”噪声的图像实行算术均值滤波
    subplot(2,3,3);
    imshow(img_mean,[]); %显示图像
    title(''),xlabel('均值滤波结果');
    
    img_median=medfilt2(img_noise);%对附加“椒盐”噪声的图像实行中值滤波
    subplot(2,3,4);
    imshow(img_median,[]); %显示图像
    title(''),xlabel('中值滤波结果');
    
    img_median2=medfilt2(img_noise);
    subplot(2,3,5);
    imshow(img_median2,[]); %显示图像
    title(''),xlabel('再次中值滤波结果');

(3)基于带阻滤波器的图像复原。

复制代码
    img=imread('lenazhouqizaosheng.jpg');%读取图片
    [M,N]=size(img);%得到图像的高度和宽度
    subplot(2,2,1);
    imshow(img); %显示图像
    title(''),xlabel('含有周期噪声的原图');
    
    IF=fftshift(fft2(img));  %对加噪图像进行傅里叶变换,并将原点移至中心点
    IFV=log(1+abs(IF));  %加噪图像的频谱
    subplot(2,2,2);
    imshow(IFV,[]); %显示加噪图像的频谱
    title(''),xlabel('加噪图像的频谱');
    
    freg=50;  %设置带阻滤波器的中心频率
    width=5;  %设置带阻滤波器的频带宽度
    ff=ones(M,N);
    for i=1:M
    for j=1:N
        ff(i,j)=1-exp(-0.5*((((i-M/2)^2+(j-N/2)^2)-freg^2)/(sqrt((i-M/2)^2+(j-N/2)^2)*width))^2);%高斯带阻滤波器
    end
    end
    subplot(2,2,3);
    imshow(ff,[]); %显示高斯带阻滤波器
    title(''),xlabel('高斯带阻滤波器');
    
    out=IF.*ff;    %矩阵点乘实现频域滤波
    out=ifftshift(out);  %原点移回左上角
    out=ifft2(out);  %傅里叶变换
    out=abs(out);    %取绝对值
    out=out/max(out(:));  %归一化
    subplot(2,2,4);
    imshow(out,[]); %显示滤波结果
    title(''),xlabel('滤波效果图');

全部评论 (0)

还没有任何评论哟~