matlab图像复原算法

作者&投稿:原秆 (若有异议请与网页底部的电邮联系)
~ 在一些实际应用中,由于噪声,畸变,系统误差等原因,使得图像并不能完全反映真实的景物,所以需要对图片进行恢复处理,想要对图片进行复原,首先需要了解图片退化的原因,根据原因建立退化模型,然后运用反过程来实现对图片的恢复,并用响应标准来判断图片恢复质量的好坏。Matlab也可以用于对图片进行恢复,图片恢复的主要方法有(1)逆滤波复原法(2)维纳滤波复原法(3)约束的最小二乘方滤波复原法(4)Lucy-Richardson滤波复原法(5)盲去卷积滤波法,下面就这些方法进行介绍:
(1)denconvwnr函数用于进行维纳滤波图像恢复,该函数调用函数如下: J=denconvwnr(g,PSF,NACORR,FFACORR); 其中,g表示退化图像,J表示恢复图像,NACORR表示噪声自相关函数,FFACORR表示未退化图像的自相关函数 (2)deconvreg函数用于图像的最小二乘方滤波恢复,该函数的调用格式如下: Deconvreg(I,PSF,NP,LRANGE,REGOP) 其中I表示输入图像,PSF表示点扩散函数,NP,LRANGE,REGOP是可选参数,分别表示图像的噪声强度,拉氏算子的搜索范围和约束算子。 (3)denconvlucy函数用于对图像进行Lucy-Richardson滤波复原,该函数的调用格式如下: Fr=denconvlucy(g,PSF,NUMIT,DAMPAR,WEIGHT) 其中fr表示恢复图像,g表示退化图像,PSF点扩散函数,NUMEL表示迭代次数,DAMPAR表示恢复图像和原图像之间的差值,WEIGHT表示权重比 (4)deconvblind函数用于对图像进行盲去卷积滤波复原,该函数调用格式如下: [fr,PSFe]=deconvblind(g,INITPSF); 其中g表示退化图像,INITPSF表示点扩散出错事故,PSFe表示函数最终计算的估算值,fr表示复原图像
逆滤波复原法 如果已知退化图像的傅立叶变换和系统脉冲响应函数(滤波传递函数)。则可以求出退化前图像的傅立叶变换,再利用傅立叶逆变换,得到退化前的图像,这就是逆滤波复原的基本原理。 示例:对图像进行逆滤波复原 编写对应的m文件如下: clc; I=imread('cameraman.tif'); subplot(2,2,1) imshow(I); title('原始图像') [m,n]=size(I); F=fftshift(fft2(I)); K=0.005; H=[]; foru=1:m; forv=1:n p=(u-m/2)^2+(v-n/2)^2; H(u,v)=exp((-K)*p);%%得到图像退化传递函数%% end end T=F.*H; I0=abs(ifft2(fftshift(T))); subplot(2,2,2) imshow(uint8(I0)); title('退化的图像'); I1=imnoise(uint8(I0),'gaussian',0,0.01); subplot(2,2,3) imshow(I1); title('含有噪声的退化图像'); T1=fftshift(fft2(I1)); T2=T1./H;%%退化前的傅立叶变换%% I2=ifft(fftshift(T2)); subplot(2,2,4); imshow(uint8(I2)); title('逆滤波复原图像'); 程序运行结果如下图:

维纳滤波复原法 维纳滤波就是最小二乘滤波,它是使原始图像与其恢复图像之间的均方误差最小的复原方法,对图像进行维纳滤波主要是为了消除图像中的噪声。 示例:利用维纳滤波器进行复原处理 编写对应的m文件如下: clear all; clc; I=zeros(800,800); I(300:500,500:600)=1; noise=0.1*randn(size(I)); PSF=fspecial('motion',21,11); Blurred=imfilter(I,PSF,'circular'); Blurrednoise=im2uint8(Blurred+noise); NSR=sum(noise(:).^2)/sum(I(:).^2);%%信噪比倒数%% NP=abs(fftn(noise)).^2; NPOW=sum(NP(:))/prod(size(noise)); NCORR=fftshift(real(ifftn(NP))); IP=abs(fftn(I)).^2; IPOW=sum(IP(:))/prod(size(I)); ICORR=fftshift(real(ifftn(IP))); ICORR1=ICORR(:,ceil(size(I,1)/2)); NSR=NPOW/IPOW; subplot(2,2,1) imshow(Blurrednoise,[]); title('Blurred and noise图像'); subplot(2,2,2) imshow(deconvwnr(Blurrednoise,PSF,NSR),[]); title('deconvwnr(A,PSF,NSR)图像'); subplot(2,2,3) imshow(deconvwnr(Blurrednoise,PSF,NCORR,ICORR),[]); title('deconvwnr(A,PSF,NCORR,ICORR)图像'); subplot(2,2,4) imshow(deconvwnr(Blurrednoise,PSF,NPOW,ICORR1),[]); title('deconvwnr(A,PSF,NPOW,ICORR1)图像'); 程序运行结果如下图:

