高斯模糊图像的盲复原附带matlab源代码
matlab模糊函数代码

matlab模糊函数代码在数学和图像处理领域中,模糊函数是一种常用的工具,用于对图像进行模糊处理以达到一定的效果。
Matlab提供了一些内置函数来实现图像的模糊处理,本文将介绍如何使用Matlab编写模糊函数代码。
Matlab中有多种不同类型的模糊函数,例如高斯模糊、均值模糊和运动模糊等。
下面将逐一介绍这些模糊函数代码的实现方式。
1. 高斯模糊:高斯模糊是最常用的模糊算法之一,它通过卷积图像与一个高斯核来实现。
以下是Matlab中实现高斯模糊的代码示例:```matlabfunction blurredImage = gaussianBlur(image, sigma)kernelSize = 2 * ceil(3 * sigma) + 1; % 根据sigma计算高斯核大小kernel = fspecial('gaussian', [kernelSize kernelSize], sigma); % 生成高斯核blurredImage = imfilter(image, kernel, 'conv'); % 对图像进行卷积操作end```2. 均值模糊:均值模糊是一种简单但常用的模糊算法,它通过计算邻域像素的平均值来实现。
以下是Matlab中实现均值模糊的代码示例:```matlabfunction blurredImage = meanBlur(image, kernelSize)kernel = ones(kernelSize) / (kernelSize^2); % 生成均值核blurredImage = imfilter(image, kernel, 'conv'); % 对图像进行卷积操作end```3. 运动模糊:运动模糊是一种模糊算法,它通过模拟相机快门打开时的移动效果来实现。
以下是Matlab中实现运动模糊的代码示例:```matlabfunction blurredImage = motionBlur(image, angle, distance)PSF = fspecial('motion', distance, angle); % 生成运动模糊核blurredImage = imfilter(image, PSF, 'conv'); % 对图像进行卷积操作end```以上是几种常见的模糊函数的Matlab代码实现。
盲复原高斯模糊图像

