matlab图像的恢复

实验目的

1、熟悉并掌握MATLAB图像处理工具箱的使用;
2、理解并掌握常用的图像的复原。

实验环境

MATLAB R2010b版本、WIN 7计算机

相关知识

1.imhist

计算和显示图象的直方图,imhist函数的语法格式为:
imhist(I,n)
imhist(X,map)
其中imhist(I,n)计算和显示灰度图象I的直方图,n为指定的灰度级数目,默认值为256。imhist(X,map)计算和显示索引色图象X的直方图,map为调色板。

2. imnoise

给图像加入噪声,imnoise的语法格式为
J = imnoise(I,type)
J = imnoise(I,type,parameters)
其中J = imnoise(I,type)返回对原始图像I添加典型噪声的有噪图像J。
参数type和parameters用于确定噪声的类型和相应的参数。

3. getrect

用鼠标截取感兴趣区
rect=getrect() ,在图像对话框中选取感兴趣区
返回感兴趣区左上角的坐标高度宽度[xmin ymin width height]

4. imcrop

得到感兴趣区域的图片
B=imcrop(J,rect); 得到感兴趣区域的图片

5. std2 计算图像的标准差

Y=std2(x)

6.信噪比的计算方法:图像的信噪比应该等于信号与噪声的功率谱之比,但通常功率谱难以计算,近似估计图像的信噪比为信号与噪声的方差之比,即SNR=10log(信号方差/噪声方差)

7.n阶Butterworth 陷波器的传递函数为:

在这里插入图片描述

其中D0为陷波器半径,D1,D2分别为点(u,v)到陷波器中心(u0,v0)和(-u0,-v0)的距离。该传递函数使得以陷波器中心为圆心,D0为半径的圆内的所有u,v对应的滤波函数H (u,v)输出为0,也即将位于(u0,v0)和(-u0,-v0)处的频率成分去除。

实验内容

一、 滤波&图像信噪比

  1. 给图像tou.jpg添加高斯噪声(均值为0,方差自己设置),并估计图像中的噪声的概率密度函数,用高斯及均值模板对图像进行滤波,计算滤波前后图像的信噪比。参考结果如下
    实验要求
    在这里插入图片描述
    下面展示 代码
clear; clc; close all;
im = imread('C:\pictures of QQshiyan\tou.jpg');

%% 添加高斯白噪声
im_gaus = imnoise(im, 'gaussian', 0, 0.008); % 添加均值为0,方差为0.2的高斯白噪声
figure;
subplot(2, 3, 1);
imshow(im); % 显示原始图像
title('原图像');
%% 计算snr
snr1=SNR1(im,im_gaus);
subplot(2, 3, 2);
imshow(im_gaus); % 显示添加高斯白噪声的图像
title(['高斯白噪声图像添加均值0方差0.008,snr=',num2str(snr1)]);
%% 噪声概率密度
rect=getrect();
B=imcrop(im_gaus,rect); 
subplot(2,3,3)
imhist(B);%直接显示图像灰度直方图
title('直方图')
  %% 高斯滤波
gn=5; %高斯滤波器的均值
k=7; %高斯滤波器的方差
A2=fspecial('gaussian',k,gn);      %生成高斯序列
Y5=filter2(A2,im_gaus)/255;              %用生成的高斯序列进行滤波
snr2=SNR1(im,Y5);
subplot(234),imshow(Y5),title(['高斯滤波,snr2=',num2str(snr2)]);    %显示滤波后的图象
 
 %% 均值滤波
%5*5 均值滤波
n=5;%均值滤波器模板大小;
A=fspecial('average',n);  %生成系统预定义的5X5滤波器
Y=filter2(A,im_gaus)/255;           %用生成的滤波器进行滤波,并归一化
snr3=SNR1(im,Y);
subplot(235);
imshow(Y); % 显示添加高斯白噪声的图像
title(['均值滤波,snr3=',num2str(snr3)]);
%% SNR:信噪比
function snr=SNR1(I,In)
I=im2double(I);  %转换为double型,否则不能计算统计量
In=im2double(In);
snr=0;
a1=var(I(:)); 
a2=var(In(:)); 
snr=10*log10(a1/a2);
end

效果展示
在这里插入图片描述

二、图像的频域&陷波器&噪声模式

  1. 去除图像MRInoise.jpg的周期噪声。获取含噪声图像的频域图像,使用Matlab函数impixelinfo观察干扰噪声的频率成分,找出所有的(u0,v0)对,针对每一个噪声源分别设计相应的陷波器,对含噪声的图像进行滤波。显示原图像,频域图像,处理后的图像,估计的噪声模式
    实验要求在这里插入图片描述

下面展示 代码

clear;
close all;
I=imread('C:\pictures of QQshiyan\MRInoise.jpg'); %读入图像
subplot(2,3,1),imshow(I),title('原始图像');
F=fft2(im2double(I)); %FFT
F=fftshift(F); %FFT频谱平移
O=abs(F);
T=log(O+1); %频谱对数变换
subplot(2,3,2),imshow(T,[]),title('原始图像其频谱图');

%% 定义陷波滤波器
[w,h] = size(I);
for i = 1:w
    for j = 1:h
        flt(i,j) = 1;
    end
end
flt(257,193)=0;
flt(257,321)=0;
flt(193,257)=0;
flt(321,257)=0;
%% 滤波并显示结果图像
subplot(233);
imshow(flt);
title('陷波滤波器图像');
dFImg = F.*flt;
dFImg = ifftshift(dFImg);
dImg = ifft2(dFImg,'symmetric');
subplot(234);
imshow(dImg);
title('陷波滤波器滤波图像');
%% 估计噪声参数
F2=im2double(I)-dImg; %
subplot(235);
imshow(F2,[]);title('干扰噪声模式');
%% 定标
hp = impixelinfo;

效果展示
在这里插入图片描述

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值