约束的最小二乘方滤波复原法 约束最小二乘法是一种比较容易实现的线性复原的方法,除了要求关于退化系统的传递函数外,还需要知道某些噪声的统计特性,或者噪声与图像的相关性, 示例:对图像进行约束最小二乘方滤波恢复 编写对应的m文件如下: clear all; I=imread('trees.tif'); PSF=fspecial('gaussian',10,4); Blurred=imfilter(I,PSF,'conv'); BN=imnoise(Blurred,'gaussian',0,0.01); NP=0.01*prod(size(I)); [reg LAGRA]=deconvreg(BN,PSF,NP); edged=edgetaper(BN,PSF); reg2=deconvreg(edged,PSF,[],LAGRA); subplot(2,2,1) imshow(I); title('原始图像'); subplot(2,2,2) imshow(BN); title('加入高斯噪声的图像'); subplot(2,2,3) imshow(reg); title('恢复后图像'); subplot(2,2,4) imshow(reg2); title('拉格朗日算子恢复图像'); 程序运行结果如下图:

Lucy-Richardson滤波复原法 Lucy-Richardson算法是目前比较流行的一个算法,该算法是基于贝叶斯分析的迭代算法 示例:对图像进行Lucy-Richardson滤波恢复 编写对应的m文件如下: clc; I=imread('rice.png'); PSF=fspecial('gaussian',4,5); Blurred=imfilter(I,PSF,'symmetric','conv'); BN=imnoise(Blurred,'gaussian',0,0.01); luc=deconvlucy(BN,PSF,8); subplot(2,2,1) imshow(I); title('原始图像'); subplot(2,2,2) imshow(Blurred); title('模糊后图像'); subplot(2,2,3) imshow(BN); title('含有噪声的图像'); subplot(2,2,4) imshow(luc); title('恢复后图像'); 程序运行结果如下图:

盲去卷积滤波法 在PSF未知的情况下,盲去卷积滤波复原是实现图像恢复的有效方法,把不以PSF知识为基础的图像复原方法统称为盲去卷积滤波法 示例:对图像进行盲去卷积滤波复原 编写对应的m文件如下: clc; I=imread('eight.tif'); PSF=fspecial('motion',10,20); Blurred=imfilter(I,PSF,'circ','conv'); INITPSF=ones(size(PSF)); [J P]=deconvblind(Blurred,INITPSF,15); subplot(1,3,1) imshow(I); title('原始图像'); subplot(1,3,2) imshow(Blurred); title('模糊后图像'); subplot(1,3,3) imshow(J); title('恢复后图像'); 程序运行结果如下图:


谁有用MATLAB软件实现图像复原的源程序啊
清空环境变量 clc clear 训练数据预测数据提取及归一化 下载四类语音信号 load data1 c1 load data2 c2 load data3 c3 load data4 c4 四个特征信号矩阵合成一个矩阵 data(1:500,:)=c1(1:500,:);data(501:1000,:)=c2(1:500,:);data(1001:1500,:)=c3(1:500,:);data(1501:2000,:)=...