丁左 红 郭 汉 明 , 秀敏 蓝景 恒 翁 晓羽 满 忠胜 庄 松 林 , 高 , , ,
,
( 上海 理 工 大 学 光 电信 息 与 计 算 机工 程 学 院 , 海 上
209; 0 0 3
2杭 州 电子 科技 大学 电子 信 息学 院 , . 浙江 杭 州 30 1 ) 10 8
行 维 纳滤波 , 经过 中值 滤波 获得 恢复 图像 。恢 复 的 图像 主观 视 觉效 果较 好 , 有 良好 的抗 噪 后 具
性 , 原效果 明显 。该 方法对 于提 高图像质 量有 一定 的参考价值 。 复
关 键词 :点扩展 函数 ;维 纳滤波 ;图像 盲 复原 ;高斯模 糊 中图分 类号 : 1. 3 文献标 识码 : d i 0 3 6 / i n 1 0 6 0 2 1. 1 0 9 TN 9 1 7 A o:1. 9 9j s . 0 55 3 .0 10 . 0 .s
第3 3卷
ቤተ መጻሕፍቲ ባይዱ
第 1 期
光
学
仪
器
Vo . 3 1 3 ,No 1 .
Fe ua y,2 br r 01 1
21 0 1年 2 月
OPTI CAL NSTRUM ENTS I
文 章编 号 :1 0 —6 0 2 1 ) 10 3 4 0 55 3 ( 0 1 0 —0 80
盲 复原 高 斯模 糊 图像
The bln e t r to f Ga s i n b u r d i a e i d r s o a i n o u s a l r e m g s
DI NG o o g Zu h n ,GUO a mi g ,GAO im i H n n X u n ~,LAN n h n , Jig e g
数字图像处理及matlab实现源代码【1】

% *-*--*-*-*-*-*-*-*-*-*-*-*图像处理*-*-*-*-*-*-*-*-*-*-*-*%{% (一)图像文件的读/写A=imread('drum.jpg'); % 读入图像imshow(A); % 显示图像imwrite(A,'drum.jpg');info=imfinfo('drum.jpg') % 查询图像文件信息% 用colorbar函数将颜色条添加到坐标轴对象中RGB=imread('drum.jpg');I=rgb2gray(RGB); % 把RGB图像转换成灰度图像h=[1 2 1;0 0 0;-1 -2 -1];I2=filter2(h,I);imshow(I2,[]);colorbar('vert') % 将颜色条添加到坐标轴对象中% wrap函数将图像作为纹理进行映射A=imread('4.jpg');imshow(A);I=rgb2gray(RGB);[x,y,z]=sphere;warp(x,y,z,I); % 用warp函数将图像作为纹理进行映射%}% subimage函数实现一个图形窗口中显示多幅图像RGB=imread('drum.jpg');I=rgb2gray(RGB);subplot(1,2,1);subimage(RGB); % subimage函数实现一个图形窗口中显示多幅图像subplot(1,2,2),subimage(I);% *-*--*-*-*-*-*-*-*-*-*-*-*图像处理*-*-*-*-*-*-*-*-*-*-*-*% (二)图像处理的基本操作% ----------------图像代数运算------------------%{% imadd函数实现两幅图像的相加或给一幅图像加上一个常数% 给图像每个像素都增加亮度I=imread('4.jpg');J=imadd(I,100); % 给图像增加亮度subplot(1,2,1),imshow(I);title('原图');subplot(1,2,2),imshow(J);title('增加亮度图');%% imsubtract函数实现将一幅图像从另一个图像中减去或减去一个常数I=imread('drum.jpg');J=imsubtract(I,100); % 给图像减去亮度subplot(1,2,1),imshow(I);%% immultiply实现两幅图像的相乘或者一幅图像的亮度缩放I=imread('drum.jpg');J=immultiply(I,2); % 进行亮度缩放subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);%% imdivide函数实现两幅图像的除法或一幅图像的亮度缩放I=imread('4.jpg');J=imdivide(I,0.5); % 图像的亮度缩放subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);%}% ----------------图像的空间域操作------------------%{% imresize函数实现图像的缩放J=imread('4.jpg');subplot(1,2,1),imshow(J);title('原图');X1=imresize(J,0.2); % 对图像进行缩放subplot(1,2,2),imshow(X1);title('缩放图');%% imrotate函数实现图像的旋转I=imread('drum.jpg');J=imrotate(I,50,'bilinear'); % 对图像进行旋转subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);%% imcrop函数实现图像的剪切I=imread('drum.jpg');I2=imcrop(I,[1 100 130 112]); % 对图像进行剪切subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(I2);%}% ----------------特定区域处理------------------%{% roipoly函数用于选择图像中的多边形区域I=imread('4.jpg');c=[200 250 278 248 199 172];r=[21 21 75 121 121 75];BW=roipoly(I,c,r); % roipoly函数选择图像中的多边形区域subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(BW);%% roicolor函数式对RGB图像和灰度图像实现按灰度或亮度值选择区域进行处理a=imread('4.jpg');subplot(2,2,1),imshow(a);I=rgb2gray(a);BW=roicolor(I,128,225); % 按灰度值选择的区域subplot(2,2,4),imshow(BW);%% ploy2mask 函数转化指定的多边形区域为二值掩模x=[63 186 54 190 63];y=[60 60 209 204 601];bw=poly2mask(x,y,256,256); % 转化指定的多边形区域为二值掩模imshow(bw);hold onplot(x,y,'r','LineWidth',2);hold off%% roifilt2函数实现区域滤波a=imread('4.jpg');I=rgb2gray(a);c=[200 250 278 248 199 172];r=[21 21 75 121 121 75];BW=roipoly(I,c,r); % roipoly函数选择图像中的多边形区域h=fspecial('unsharp');J=roifilt2(h,I,BW); % 区域滤波subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);%% roifill函数实现对特定区域进行填充a=imread('4.jpg');I=rgb2gray(a);c=[200 250 278 248 199 172];r=[21 21 75 121 121 75];J=roifill(I,c,r); % 对特定区域进行填充subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);%}% ----------------图像变换------------------%{% fft2 和ifft2函数分别是计算二维的快速傅里叶变换和反变换f=zeros(100,100);subplot(1,2,1);imshow(f);f(20:70,40:60)=1;subplot(1,2,2);imshow(f);F=fft2(f); % 计算二维的快速傅里叶变换F2=log(abs(F));% 对幅值对对数figure;subplot(1,2,1),imshow(F),colorbar;subplot(1,2,2),imshow(F2),colorbar;%% fftsshift 函数实现了补零操作和改变图像显示象限f=zeros(100,100);subplot(2,2,1),imshow(f);title('f')f(10:70,40:60)=1;subplot(2,2,2),imshow(f);title('f取后')F=fft2(f,256,256);subplot(2,2,3),imshow(F);title('F')F2=fftshift(F); % 实现补零操作subplot(2,2,4),imshow(F2);title('F2')figure,imshow(log(abs(F2)));title('log(|F2|)')%% dct2 函数采用基于快速傅里叶变换的算法,用于实现较大输入矩阵的离散余弦变换% idct2 函数实现图像的二维逆离散余弦变换RGB=imread('drum.jpg');I=rgb2gray(RGB);J=dct2(I); % 对I进行离散余弦变换imshow(log(abs(J))),title('对原图离散后取对数'),colorbar;J(abs(J)<10)=0;K=idct2(J); % 图像的二维逆离散余弦变换figure,imshow(I),title('原灰度图')figure,imshow(K,[0,255]);title('逆离散变换');%% dctmtx 函数用于实现较小输入矩阵的离散余弦变figure;RGB=imread('4.jpg');I=rgb2gray(RGB);subplot(3,2,1),imshow(I),title('原灰度图');I=im2double(I);subplot(3,2,2),imshow(I),title('取双精度后');T=dctmtx(8); % 离散余弦变换subplot(3,2,3),imshow(I),title('离散余弦变换后');B=blkproc(I,[8,8],'P1*x*P2',T,T');subplot(3,2,4),imshow(B),title('blkproc作用I后的B');mask=[ 1 1 1 1 0 0 0 01 1 1 0 0 0 0 01 1 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0 ];B2=blkproc(B,[8,8],'P1.*x',mask);subplot(3,2,5),imshow(B2),title('blkproc作用B后的B2');I2=blkproc(B2,[8,8],'P1*x*P2',T',T);subplot(3,2,6),imshow(I2),title('blkproc作用B2后的I2');%% edge函数用于提取图像的边缘RGB=imread('4.jpg');I=rgb2gray(RGB);BW=edge(I);imshow(I);figure,imshow(BW);%% radon 函数用来计算指定方向上图像矩阵的投影RGB=imread('4.jpg');I=rgb2gray(RGB);BW=edge(I);theta=0:179;[R,XP]=radon(BW,theta); % 图像矩阵的投影figure,imagesc(theta,XP,R);colormap(hot);xlabel('\theta(degrees)');ylabel('x\prime');title('R_{\theta}(x\prime)');colorbar;%}% ----------------图像增强、分割和编码------------------%{% imhist 函数产生图像的直方图A=imread('4.jpg');B=rgb2gray(A);subplot(2,1,1),imshow(B);subplot(2,1,2),imhist(B);%% histeq 函数用于对图像的直方图均衡化A=imread('4.jpg');B=rgb2gray(A);subplot(2,1,1),imshow(B);subplot(2,1,2),imhist(B);C=histeq(B); % 对图像B进行均衡化figure;subplot(2,1,1),imshow(C);subplot(2,1,2),imhist(C);%% filter2 函数实现均值滤波a=imread('4.jpg');I=rgb2gray(a);subplot(2,2,1),imshow(I);K1=filter2(fspecial('average',3),I)/255; % 3*3的均值滤波K2=filter2(fspecial('average',5),I)/255; % 5*5的均值滤波K3=filter2(fspecial('average',7),I)/255; % 7*7的均值滤波subplot(2,2,2),imshow(K1);subplot(2,2,3),imshow(K2);subplot(2,2,4),imshow(K3);%% wiener2 函数实现Wiener(维纳)滤波a=imread('4.jpg');I=rgb2gray(a);subplot(2,2,1),imshow(I);K1=wiener2(I,[3,3]); % 3*3 wiener滤波K2=wiener2(I,[5,5]); % 5*5 wiener滤波K3=wiener2(I,[7,7]); % 7*7 wiener滤波subplot(2,2,2),imshow(K1);subplot(2,2,3),imshow(K2);subplot(2,2,4),imshow(K3);%% medfilt2 函数实现中值滤波a=imread('4.jpg');I=rgb2gray(a);subplot(2,2,1),imshow(I);K1=medfilt2(I,[3,3]); % 3*3 中值滤波K2=medfilt2(I,[5,5]); % 5*5 中值滤波K3=medfilt2(I,[7,7]); % 7*7 中值滤波subplot(2,2,2),imshow(K1);subplot(2,2,3),imshow(K2);subplot(2,2,4),imshow(K3);%}% ----------------图像模糊及复原------------------%{% deconvwnr 函数:使用维纳滤波器I=imread('qier.jpg');imshow(I);% 对图像进行模糊处理LEN=31;THETA=11;PSF1=fspecial('motion',LEN,THETA); % 运动模糊PSF2=fspecial('gaussian',10,5); % 高斯模糊Blurred1=imfilter(I,PSF1,'circular','conv'); % 得到运动模糊图像Blurred2=imfilter(I,PSF2,'conv'); % 得到高斯噪声模糊图像figure;subplot(1,2,1);imshow(Blurred1);title('Blurred1--"motion"'); subplot(1,2,2);imshow(Blurred2);title('Blurred2--"gaussian"');% 对模糊图像加噪声V=0.002;BlurredNoisy1=imnoise(Blurred1,'gaussian',0,V); % 加高斯噪声BlurredNoisy2=imnoise(Blurred2,'gaussian',0,V); % 加高斯噪声figure;subplot(1,2,1);imshow(BlurredNoisy1);title('BlurredNoisy1'); subplot(1,2,2);imshow(BlurredNoisy2);title('BlurredNoisy2');% 进行维纳滤波wnr1=deconvwnr(Blurred1,PSF1); % 维纳滤波wnr2=deconvwnr(Blurred2,PSF2); % 维纳滤波figure;subplot(1,2,1);imshow(wnr1);title('Restored1,True PSF'); subplot(1,2,2);imshow(wnr2);title('Restored2,True PSF');%% deconvreg函数:使用约束最小二乘滤波器I=imread('qier.jpg');imshow(I);% 对图像进行模糊处理LEN=31;THETA=11;PSF1=fspecial('motion',LEN,THETA); % 运动模糊PSF2=fspecial('gaussian',10,5); % 高斯模糊Blurred1=imfilter(I,PSF1,'circular','conv'); % 得到运动模糊图像Blurred2=imfilter(I,PSF2,'conv'); % 得到高斯噪声模糊图像figure;subplot(1,2,1);imshow(Blurred1);title('Blurred1--"motion"');subplot(1,2,2);imshow(Blurred2);title('Blurred2--"gaussian"');% 对模糊图像加噪声V=0.002;BlurredNoisy1=imnoise(Blurred1,'gaussian',0,V); % 加高斯噪声BlurredNoisy2=imnoise(Blurred2,'gaussian',0,V); % 加高斯噪声figure;subplot(1,2,1);imshow(BlurredNoisy1);title('BlurredNoisy1');subplot(1,2,2);imshow(BlurredNoisy2);title('BlurredNoisy2');NP=V*prod(size(I));reg1=deconvreg(BlurredNoisy1,PSF1,NP); % 约束最小二乘滤波reg2=deconvreg(BlurredNoisy2,PSF2,NP); % 约束最小二乘滤波figure;subplot(1,2,1);imshow(reg1);title('Restored1 with NP');subplot(1,2,2);imshow(reg2);title('Restored2 with NP');%% deconvlucy函数:使用Lucy-Richardson滤波器I=imread('qier.jpg');imshow(I);% 对图像进行模糊处理LEN=31;THETA=11;PSF1=fspecial('motion',LEN,THETA); % 运动模糊PSF2=fspecial('gaussian',10,5); % 高斯模糊Blurred1=imfilter(I,PSF1,'circular','conv'); % 得到运动模糊图像Blurred2=imfilter(I,PSF2,'conv'); % 得到高斯噪声模糊图像figure;subplot(1,2,1);imshow(Blurred1);title('Blurred1--"motion"');subplot(1,2,2);imshow(Blurred2);title('Blurred2--"gaussian"');% 对模糊图像加噪声V=0.002;BlurredNoisy1=imnoise(Blurred1,'gaussian',0,V); % 加高斯噪声BlurredNoisy2=imnoise(Blurred2,'gaussian',0,V); % 加高斯噪声figure;subplot(1,2,1);imshow(BlurredNoisy1);title('BlurredNoisy1');subplot(1,2,2);imshow(BlurredNoisy2);title('BlurredNoisy2');luc1=deconvlucy(BlurredNoisy1,PSF1,5); % 使用Lucy-Richardson滤波luc2=deconvlucy(BlurredNoisy1,PSF1,15); % 使用Lucy-Richardson滤波figure;subplot(1,2,1);imshow(luc1);title('Restored Image,NUMIT=5'); subplot(1,2,2);imshow(luc2);title('Restored Image,NUMIT=15');%}% deconvblind 函数:使用盲卷积算法a=imread('4.jpg');I=rgb2gray(a);figure;imshow(I);title('Original Image');PSF=fspecial('motion',13,45); % 运动模糊figure;imshow(PSF);Blurred=imfilter(I,PSF,'circ','conv'); % 得到运动模糊图像figure;imshow(Blurred);title('Blurred Image');INITPSF=ones(size(PSF));[J,P]=deconvblind(Blurred,INITPSF,30); % 使用盲卷积figure;imshow(J);figure;imshow(P,[],'notruesize');% *-*--*-*-*-*-*-*-*-*-*-*-*图像处理*-*-*-*-*-*-*-*-*-*-*-* %{% 对图像进行减采样a=imread('lena.jpg');%subplot(1,4,1);figure;imshow(a);title('原图');b=rgb2gray(a);%subplot(1,4,2);figure;imshow(b);title('原图的灰度图');[wid,hei]=size(b);%---4倍减采样----quartimg=zeros(wid/2+1,hei/2+1);i1=1;j1=1;for i=1:2:widfor j=1:2:heiquartimg(i1,j1)=b(i,j);j1=j1+1;endi1=i1+1;j1=1;end%subplot(1,4,3);figure;imshow(uint8(quartimg));title('4倍减采样')% ---16倍减采样---quanrtimg=zeros(wid/4+1,hei/4+1);i1=1;j1=1;for i=1:4:widfor j=1:4:heiquanrtimg(i1,j1)=b(i,j);j1=j1+1;endi1=i1+1;j1=1;end%subplot(1,4,4);.figure;imshow(uint8(quanrtimg));title('16倍减采样');%}% 图像类型% 将图像转换为256级灰度图像,64级灰度图像,32级灰度图像,8级灰度图像,2级灰度图像a=imread('4.jpg');%figure;subplot(2,3,1);imshow(a);title('原图');b=rgb2gray(a); % 这是256灰度级的图像%figure;subplot(2,3,2);imshow(b);title('原图的灰度图像');[wid,hei]=size(b);img64=zeros(wid,hei);img32=zeros(wid,hei);img8=zeros(wid,hei);img2=zeros(wid,hei);for i=1:widfor j=j:heiimg64(i,j)=floor(b(i,j)/4); % 转化为64灰度级endend%figure;subplot(2,3,3);imshow(uint8(img64),[0,63]);title('64级灰度图像');for i=1:widfor j=1:heiimg32(i,j)=floor(b(i,j)/8);% 转化为32灰度级endend%figure;subplot(2,3,4);imshow(uint8(img32),[0,31]);title('32级灰度图像');for i=1:widfor j=1:heiimg8(i,j)=floor(b(i,j)/32);% 转化为8灰度级endend%figure;subplot(2,3,5);imshow(uint8(img8),[0,7]);title('8级灰度图像');for i=1:widfor j=1:heiimg2(i,j)=floor(b(i,j)/128);% 转化为2灰度级endend%figure;subplot(2,3,6);imshow(uint8(img2),[0,1]);title('2级灰度图像');% *-*--*-*-*-*-*-*-*-*-*-*-*图像处理*-*-*-*-*-*-*-*-*-*-*-* %{% ------------------ 图像的点运算------------------I=imread('lena.jpg');figure;subplot(1,3,1);imshow(I);title('原图的灰度图');J=imadjust(I,[0.3;0.6],[0.1;0.9]); % 设置灰度变换的范围subplot(1,3,2);imshow(J);title('线性扩展');I1=double(I); % 将图像转换为double类型I2=I1/255; % 归一化此图像C=2; % 非线性扩展函数的参数K=C*log(1+I2); % 对图像的对数变换subplot(1,3,3);imshow(K);title('非线性扩展');M=255-I;figure;subplot(1,3,1);imshow(M);title('灰度倒置');N1=im2bw(I,0.4); % 将此图像二值化,阈值为0.4N2=im2bw(I,0.7); % 将此图像二值化,阈值为0.7 subplot(1,3,2);imshow(N1);title('二值化阈值0.4');subplot(1,3,3);imshow(N2);title('二值化阈值0.7');%}%{% ------------------ 图像的代数运算------------------% 将两幅图像进行加法运算I=imread('lena.jpg');I=rgb2gray(I);J=imread('rice.png');% 以下把两幅图转化为大小一样for i=1:size(I)for j=size(J):size(I)J(i,j)=0;endendI=im2double(I); % 将图像转化为double型J=im2double(J);% imshow(I);figure;imshow(J);K=I+0.3*J; % 将两幅图像相加subplot(1,3,1);imshow(I);title('人物图');subplot(1,3,2);imshow(J);title('背景图');subplot(1,3,3);imshow(K);title('相加后的图');imwrite(K,'i_lena1.jpg');%%% 将两幅图像做减运算,分离背景与原图A=imread('i_lena1.jpg');B=imread('rice.png');% 以下把两幅图转化为大小一样for i=1:size(A)for j=size(B):size(A)B(i,j)=0;endendC=A-0.3*B;a=imread('lena.jpg');subplot(2,2,1);imshow(a);title('原图图');subplot(2,2,2);imshow(A);title('混合图');subplot(2,2,3);imshow(B);title('背景图');subplot(2,2,4);imshow(C);title('分离后的图');%% 设置掩模,需要保留下来的区域,掩模图像的值为1,否则为0 A=imread('drum.jpg');A=rgb2gray(A);A=im2double(A);sizeA=size(A);subplot(1,2,1);imshow(A);title('原图');B=zeros(sizeA(1),sizeA(2)); % 设置模板B(100:400,100:500)=1;K=A.*B; % 两幅图像相乘subplot(1,2,2);imshow(K);title('局部图');%}%{% ------------------ 图像的缩放------------------A=imread('drum.jpg');B1=imresize(A,1.5); % 比例放大1.5杯,默认采用的是最近邻法进行线性插值B2=imresize(A,[420 384]); % 非比例放大到420:384C1=imresize(A,0.7); % 比例缩小0.7倍C2=imresize(A,[150 180]); % 非比例缩小到150:180figure;imshow(B1);title('比例放大图');figure;imshow(B2);title('非比例放大图');figure;imshow(C1);title('比例缩小图');figure;imshow(C2);title('非比例缩小图');% 检测非比例缩放得到的图片是否能还原到原图a=size(A)d=imresize(C2,[a(1),a(2)]);figure;imshow(d);%}% ------------------ 图像的旋转------------------I=imread('drum.jpg');J=imrotate(I,45); % 图像进行逆时针旋转,默认采用最近邻插值法进行插值处理K=imrotate(I,90); % 默认旋转出界的部分不被截出subplot(1,3,1);imshow(I);subplot(1,3,2);imshow(J);subplot(1,3,3);imshow(K);% 检测旋转后的图像是否失真P=imrotate(K,270);figure;imshow(P);。
Matlab中的模糊图像恢复与图像重建技术详解

