图像复原MATLAB实现
前言:本篇博客先介绍滤波器滤除噪声,再介绍滤波器复原,侧重于程序的实现。
一:三种常见的噪声
二:空间域滤波
空间域滤波复原是在已知噪声模型的基础上,对噪声的空间域进行滤波。
空间域滤波复原方法主要包括:
均值滤波器
算术均值滤波器
几何均值滤波器
谐波均值滤波器
逆谐波均值滤波器
顺序统计滤波器
中值滤波器
最大值/最小值滤波器
2.1算数均值滤波器
img=imread('D:/picture/ZiXia.jpg');
img=rgb2gray(img);
figure,imshow(img);//原图
img_noise=double(imnoise(img,'gaussian',0.06));
figure,imshow(img_noise,[]);//含有高斯噪声的图
img_mean=imfilter(img_noise,fspecial('average',));//滤波后的图
figure;imshow(img_mean,[]);
2.2几何均值滤波器
img=imread('cameraman.tif');
img=rgb2gray(img);
figure,imshow(img);
img_noise=double(imnoise(img,'gaussian',0.06));
figure,imshow(img_noise,[]);
img_mean=exp(imfilter(log(img_noise+),fspecial('average',)));
figure;imshow(img_mean,[]);
2.3谐波均值滤波器
2.4逆谐波均值滤波器
采用逆谐波均值滤波器对附加胡椒噪声图像进行滤波的matlab程序如下:
img=imread('cameraman.tif'); figure,imshow(img);
[M,N]=size(img);R=imnoise2('salt & pepper',M,N,0.1,);
img_noise=img;img_noise(R==)=;
img_noise=double(img_noise); figure,imshow(img_noise,[]);
Q=1.5;
img_mean=imfilter(img_noise.^(Q+),fspecial('average',))./imfilter(img_noise.^Q,fspecial('average',));
figure;imshow(img_mean,[]);
采用逆谐波均值滤波器对附加盐噪声图像进行滤波的matlab程序如下:
img=imread('csboard.tif');figure,imshow(img);
[M,N]=size(img);R=imnoise2('salt & pepper',M,N,,0.1);
img_noise=img;img_noise(R==)=;
img_noise=double(img_noise); figure,imshow(img_noise,[]);
Q=-1.5;
img_mean=imfilter(img_noise.^(Q+),fspecial('average',))./imfilter(img_noise.^Q,fspecial('average',));
figure;imshow(img_mean,[]);
2.5中值滤波器
img=imread('cameraman.tif');
img_noise=double(imnoise(img,'salt & pepper',0.06));
img_mean=imfilter(img_noise,fspecial('average',));
img_median=medfilt2(img_noise);%一次中值滤波
img_median2=medfilt2(img_median);%二次中值滤波
2.6最大值,最小值滤波器
利用最大值滤波器消除胡椒噪声污染图像的matlab程序如下。
img=imread('csboard.tif');
[M,N]=size(img);
R=imnoise2('salt & pepper',M,N,0.1,);
img_noise=img;
img_noise(R==)=;
img_noise=double(img_noise);
imwrite(uint8(img_noise),'csbord_pepper.jpg');
img_max=imdilate(img_noise,ones(,));
imwrite(uint8(img_max),'cameraman_saltpepper_max.jpg');
利用最小值滤波器消除盐噪声污染图像的matlab程序如下。
img=imread('csboard.tif');
[M,N]=size(img);
R=imnoise2('salt & pepper',M,N,,0.1);
img_noise=img;
img_noise(R==)=;
img_noise=double(img_noise);
imwrite(uint8(img_noise),'csbord_salt.jpg');
img_min=imerode(img_noise,ones(,));
imwrite(uint8(img_min),'cameraman_saltpepper_min.jpg');
2.7带阻滤波器
I=imread('pout.tif');
[m,n]=size(I);
J=I;
for i=:m
for j=:n
J(i,j)=I(i,j)+*sin(*i)+*sin(*j);%增加周期性噪声
end
end
IF=fftshift(fft2(I));
JF=fftshift(fft2(J));
IF=log(+abs(IF));
JF=log(+abs(JF)); subplot()%显示频谱
imshow(IF,[])
subplot()
imshow(JF,[])
%高斯带阻滤波器构造
fbrf=ones(m,n);
for i=:m
for j=:n
fbrf(i,j)=-exp(-0.5*(((i-m/)^+(j-n/)^-^)/(sqrt(i.^+j.^)*))^);%20为带阻中心,5为带宽
end
end
H=fbrf;
%频率域滤波
f=fftshift(fft2(J));
out=f.*H;%频率域滤波
out=ifft2(ifftshift(out));
out=abs(out);
out=out/max(out(:));%归一化【,】
subplot()
imshow(out,[]);
subplot()
imshow(J,[])
2.8带通滤波器
2.9陷波滤波器
clear;
close all;
src = im2double(imread('D:/picture/ZiXia.jpg'));
src = rgb2gray(src);
subplot()
imshow(src);
title('原始图像');
[w h] = size(src);
srcf = fft2(src);
srcf = fftshift(srcf);
subplot()
imshow(srcf);
% 低通滤波
% flt = zeros(size(src));
% rx1 = w/;
% ry1 = h/;
% r = min(w,h)/;
% for i = :w
% for j = :h
% if(rx1-i)^ +(ry1 - j)^ <= r*r
% flt(i,j) = ;
% end
% end
% end
% 陷波滤波
flt = ones(size(src));
r = min(w,h)/;
rx1 = r
ry1 =h/
for i = :w
for j = :h
if(rx1-i)^ +(ry1 - j)^ <= r*r
flt(i,j) = ;
end
if(w-rx1-i)^ +(h-ry1 - j)^ <= r*r
flt(i,j) = ;
end
end
end
subplot()
imshow(flt);
title('滤波器图像');
dfimg = srcf.*flt;
dfimg = ifftshift(dfimg);
dimg = ifft2(dfimg,'symmetric');
subplot()
imshow(dimg):title('滤波后');
2.9逆滤波
image_o=imread('D:/picture/lenagray.jpg');
subplot(,,);
imshow(image_o);
title('原图像');
%频率域退化图像,退化函数H(u,v)=exp(-0.0025*( (u-M/).^+(v-N/).^).^(/) )
%傅里叶变换
f=im2double(image_o);
F=fft2(f);
F=fftshift(F);
%执行退化
[M,N]=size(F);
[u,v]=meshgrid(:M,:N);%生成二维坐标系
H=exp(-0.0025* ( (u-M/).^+(v-N/).^).^(/) );
F=F.*H;
%傅里叶反变换
X=ifftshift(F);
x=ifft2(X);
x=uint8(abs(x)*);
subplot(,,);
imshow(x);
%
title('退化图像'); image_d=x;
%直接逆滤波图像复原 ff=im2double(image_d);%将图像灰度值归一化到0-1之间 % 傅里叶变换
f_Id=fft2(ff);
f_Id=fftshift(f_Id);
fH_Id=f_Id;
[M,N]=size(fH_Id);
% 逆滤波
threshold=;
if threshold>M/
%全滤波
fH_Id=fH_Id./(H+eps);
else
%对一定半径范围内进行滤波
for i=:M
for j=:N
if sqrt((i-M/).^+(j-N/).^)<threshold
fH_Id(i,j)=fH_Id(i,j)./(H(i,j)+eps);
end
end
end
end % 执行傅立叶逆变换
fH_Id1=ifftshift(fH_Id);
f_new=ifft2(fH_Id1);
f_new=uint8(abs(f_new)*);
subplot(,,);
imshow(f_new);
title('滤波半径=78的逆滤波复原图像');
2.10维纳滤波
直接截图了,没敲
图像复原MATLAB实现的更多相关文章
- Atitit MATLAB 图像处理 经典书籍attilax总结
Atitit MATLAB 图像处理 经典书籍attilax总结 1.1. MATLAB数字图像处理1 1.2. <MATLAB实用教程(第二版)>((美)穆尔 著)[简介_书评_在线阅读 ...
- 图像质量评价指标之Matlab实现
在图像处理算法研究中,很多时候需要有客观评价指标来对算法的性能进行评价. 比如,在图像复原.图像滤波算法研究中,需要采用客观评价指标来定量的来测试算法恢复出的图像相对于参考图像的好坏程度. 本文介绍文 ...
- [家里蹲大学数学杂志]第057期图像复原中的改进 TV 模型
$\bf 摘要$: 本文给出了王大凯等编的<图像处理中的偏微分方程方法>第 6.2 节的详细论述. $\bf 关键词$: 图像复原; TV 模型; matlab 编程 1. 前言 图像在形 ...
- Matlab图像处理教程
虽然典型算法的开发是基于理论支持的,但这些算法的实现几乎总是要求参数估计,并常常进行算法修正与候选求解方案的比较. MATLAB由LINPACK和EISPACK项目开发,最初用于矩阵处理.今天,MAT ...
- 数字图像处理实验(13):PROJECT 05-04,Parametric Wiener Filter 标签: 图像处理MATLAB 2017-05-27 10:59
实验要求: Objective: To understand the high performance of the parametric Wiener Filter in image restora ...
- 数字图像处理学习笔记之一 DIP绪论与MATLAB基础
写在前面的话 数字图像处理系列的学习笔记是作者结合上海大学计算机学院<数字图像处理>课程的学习所做的笔记,使用参考书籍为<冈萨雷斯数字图像处理(第二版)(MATLAB版)>,同 ...
- 数字图像处理原理与实践(MATLAB版)勘误表
本文系<数字图像处理原理与实践(MATLAB版)>一书的勘误表. [内容简单介绍]本书全面系统地介绍了数字图像处理技术的理论与方法,内容涉及几何变换.灰度变换.图像增强.图像切割.图像去噪 ...
- [00]数字图像处理-matlab速成
原本听的是mooc武汉大学的数字图像处理课程,但是无奈老师读ppt的能力太强,不太适应,后面的课程对于实验方面的要求甚低,无奈之下到处找课程,终于找到了一个适合自己的教程<王伟强-数字图像处理& ...
- Matlab 绘制三维立体图(以地质异常体为例)
前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...
随机推荐
- mysql 函数和存储过程的区别
>一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强.存储过程,功能强大,可以执行包括修改表等一系列数据库操作:用户定义函数不能用于执行一组修改全局数据库状态的操作. > ...
- springboot下自定义配置文件,并在项目里读取的方法
首先 pom文件引入springboot文件处理器 <dependency> <groupId>org.springframework.boot</groupId> ...
- C#实现拍照并且存水印照片
由于一直在高校工作,就涉及到招生工作,招生时候又要收集学生图像采集,所以就随手写了一个图像采集工具,废话不多说,进入正题. 图像采集需要调用摄像头就行拍照操作,网上查了一下资料,需要引用以下3个dll ...
- 运算符的基本概念以及常用Scanner、随机数Random、选择结构的初步了解
运算符 分类 算术运算符 位运算符 关系运算符|比较运算符 逻辑运算符 条件运算符 赋值运算符 其中优先级顺序从上到下,可以记忆口诀:单目乘除位关系,逻辑三目后赋值 操作数: 运算符左右两边的数 表达 ...
- ERROR 1839 (HY000): @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_MODE = ON
从cdb上dump一个库结构,准备与本地结构做对比(可以直接compare,但速度贼慢).使用dump脚本在本地创建的时候报错 -- 导出指定库的结构 shell> mysqldump -hxx ...
- shell脚本练习01
######################################################################### # File Name: 4.5.sh # Auth ...
- c# Data = select new{} 返回值的显示
- BZOJ1597: [Usaco2008 Mar]土地购买——斜率优化
题目大意: 将$n$个长方形分成若干部分,每一部分的花费为部分中长方形的$max_长*max_宽$(不是$max_{长*宽}$),求最小花费 思路: 首先,可以被其他长方形包含的长方形可以删去 然后我 ...
- https://webpack.js.org/plugins/
有问题还是看源码 ,看官方文档吧,整一晚上终于整明白了
- loj2290 随机二分图
题意:有一个左右各n个点的二分图,对于连边组有一些性质:1号组的一条边,有50%的概率出现.2号组两条边,有50%的概率同时出现,50%的概率同时不出现.3号组两条边,有50%的概率出现第一条,有50 ...