求基于BP神经网络的图像复原代码,着急用,帮帮我
function Solar_SAE tic;n = 300;m=20;train_x = [];test_x = [];for i = 1:n filename = strcat(['D:\\Program Files\\MATLAB\\R2012a\\work\\DeepLearn\\Solar_SAE\\64_64_3train\\' num2str(i,'%03d') '.bmp']);filename = strcat(['E:\\matlab\\work\\c0\\TrainImage' num2str(i,...

图像复原中的先验概率模型有哪些可以做的?或者说该怎么做
(1)图像的退化模型,对图像质量退化的原因和数学模型做 了简单的结束 (2)图像的恢复模型,对图像反卷积的模型做了介绍 (3)图像的复原方法,对MATLAB工具箱中提供的四种去模糊方法做了介绍

余庆县19855802750: matlab图像复原的方法有哪些 -
鲜淑正大: (1)图像的退化模型,对图像质量退化的原因和数学模型做 了简单的结束 (2)图像的恢复模型,对图像反卷积的模型做了介绍 (3)图像的复原方法,对MATLAB工具箱中提供的四种去模糊方法做了介绍

余庆县19855802750: 基于matlab的图像复原的方法有哪些 -
鲜淑正大: 首先建立挂载文件夹,本文为/home/generallc/matlab2016,然后用mount命令进行R2016b_glnxa64_dvd1.iso文件挂载,注意当前只挂载R2016b_glnxa64_dvd1.iso文件,R2016b_glnxa64_dvd2.iso先不要进行挂载.

余庆县19855802750: 如何用MATLAB实现图象复原处理 -
鲜淑正大: 盲目复原的图像效果恐怕不如人意.我建议楼主还是先用模型来估计退化函数,然后再选择最小均方差滤波或者最小二乘滤波去做.这些函数在冈萨雷斯的教科书上都有提到,你可以参考一下如何来估计退化函数,这样处理后的效果应该比盲目的复原要好一些

余庆县19855802750: matlab置乱图像复原 -
鲜淑正大: ps:本人不是学图像处理的,可能见解不是很正确.变换的核心在: x1=mod(x+y,size(a,1)); y1=mod(x+2*y,size(a,2)); 类似坐标变换 x1=x+y; y1=x+2*y; 求出改变换的逆变换应该会有点帮助.逆变换为:x=2*x1-y1; y=-x1+y1; 按照相同的操作变...

余庆县19855802750: matlab中imagesc函数得到图像,怎么还原? -
鲜淑正大: 理论上从图像是不能完全恢复出原来的矩阵数据的 因为在由数据转化为图像的过程中量化的时候丢失了信息 可以从得到的图像和所使用的colormap恢复一定的数据信息 如果得到图像的数据假设为变量im,应该是1个mxnx3的矩阵 m和n表示图像...

余庆县19855802750: 一个tif图片是模糊的用matlab什么算法怎么让他复原 -
鲜淑正大: 图像复原是图像处理的一个核心环节,它是后期图像分析和处理的重 要前提.模糊图像复原的主要目的就是改善图像质量,研究如从所得到的模糊图像中复原出真实图像.首先从图像复原技术的相关概念谈起,然后就典型的模糊 图像复原方法进行分析,最后利用MATLAB,以维纳滤波恢复算法为例,就实现模糊图像复原的应用实例进行分析说明.

余庆县19855802750: 如何使用matlab实现图像的几何校正 -
鲜淑正大: 可以用RODAN法校正,1. 先灰度化,求出图像尺寸[m n] = size(I); 2. theta = 0:180; R = radon(I, theta); 3. 求出图像中心点至边界的距离L = round((m/2).^2+(n/2).^2); [C,angle] = max(R(L,:)); angle=angle-1;%angle为图像倾斜角度 4. A = imrotate(I,angle,'bilinear'); imshow(A);%校正后图片

余庆县19855802750: 如何用matlab编程将运动模糊图像用维纳滤波法复原? -
鲜淑正大: %原始图像中加入方差为0.005的高斯白噪声,并通过维纳滤波 J=imnoise(I,'gaussian',0,0.005); subplot(3,3,2);imshow(J);title('gaussian blurred image'); J0=wiener2(J,[10 10]); subplot(3,3,3);imshow(J0);title('image tracked with wiener filter');

余庆县19855802750: 求用MP算法分解重建图像的matlab代码 -
鲜淑正大: 这里是一维信号的重建:%基于MP算法 clc;clear%观测向量y的长度M=80,即采样率M/N=0.3 N=256; K=15; %信号稀疏度为15 M=80; % x = zeros(N,1); q = randperm(N); x(q(1:K)) =randn(K,1); %原始信号%构造高斯测量矩阵,用以随机采样 ...

余庆县19855802750: 一张图片被切成了很多张,然后打乱,如何用matlab将图片拼接复原 -
鲜淑正大: x = imread('000.bmp');y = imread('001.bmp');z = [x,y];imshow(z)

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网