Matlab中的模糊图像恢复与图像重建技术详解引言:随着数码相机、移动设备以及各种图像处理软件的普及,人们对图像质量要求越来越高。
然而,在图像获取和传输过程中,由于种种原因,图像可能会变得模糊,失真或损坏。
为了解决这些问题,图像恢复和重建技术应运而生。
本文将详细介绍基于Matlab的模糊图像恢复与图像重建技术。
一、图像模糊恢复技术1. 模糊图像的概念和原因模糊图像是指由于摄像机移动、图像采集设备问题、环境光线等因素而导致图像失真的现象。
图像模糊会降低图像的细节和清晰度,使得图像难以辨认和识别。
常见的模糊原因有运动模糊、焦距模糊、镜头畸变等。
2. 模糊图像恢复方法为了恢复模糊图像的清晰度和细节,研究人员提出了各种方法。
其中,基于傅里叶变换的频域滤波是最常用的方法之一。
该方法通过将模糊图像转换到频域,应用适当的频域滤波器来消除模糊效果。
Matlab提供了丰富的函数和工具箱来实现这些滤波方法,比如利用低通滤波器恢复运动模糊图像。
另外,基于对图像恢复的数学建模和优化算法也是常用的方法。
例如,最小二乘法、最小化总变差等。
3. Matlab中的模糊图像恢复函数Matlab提供了多种函数用于模糊图像恢复。
其中,`deconvwnr`函数可以用于模糊图像的逆滤波处理。
该函数通过对图像进行频域滤波,去除模糊效果。
另外,`deconvblind`函数可以用于盲去卷积处理,即对图像进行反卷积操作以恢复图像细节。
二、图像重建技术1. 图像重建的意义和应用图像重建指的是利用已有的图像信息来还原、修复或生成新的图像。
与图像恢复类似,图像重建技术对于改善图像质量、还原损坏图像、生成虚拟图像等方面有着重要的应用。
图像重建技术在医学影像、图像压缩和增强、虚拟现实等领域都有广泛的应用。
2. 图像重建算法在Matlab中,图像重建可以通过多种算法实现。
其中一种常用的算法是基于插值的图像重建方法。
该方法通过对已有图像的像素进行插值来生成新的图像。
matlab模糊图像恢复数字图像处理

实验六 模糊图像恢复一、实验目的本实验是一个综合性实验,要求学生巩固学习多个知识点和内容,主要有: 1、理解掌握运动图像的退化模型; 2、掌握维纳滤波法的原理和实现方法;3、在不同的噪声和点扩散函数参数下进行恢复,并比较结果;4、通过分析和实验得出相应的结论。
二、实验准备1、运动模糊退化模型:运动模糊是图像退化的一种,可以用数学表达式刻画出来。
对线性移(空)不变系统,退化模型可表示为:g(x,y)=h(x,y)*f(x,y)+n(x,y)。
对匀速直线运动而言,退化图像为:()()()[]⎰--=Tdt t y y t x x f y x g 000,,其中x 0(t)和y 0(t)分别表示x 和y 方向的运动分量。
并假设退化系统是线性移不变的,光学成像过程是完善的,快门开关是瞬间完成的。
对上式进行傅立叶变换,则得频域表达式为()()()[]()()[]()[]()()()[]{}),(),(2exp ,2exp ,2exp ,,000000v u H v u F dt t vy t ux j v u F dtdxdy vy ux j t y y t x x f dxdy vy ux j y x g v u G T T=+-=⎥⎥⎦⎤⎢⎢⎣⎡+---=+-=⎰⎰⎰⎰⎰⎰+∞∞-+∞∞-+∞∞-+∞∞-πππ 其中()()()[]{}dt t vy t ux j v u H T⎰+-=0002exp ,π假设景物只在x 方向匀速运动,在T 时间内共移动距离是a ,即x 0(t)=at/T ,y 0(t)=0,则()()[]ua j ua ua T dt T at uj v u H Tππππ-=⎥⎦⎤⎢⎣⎡-=⎰exp sin 2exp ,0 在Matlab 中可用滤波器卷积的方法仿真出运动模糊图像。
h=fspecial(‘motion ’,len,theta),表示在theta 方向移动len 长度,产生运动模糊的点扩散函数h 。
图像复原MATLAB实现

图像复原MATLAB实现前⾔:本篇博客先介绍滤波器滤除噪声,再介绍滤波器复原,侧重于程序的实现。
⼀:三种常见的噪声⼆:空间域滤波空间域滤波复原是在已知噪声模型的基础上,对噪声的空间域进⾏滤波。
空间域滤波复原⽅法主要包括: 均值滤波器 算术均值滤波器 ⼏何均值滤波器 谐波均值滤波器 逆谐波均值滤波器 顺序统计滤波器 中值滤波器 最⼤值/最⼩值滤波器2.1算数均值滤波器1 img=imread('D:/picture/ZiXia.jpg');2 img=rgb2gray(img);3 figure,imshow(img);//原图4 img_noise=double(imnoise(img,'gaussian',0.06));5 figure,imshow(img_noise,[]);//含有⾼斯噪声的图6 img_mean=imfilter(img_noise,fspecial('average',3));//滤波后的图7 figure;imshow(img_mean,[]);2.2⼏何均值滤波器1 img=imread('cameraman.tif');2 img=rgb2gray(img);3 figure,imshow(img);4 img_noise=double(imnoise(img,'gaussian',0.06));5 figure,imshow(img_noise,[]);6 img_mean=exp(imfilter(log(img_noise+1),fspecial('average',3)));7 figure;imshow(img_mean,[]);2.3谐波均值滤波器2.4逆谐波均值滤波器采⽤逆谐波均值滤波器对附加胡椒噪声图像进⾏滤波的matlab程序如下:1 img=imread('cameraman.tif'); figure,imshow(img);2 [M,N]=size(img);R=imnoise2('salt & pepper',M,N,0.1,0);3 img_noise=img;img_noise(R==0)=0;4 img_noise=double(img_noise); figure,imshow(img_noise,[]);5 Q=1.5;6 img_mean=imfilter(img_noise.^(Q+1),fspecial('average',3))./imfilter(img_noise.^Q,fspecial('average',3));7 figure;imshow(img_mean,[]);采⽤逆谐波均值滤波器对附加盐噪声图像进⾏滤波的matlab程序如下:1 img=imread('csboard.tif');figure,imshow(img);2 [M,N]=size(img);R=imnoise2('salt & pepper',M,N,0,0.1);3 img_noise=img;img_noise(R==1)=255;4 img_noise=double(img_noise); figure,imshow(img_noise,[]);5 Q=-1.5;6 img_mean=imfilter(img_noise.^(Q+1),fspecial('average',3))./imfilter(img_noise.^Q,fspecial('average',3));7 figure;imshow(img_mean,[]);2.5中值滤波器1 img=imread('cameraman.tif');2 img_noise=double(imnoise(img,'salt & pepper',0.06));3 img_mean=imfilter(img_noise,fspecial('average',5));4 img_median=medfilt2(img_noise);%⼀次中值滤波5 img_median2=medfilt2(img_median);%⼆次中值滤波2.6最⼤值,最⼩值滤波器利⽤最⼤值滤波器消除胡椒噪声污染图像的matlab程序如下。
如何利用Matlab进行图像恢复

如何利用Matlab进行图像恢复图像恢复是数字图像处理中的一个重要的研究领域。
Matlab作为一种功能强大的工具,被广泛应用于图像处理领域。
本文将介绍如何利用Matlab进行图像恢复,并探讨其中的原理和算法。
首先,图像恢复是一种通过消除或减小图像失真、模糊或噪声等问题,使图像更加清晰和还原的过程。
在实际应用中,图像常常受到噪声污染、运动模糊、光照变化等影响,导致图像质量下降。
利用图像恢复技术,可以提高图像的视觉质量和辨识度,对于图像处理、计算机视觉等领域具有重要意义。
Matlab作为一款高级的数学计算工具,提供了丰富的函数库和灵活的编程接口,能够方便地进行图像处理和分析。
在图像恢复中,Matlab提供了多种处理图像的函数和算法,可以帮助我们实现各种图像恢复的方法。
一种常用的图像恢复方法是基于空域滤波的处理。
在Matlab中,可以使用imfilter函数来实现各种空域滤波算法,如均值滤波、中值滤波、高斯滤波等。
这些滤波算法通过在图像像素之间进行加权平均或统计操作,可以消除图像中的噪声和模糊。
另一种常用的图像恢复方法是基于频域滤波的处理。
在Matlab中,可以使用fft2函数和ifft2函数来实现图像的傅里叶变换和反傅里叶变换。
通过将图像从空域转换到频域,可以利用频域滤波算法对图像进行处理,如理想低通滤波、巴特沃斯低通滤波、维纳滤波等。
这些滤波算法可以根据图像的频域特征,有选择地增强或抑制图像中的某些频率分量,从而实现图像的恢复。
此外,Matlab还提供了一些专门用于图像恢复的函数,如wiener2函数、deconvwnr函数等。
wiener2函数实现了维纳滤波算法,可以用于消除运动模糊或加性噪声的图像恢复。
deconvwnr函数实现了维纳滤波的变种算法,可以根据图像和模糊函数的噪声特性,自适应地调整滤波参数,从而实现更好的图像恢复效果。
除了上述方法,Matlab还提供了其他一些高级的图像恢复算法,如超分辨率恢复、图像拼接等。
高斯模糊的实现(matlab)

高斯模糊实现(matlab)高斯模糊是一种图像模糊滤波器,它用正态分布计算图像中每个像素的变换。
N 维空间正态分布方程为(1)在二维空间定义为(2)其中r 是模糊半径,指模板元素到模板中心的距离。
σ 是正态分布的标准偏差,。
在二维空间中,这个公式生成的曲面的等高线是从中心开始呈正态分布的同心圆。
分布不为零的像素组成的卷积矩阵与原始图像做变换。
每个像素的值都是周围相邻像素值的加权平均。
原始像素的值有最大的高斯分布值,所以有最大的权重,相邻像素随着距离原始像素越来越远,其权重也越来越小。
这样进行模糊处理比其它的均衡模糊滤波器更高地保留了边缘效果。
1. 使用给定高斯模板平滑图像维基百科的实例高斯模糊矩阵:0.00000067 0.00002292 0.00019117 0.00038771 0.00019117 0.00002292 0.00000067 0.00002292 0.00078633 0.00655965 0.01330373 0.00655965 0.00078633 0.00002292 0.00019117 0.00655965 0.05472157 0.11098164 0.05472157 0.00655965 0.00019117 0.00038771 0.01330373 0.11098164 0.22508352 0.11098164 0.01330373 0.00038771 0.00019117 0.00655965 0.05472157 0.11098164 0.05472157 0.00655965 0.00019117 0.00002292 0.00078633 0.00655965 0.01330373 0.00655965 0.00078633 0.000022920.00000067 0.00002292 0.00019117 0.00038771 0.00019117 0.00002292 0.00000067用该矩阵进行高斯模糊的结果如下:使用代码如下:guass=[0.00000067 0.00002292 0.00019117 0.00038771 0.000191 17 0.00002292 0.00000067;0.00002292 0.00078633 0.00655965 0.01330373 0.006559650.00078633 0.00002292;0.00019117 0.00655965 0.05472157 0.11098164 0.054721570.00655965 0.00019117;0.00038771 0.01330373 0.11098164 0.22508352 0.110981640.01330373 0.00038771;0.00019117 0.00655965 0.05472157 0.11098164 0.054721570.00655965 0.00019117;0.00002292 0.00078633 0.00655965 0.01330373 0.006559650.00078633 0.00002292;0.00000067 0.00002292 0.00019117 0.00038771 0.00019117 0.00002292 0.00000067];TestImg=imread('Lena1.jpg');FuzzyImg=conv2(TestImg,guass,'full');subplot(121);imshow(TestImg);subplot(122);imshow(FuzzyImg/256);编程注意事项:在matlab中,我们常使用imshow()函数来显示图像,而此时的图像矩阵可能经过了某种运算。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东南大学
硕士学位论文
高斯模糊图像的盲复原姓名:顾亚芳
申请学位级别:硕士专业:信号与信息处理指导教师:吴乐南
20051225
东南大学硕士学位论文
3.3.2实验结果
取噪声方差占2=O.01,则各种去噪方法所复原的图像示于图3.1。
可以看出,维纳去噪的视觉效果最好,二次均值其次,而小波变换去噪的效果对于高斯噪声而言并不是很好。
图3.1去噪图像的主观对比
表3.1去噪图像均方误差的比较
62=0.00162=0.Ol62=O.162=1.0含噪图像457.23581.0103e+0034.7299e+0031.3682e_卜004
小波变换1.1296e+0091.1316e+0091.1201e+0091.0779e+009
维纳滤波421.9284479.0220515.48232.5666e+003
维纳+均值1.1098e-卜0091.1117叶0091.0894e+0091.0284e+009
~次均值1.1161e+0091.1225e+0091.1250e+0091.1044e+009
二次均值1.1064e+0091.1109e+0091.0999e+0091.0546e+009
三次均值1.0986e+0091.1025e+0091.0878e+0091.0357e_卜009各种方法去嵘后的图像均方误差如表3.1所示。
比较来看,对于高斯噪声,无论噪声大小,维纳滤波的去噪效果总是最好的
3.4小结
本章通过实验比较了6种去除图像噪声的方法:一次、二次和三次均值滤波,一次维纳去噪,一次维纳组合一次均值去噪,以及基于独立自适应阈值的小波去噪。
主观评判和基于复员图像均方误差的客观比较都表明,对于高斯噪声,维纳滤波的去噪效果在这6种方法中效果最好。
东南大学硕士学位论文
4.2.4实验结果
取噪声方差万2=O.01,图4.2给出了预处理分别采用3.3节的6种去噪方法后所得到的点扩展函数的主观对比;而表4.1则给出其均方误差的对比。
图4.26种去噪方法采用EM算法获取的点扩展函数对比
表4.16种方法左噪后图像所获得的PSF均方误筹的比较
62=0.00162=0.0162=0.162=1.0含噪图像1.7876e.0040.01100.31200.9588
小波变换1.1590e-0041.2369e.0041.225le一0045.9282e.004
维纳滤波1.2009e-0041.1220e.0041.9583e一0041.9226e-004
维纳+均值8.7668e一0058.2955e.0055.2122e.0053.7933e.005
一次均值7.8996e.0055.7468e.0056.9729e.0040.0046
二次均值7.0210e.0055.4030e.0057.7613e一0055.4512e.004
三次均值0.00470.00460.02790.5049
从复原后的PSF图像和PSF的均方误差可以看出:在噪卢较大时,采用维纳加均值组合去噪滤波后所得到的点扩展函数最接近于真实的PSF;但当噪声较小时,采用二次均值滤波所获得的点扩展函数最接近于真实的PSF。
本节只是估计点扩散函数,而不需要追求复原图像效果,所以迭代次数只设定为lO次,这样可以减少复原时间。
(4.39)其中MED表示带噪图像信号小波变换_,=l尺度上的小波系数对角矩阵的中值。
(2)以肛旷一gll2=11.112为约束条件,最小化8j矿一刎2+∥I阿112,求得正则化参数∥,进一步求得正则解.厂。
(3)通常白动确定复原滤波器比人为调整滤波器参数的复原结果要差,特别是约束展小二乘滤波器完全由单一标量参数来决定时更是如此。
所以在初步确定Ⅳ以后,再根据视觉效果人为地进行调整。
4.3.3复原实验结果
仍取噪声方差万2=0.01,分别采用3.3节6种去噪方法获取点扩展函数后进行复原所得图像如图4.2。
复原图像均方误差的比较则如表4.2所示。
图4.26种去噪方法获得点扩展函数后的复原图像对比
表4.2采用6种之噪方法获得的点扩展函数所复原图像的均方误若比较
62=0.00162=o.Ol62=0.162=1.0含噪图像457.608310lO.35089.413534
小波变换301.6989393.4022769.07453956.7
维纳滤波301.9000393.4436768.90363956.7
维纳+均值301.1769393.37lO768.49233956.7
一次均值301.0759393.2766771.49523956.7
二次均值301.0759393.2766771.49523956.7
三次均值32J.561l405.40159】J.85】03956.7
从图4.2最后所获得的复原图像和表4.2中所列出的均方误差对比可以看到,对于高斯模糊图像当噪声比较小时,采用一次均值滤波去噪后所获得的图像最好,随着噪卢增加,维纳加均值组合去噪后的复原效果最好,但当噪声大到己淹没图像时,任何一种去噪方法的效果都很差,即对图像复原已无能为力了。
第4章高斯模糊图像的盲复原
4.4总体性能比较
4.4.1EM算法存在的问题
4.2节介绍了EM算法的原理,本节分析一下EM算法目前还存在的问题和需要改进之处:
1)首先可以从以上的算法分析中看出,此算法非常繁琐,要得到复原结果,计算时间非常长;
2)在此复原算法中,由于点扩展函数的系数之间没有固定的联系,因此需要估计大量的独立参数来获得点扩展函数,图像尺寸太大会使计算过程复杂,计算时间延长,因此,算法只适用于小尺寸的图像;
3)在此复原算法的分析过程中,为了推导相关公式,需要假设支持域的尺寸已知,实际情况是两者往往未知,在计算过程中,需假定支持域的范围,但这可能比实际的点扩展函数偏大或偏小,会带来不可避免的图像复原误差;
4)EM算法可能收敛到局部最优点,而不是全局最优点。
这是由于初始猜测点的不同,使得算法的收敛值有所不同。
4.4.2性能对比
仍取噪声方差艿2=0.001,图4.3是EM算法和本文算法所复原图像主观效果的对比;而表4.3则是
EM算法和本文算法所复原图像均方误差的对比。
图4.3EM算法和本文算法复原图像的对比
表4.3两种算法复原图像均方误差对比
62=O.00152=O.01
含噪图像455.87641010.O
EM算法1.1564e+0091.1839e+009
本文算法304.5428398.2778
从视觉图像和均方误差可看出,在噪声较小时,EM算法对图像的去模糊效果也很好,但也由于迭代带来了噪声的放大。
而在噪声比较大时,EM算法的复原效果已很差。
但采用本文算法无论是从视觉I型像评价还是从均方误差对比,都能获得较好的复原效果。
4.5小结
本章在第3章去噪预处理的基础上,利用EM算法获取点扩展函数后进行约束最小二乘法图像复原,最后再调节正则化参数以达到更佳的复原效果。
经过实验对比得出结论:
高斯模糊图像的盲复原
作者:顾亚芳
学位授予单位:东南大学
1.期刊论文顾亚芳高斯模糊图像的盲复原-科教文汇2008,""(5)
介绍了高斯模糊图像的盲复原方法.通过实验比较了6种去噪方法:采用最大似然估计方法来寻找最相似于退化图像的点扩展函数;利用已估计出的点扩展函数进行约束最小二乘图像复原,并分析了正则化参数的选取方法.最后比较了EM算法和本文算法.
本文链接:/Thesis_Y1040222.aspx
授权使用:武汉理工大学(whlgdx),授权号:3e6de5ec-a33a-4e85-811a-9da200d4cca2,下载时间:2010年6月
27日。