《数字图像处理-MATLAB》运动模糊图像复原
如何在Matlab中进行图像去噪与复原

如何在Matlab中进行图像去噪与复原图像去噪与复原在计算机视觉和图像处理领域有着重要的应用价值。
当图像受到噪声污染或损坏时,我们需要采取适当的方法来还原图像的清晰度和准确性。
在这方面,Matlab作为一种强大的数值计算软件,提供了丰富的图像处理工具和函数,能够帮助我们有效地进行图像去噪和复原。
一、图像去噪方法介绍在进行图像去噪之前,我们需要了解一些常见的图像噪声类型和去噪方法。
常见的图像噪声类型包括高斯噪声、椒盐噪声和泊松噪声等。
对于这些噪声,我们可以采用滤波方法进行去噪处理。
Matlab提供了多种滤波函数,包括均值滤波、中值滤波、高斯滤波等。
这些函数能够基于不同的滤波算法,去除图像中的噪声,提高图像质量。
1.1 均值滤波均值滤波是一种简单的滤波方法,通过计算像素周围邻域的平均灰度值来减小噪声的影响。
在Matlab中,可以使用imfilter函数实现均值滤波。
该函数可以指定滤波器的大小和形状,对图像进行滤波处理。
均值滤波适用于高斯噪声的去除,但对于椒盐噪声等其他类型的噪声效果不佳。
1.2 中值滤波中值滤波是一种非线性滤波方法,通过在像素周围邻域中选择中间灰度值来减小噪声的影响。
在Matlab中,可以使用medfilt2函数实现中值滤波。
该函数可以指定滤波器的大小和形状,对图像进行滤波处理。
中值滤波适用于椒盐噪声的去除,对于高斯噪声等其他类型的噪声有效果不佳。
1.3 高斯滤波高斯滤波是一种线性滤波方法,通过根据像素周围邻域的权重来减小噪声的影响。
在Matlab中,可以使用imgaussfilt函数实现高斯滤波。
该函数可以指定滤波器的大小和标准差,对图像进行滤波处理。
高斯滤波适用于高斯噪声的去除,对于椒盐噪声等其他类型的噪声效果较好。
二、图像复原方法介绍除了去噪,图像复原也是图像处理中常见的任务之一。
图像复原主要是指恢复图像中的缺失或破损的信息,使得图像在视觉上更加清晰和准确。
在Matlab中,可以使用多种方法进行图像复原,包括图像插值、图像修复和图像增强等。
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中的模糊图像处理和图像模糊恢复技术随着数字图像的广泛应用和发展,图像模糊成为一个重要的问题。
由于摄像器材或传输媒介等方面的限制,图像的清晰度可能受到一定程度的影响,导致图像模糊。
在实际应用中,图像的模糊问题会给图像解析、目标跟踪、计算机视觉等许多领域带来困扰。
为了改善模糊图像的质量,并解决图像模糊问题,Matlab提供了一系列的模糊图像处理和图像模糊恢复技术。
一、图像模糊的产生原因图像模糊一般是由光学系统的缺陷、运动物体、相机抖动等因素引起的。
光学系统的缺陷包括镜头的失真、散射、衍射等;运动物体指的是图像中的物体在拍摄过程中出现运动造成模糊;相机抖动是由于相机本身的不稳定性或者手持摄影造成的。
二、模糊图像处理的方法1.滤波方法滤波方法是最基本也是最常用的图像模糊处理方法。
在Matlab中,可以使用各种滤波器对图像进行处理,例如平滑滤波、高斯滤波、中值滤波等。
这些滤波器可以消除图像中的高频噪声,同时也会导致图像的模糊。
2.图像退化模型图像退化模型是描述图像模糊过程的数学模型。
常见的图像退化模型有运动模糊模型、模糊核模型等。
通过了解图像退化模型的特性,可以更准确地恢复图像的清晰度。
在Matlab中,可以根据图像退化模型进行图像恢复的研究和实现。
3.频域方法频域方法是一种基于图像频谱的模糊图像处理方法。
通过对图像进行傅里叶变换,可以将图像从空间域转换到频率域,然后在频率域进行处理,最后再进行逆傅里叶变换得到恢复后的图像。
在Matlab中,可以利用fft2函数进行傅里叶变换和逆傅里叶变换,实现频域方法对图像的处理。
三、图像模糊恢复技术1.盲去卷积算法盲去卷积算法是一种不需要知道图像退化模型的图像恢复方法。
通过对模糊图像进行去卷积处理,可以尽可能地恢复图像的清晰度。
在Matlab中,可以使用盲去卷积相关的函数和工具箱实现图像模糊恢复。
2.基于深度学习的图像超分辨率重建技术深度学习技术如今在计算机视觉领域取得了巨大的成功。
Matlab中的图像重建与图像恢复技术

Matlab中的图像重建与图像恢复技术深入研究和掌握图像重建与图像恢复技术对于图像处理和计算机视觉领域的研究人员来说至关重要。
在现实生活中,图像可能因传感器噪声、数据传输损失或其他因素而受损,导致图像出现模糊、噪声等问题。
为了改善这些问题,我们需要使用图像重建和恢复技术,将受损的图像还原到原始清晰的状态。
Matlab作为一种功能强大的科学计算软件,提供了丰富的工具和函数,可以帮助我们实现图像重建和恢复的任务。
在本文中,我们将探讨几种常用的图像重建和恢复技术,并介绍如何使用Matlab来实现它们。
第一部分:图像去噪与平滑图像中的噪声往往是由电子设备、图像采集过程或传输过程中引入的。
去除这些噪声对于提高图像质量非常重要。
在Matlab中,我们可以使用均值滤波、中值滤波、高斯滤波等方法进行图像去噪和平滑。
均值滤波是一种常用的线性滤波方法,它通过计算图像周围像素的平均值来减小噪声。
中值滤波则取邻域像素的中值作为当前像素的值,可以有效地去除脉冲噪声和椒盐噪声。
高斯滤波则使用高斯核函数对图像进行平滑,可以在平滑图像的同时保留图像的细节信息。
第二部分:图像复原与去模糊当图像受到模糊因素的影响时,如相机抖动、运动模糊等,我们可以使用图像复原和去模糊技术来提高图像的清晰度。
在Matlab中,我们可以使用逆滤波、维纳滤波等方法进行图像复原和去模糊。
逆滤波是一种经典的图像复原方法,通过将图像的频谱进行逆变换,消除因模糊而引入的相位延迟和衰减。
然而,逆滤波在存在噪声的情况下容易引入放大噪声的问题。
为了解决这个问题,可以使用维纳滤波器,它通过权衡图像信号和噪声的功率谱来恢复原始图像。
第三部分:图像超分辨率重建超分辨率重建是一种在低分辨率图像的基础上提高图像分辨率的技术。
它在很多应用中都非常有用,如视频监控、医学图像分析等。
在Matlab中,我们可以使用插值方法、重建方法等技术进行图像超分辨率重建。
插值方法是一种常用的图像超分辨率技术,它通过对像素进行重新采样来增加图像的分辨率。
MATLAB处理模糊图像程序

%%通过BP神经网络训练将模糊化的图像进行还原处理%%下面是主程序image=imread('image.bmp');image1=rgb2gray(image);figure,subplot(121),imshow(image);title('RGB原图'); subplot(122),imshow(image1);title('灰度图');image2=imresize(image1,[128,128]);%读入图像,并改变成90*90image2=double(image2)./256;len=5;theta=10;PSF=fspecial('motion',len,theta);%加入运动模糊Blurredmotion=imfilter(image2,PSF,'circular','conv' );w=fspecial('gaussian',[9 9],1);%加入高斯模糊blurred_image=imfilter(Blurredmotion,w);P_Matrix=zeros(32,(size(image2,1))*(size(image2,2)) /16);%输入矩阵T_Matrix=zeros(16,(size(image2,1))*(size(image2,2))/16);%目标矩阵blurred_BW = edge(blurred_image,'sobel');%提取模糊图像边缘BW = edge(image2,'sobel');%提取清晰图像边缘image_edge=double(BW).*image2;blurred_image_edge=double(blurred_BW).*blurred_imag e;%blurred_image_flat=blurred_image-blurred_image_edg e;%得到模糊图像非边缘区域,即平坦区域%target_image=zeros(size(image2,1),size(image2,2));%目标矩阵t=1;%初始化输入矩阵P_Matrix,假设神经网络是32-30-16的结构,故按如下方式初始化for i=1:4:size(image2,1)for j=1:4:size(image2,2)P_Matrix(1,t)=blurred_image(i,j);%前16位为degraded image的block,大小为4x4P_Matrix(2,t)=blurred_image(i,j+1);P_Matrix(3,t)=blurred_image(i,j+2);P_Matrix(4,t)=blurred_image(i,j+3);P_Matrix(5,t)=blurred_image(i+1,j);P_Matrix(6,t)=blurred_image(i+1,j+1);P_Matrix(7,t)=blurred_image(i+1,j+2);P_Matrix(8,t)=blurred_image(i+1,j+3);P_Matrix(9,t)=blurred_image(i+2,j);P_Matrix(10,t)=blurred_image(i+2,j+1);P_Matrix(11,t)=blurred_image(i+2,j+2);P_Matrix(12,t)=blurred_image(i+2,j+3);P_Matrix(13,t)=blurred_image(i+3,j);P_Matrix(14,t)=blurred_image(i+3,j+1);P_Matrix(15,t)=blurred_image(i+3,j+2);P_Matrix(16,t)=blurred_image(i+3,j+3);P_Matrix(17,t)=blurred_image_edge(i,j);%后16位为original image's edge 的block,大小为4x4P_Matrix(18,t)=blurred_image_edge(i,j+1);P_Matrix(19,t)=blurred_image_edge(i,j+2);P_Matrix(20,t)=blurred_image_edge(i,j+3);P_Matrix(21,t)=blurred_image_edge(i+1,j);P_Matrix(22,t)=blurred_image_edge(i+1,j+1);P_Matrix(23,t)=blurred_image_edge(i+1,j+2);P_Matrix(24,t)=blurred_image_edge(i+1,j+3);P_Matrix(25,t)=blurred_image_edge(i+2,j);P_Matrix(26,t)=blurred_image_edge(i+2,j+1);P_Matrix(27,t)=blurred_image_edge(i+2,j+2);P_Matrix(28,t)=blurred_image_edge(i+2,j+3);P_Matrix(29,t)=blurred_image_edge(i+3,j);P_Matrix(30,t)=blurred_image_edge(i+3,j+1);P_Matrix(31,t)=blurred_image_edge(i+3,j+2);P_Matrix(32,t)=blurred_image_edge(i+3,j+3);t=t+1;endendt=1;%初始化目标矩阵for i=1:4:size(image2,1)for j=1:4:size(image2,2)T_Matrix(1,t)=image2(i,j);T_Matrix(2,t)=image2(i,j+1);T_Matrix(3,t)=image2(i,j+2);T_Matrix(4,t)=image2(i,j+3);T_Matrix(5,t)=image2(i+1,j);T_Matrix(6,t)=image2(i+1,j+1);T_Matrix(7,t)=image2(i+1,j+2);T_Matrix(8,t)=image2(i+1,j+3);T_Matrix(9,t)=image2(i+2,j);T_Matrix(10,t)=image2(i+2,j+1);T_Matrix(11,t)=image2(i+2,j+2);T_Matrix(12,t)=image2(i+2,j+3);T_Matrix(13,t)=image2(i+3,j);T_Matrix(14,t)=image2(i+3,j+1);T_Matrix(15,t)=image2(i+3,j+2);T_Matrix(16,t)=image2(i+3,j+3);t=t+1;endendnet=newff(P_Matrix,T_Matrix,30);%得到神经网络,假设使用的是BP神经网络net=train(net,P_Matrix,T_Matrix);Y=sim(net,P_Matrix);%Y得到复原矩阵restored_image=zeros(size(image2,1),size(image2,2)) ;%复原图像t=1;%通过复原矩阵得到复原图像for i=1:4:size(image2,1)for j=1:4:size(image2,2)restored_image(i,j)=Y(1,t);restored_image(i,j+1)=Y(2,t);restored_image(i,j+2)=Y(3,t);restored_image(i,j+3)=Y(4,t);restored_image(i+1,j)=Y(5,t);restored_image(i+1,j+1)=Y(6,t);restored_image(i+1,j+2)=Y(7,t);restored_image(i+1,j+3)=Y(8,t);restored_image(i+2,j)=Y(9,t);restored_image(i+2,j+1)=Y(10,t);restored_image(i+2,j+2)=Y(11,t);restored_image(i+2,j+3)=Y(12,t);restored_image(i+3,j)=Y(13,t);restored_image(i+3,j+1)=Y(14,t);restored_image(i+3,j+2)=Y(15,t);restored_image(i+3,j+3)=Y(16,t);t=t+1;endendPSNR_edge_BP=Cal_PSNR(image2*255,restored_image*255 );SSIM_edge_BP=ssim_index(image2*255,restored_image*2 55);PSNR_edge_BP_blurred=Cal_PSNR(image2*255,blurred_im age*255);SSIM_edge_BP_blurred=ssim_index(image2*255,blurred_ image*255);figure,%显示结果subplot(221),imshow(image2);title('原图像');subplot(222),imshow(blurred_image);title('运动模糊后的图像');subplot(223),imshow(restored_image);title('BP神经网络复原图像');imwrite(image2,'image.bmp');imwrite(blurred_image,'blurred_image.bmp');imwrite(restored_image,'restored_image.bmp');image=imread('image.bmp');image1=rgb2gray(image);figure,subplot(121),imshow(image);title('RGB原图'); subplot(122),imshow(image1);title('灰度图');image2=imresize(image1,[128,128]);%读入图像,并改变成90*90image2=double(image2)./256;len=5;theta=10;PSF=fspecial('motion',len,theta);%加入运动模糊Blurredmotion=imfilter(image2,PSF,'circular','conv' );w=fspecial('gaussian',[9 9],1);%加入高斯模糊blurred_image=imfilter(Blurredmotion,w);P_Matrix=zeros(32,(size(image2,1))*(size(image2,2)) /16);%输入矩阵T_Matrix=zeros(16,(size(image2,1))*(size(image2,2)) /16);%目标矩阵blurred_BW = edge(blurred_image,'sobel');%提取模糊图像边缘BW = edge(image2,'sobel');%提取清晰图像边缘image_edge=double(BW).*image2;blurred_image_edge=double(blurred_BW).*blurred_imag e;%blurred_image_flat=blurred_image-blurred_image_edg e;%得到模糊图像非边缘区域,即平坦区域%target_image=zeros(size(image2,1),size(image2,2));%目标矩阵t=1;%初始化输入矩阵P_Matrix,假设神经网络是32-30-16的结构,故按如下方式初始化for i=1:4:size(image2,1)for j=1:4:size(image2,2)P_Matrix(1,t)=blurred_image(i,j);%前16位为degraded image的block,大小为4x4P_Matrix(2,t)=blurred_image(i,j+1);P_Matrix(3,t)=blurred_image(i,j+2);P_Matrix(4,t)=blurred_image(i,j+3);P_Matrix(5,t)=blurred_image(i+1,j);P_Matrix(6,t)=blurred_image(i+1,j+1);P_Matrix(7,t)=blurred_image(i+1,j+2);P_Matrix(8,t)=blurred_image(i+1,j+3);P_Matrix(9,t)=blurred_image(i+2,j);P_Matrix(10,t)=blurred_image(i+2,j+1);P_Matrix(11,t)=blurred_image(i+2,j+2);P_Matrix(12,t)=blurred_image(i+2,j+3);P_Matrix(13,t)=blurred_image(i+3,j);P_Matrix(14,t)=blurred_image(i+3,j+1);P_Matrix(15,t)=blurred_image(i+3,j+2);P_Matrix(16,t)=blurred_image(i+3,j+3);P_Matrix(17,t)=blurred_image_edge(i,j);%后16位为original image's edge 的block,大小为4x4P_Matrix(18,t)=blurred_image_edge(i,j+1);P_Matrix(19,t)=blurred_image_edge(i,j+2);P_Matrix(20,t)=blurred_image_edge(i,j+3);P_Matrix(21,t)=blurred_image_edge(i+1,j);P_Matrix(22,t)=blurred_image_edge(i+1,j+1);P_Matrix(23,t)=blurred_image_edge(i+1,j+2);P_Matrix(24,t)=blurred_image_edge(i+1,j+3);P_Matrix(25,t)=blurred_image_edge(i+2,j);P_Matrix(26,t)=blurred_image_edge(i+2,j+1);P_Matrix(27,t)=blurred_image_edge(i+2,j+2);P_Matrix(28,t)=blurred_image_edge(i+2,j+3);P_Matrix(29,t)=blurred_image_edge(i+3,j);P_Matrix(30,t)=blurred_image_edge(i+3,j+1);P_Matrix(31,t)=blurred_image_edge(i+3,j+2);P_Matrix(32,t)=blurred_image_edge(i+3,j+3);t=t+1;endendt=1;%初始化目标矩阵for i=1:4:size(image2,1)for j=1:4:size(image2,2)T_Matrix(1,t)=image2(i,j);T_Matrix(2,t)=image2(i,j+1);T_Matrix(3,t)=image2(i,j+2);T_Matrix(4,t)=image2(i,j+3);T_Matrix(5,t)=image2(i+1,j);T_Matrix(6,t)=image2(i+1,j+1);T_Matrix(7,t)=image2(i+1,j+2);T_Matrix(8,t)=image2(i+1,j+3);T_Matrix(9,t)=image2(i+2,j);T_Matrix(10,t)=image2(i+2,j+1);T_Matrix(11,t)=image2(i+2,j+2);T_Matrix(12,t)=image2(i+2,j+3);T_Matrix(13,t)=image2(i+3,j);T_Matrix(14,t)=image2(i+3,j+1);T_Matrix(15,t)=image2(i+3,j+2);T_Matrix(16,t)=image2(i+3,j+3);t=t+1;endendnet=newff(P_Matrix,T_Matrix,30);%得到神经网络,假设使用的是BP神经网络net=train(net,P_Matrix,T_Matrix);Y=sim(net,P_Matrix);%Y得到复原矩阵restored_image=zeros(size(image2,1),size(image2,2)) ;%复原图像t=1;%通过复原矩阵得到复原图像for i=1:4:size(image2,1)for j=1:4:size(image2,2)restored_image(i,j)=Y(1,t);restored_image(i,j+1)=Y(2,t);restored_image(i,j+2)=Y(3,t);restored_image(i,j+3)=Y(4,t);restored_image(i+1,j)=Y(5,t);restored_image(i+1,j+1)=Y(6,t);restored_image(i+1,j+2)=Y(7,t);restored_image(i+1,j+3)=Y(8,t);restored_image(i+2,j)=Y(9,t);restored_image(i+2,j+1)=Y(10,t);restored_image(i+2,j+2)=Y(11,t);restored_image(i+2,j+3)=Y(12,t);restored_image(i+3,j)=Y(13,t);restored_image(i+3,j+1)=Y(14,t);restored_image(i+3,j+2)=Y(15,t);restored_image(i+3,j+3)=Y(16,t);t=t+1;endendPSNR_edge_BP=Cal_PSNR(image2*255,restored_image*255 );SSIM_edge_BP=ssim_index(image2*255,restored_image*2 55);PSNR_edge_BP_blurred=Cal_PSNR(image2*255,blurred_im age*255);SSIM_edge_BP_blurred=ssim_index(image2*255,blurred_ image*255);figure,%显示结果subplot(221),imshow(image2);title('原图像');subplot(222),imshow(blurred_image);title('运动模糊后的图像');subplot(223),imshow(restored_image);title('BP神经网络复原图像');imwrite(image2,'image.bmp');imwrite(blurred_image,'blurred_image.bmp');imwrite(restored_image,'restored_image.bmp');function[mssim, ssim_map] = ssim_index(img1, img2, K, window, L)% % 结构相似度(SSIM)用于图像复原(去噪,去模糊,盲复原,修复)后的客观评价!% % 该评价标准比较适合于纹理结构多的图像质量评价if (nargin < 2 | nargin > 5) %判断输入变量的个数mssim = -Inf; %设定为负的无穷大ssim_map = -Inf;return;endif (size(img1) ~= size(img2)) %两个图像的大小不相等mssim = -Inf;ssim_map = -Inf;return;end[M N] = size(img1);if (nargin == 2)if ((M < 11) | (N < 11))mssim = -Inf;ssim_map = -Inf;returnendwindow = fspecial('gaussian',11,1.5); %统计的本地窗口默认是高斯窗口,模板尺寸为11,滤波器标准值为1.5像素K(1) = 0.01; %默认的设置K(2) = 0.03;L = 255; %图像的动态范围endif (nargin == 3)if ((M < 11) | (N < 11))mssim = -Inf;ssim_map = -Inf;returnendwindow = fspecial('gaussian',11,1.5);L = 255;if(length(K) == 2) %SSIM指标公式常数的长度为2if (K(1) < 0 | K(2) < 0)mssim = -Inf;ssim_map = -Inf;return;endelsemssim = -Inf;ssim_map = -Inf;return;endendif (nargin == 4)[H W] = size(window);if ((H*W) < 4 | (H > M) | (W > N)) mssim = -Inf;ssim_map = -Inf;returnendL = 255;if (length(K) == 2)if (K(1) < 0 | K(2) < 0)mssim = -Inf;ssim_map = -Inf;return;endelsemssim = -Inf;ssim_map = -Inf;return;endendif (nargin == 5)[H W] = size(window);if ((H*W) < 4 | (H > M) | (W > N)) mssim = -Inf;ssim_map = -Inf;returnendif (length(K) == 2)if (K(1) < 0 | K(2) < 0)mssim = -Inf;ssim_map = -Inf;return;endelsemssim = -Inf;ssim_map = -Inf;return;endendC1 = (K(1)*L)^2;C2 = (K(2)*L)^2;window = window/sum(sum(window));img1 = double(img1); %将图像矩阵uint8型数据转换成double型img2 = double(img2);% % 计算图片的平均值和方差--------------------------------------------------mu1= filter2(window, img1, 'valid'); %使用矩阵h中的二维FIR(有限长单位冲%激响应)过滤器过滤变量X中的数据,使用二维相关性计算结果Y,并且返回与X的维数相%同的相关项的中心部分。
基于MATLAB的运动模糊图像恢复技术

基于MATLAB的运动模糊图像恢复技术王洪珏(温州医学院,浙江,温州)摘要:MATLAB是当今流行的科学计算软件,它具有很强的数据处理能力。
在其图像处理工具箱中有四个图像复原函数,本文就这些函数的算法原理、运用和恢复处理效果结合实力效果作简要对比讨论。
0前言图像复原时图像处理中一个重要的研究课题。
图像在形成、传输和记录的过程中,由于传感器的噪声、摄像机未对好焦、摄像机与物体相对运动、系统误差、畸变、噪声等因素的影响,使图像往往不是真实景物的完善影像。
这种图像在形成、传输和记录过程中,由于成像系统、传输介质和设备的不完善,使图像质量下降的过程称为图像的退化。
图像复原就是通过计算机处理,对质量下降的图像加以重建或恢复的过程。
图像复原过程一般为:找退化原因→建立退化模型→反向推演→图像复原1算法产生概述开发算法时,首先要创建图像退化的线性数学模型,接着选择准则函数,并以适当的数学形式表达,然后进行数学推演。
推演过程中通常要进行表达形式(即空域形式、频域形式、矩阵-矢量形式或变换域形式)的相互转换,最后得到图像复原算式。
退化数学模型的空域、频域、矢量-矩阵表达形式分别是:g(x,y)=d(x,y)*f(x,y)+n(x,y)G(u,v)=D(u,v)·F(u,v)+N(u,v)g=HF+n其中:g(x,y)、d(x,y)、f(x,y)、n(x,y)分别为观测的退化图像、模糊函数、原图像、加性噪声,*为卷积运算符,(x=0,1,2,…,M-1),(y=0,1,2,…,N-1)。
2运动模糊的产生景物与相机之间的相对运动通常会使相机所成的像存在运动模糊。
对于线性移不变模糊,退化图像u0可以写成,u0=h*u+n,其中h为模糊核,*表示卷积,n为加性噪声。
由du/dt=0,文献[5]将这种运动模糊过程描述为波动方程:аu/аt+V xаu/аx+ V yаu/аy=0其中,V x=dx/dt, V y=dy/dt为x,y方向上的速度分量并且通过分析该方程的达朗贝尔解得出结论:vаu0/аx=u(x)-u(x-L)其中即退化图像沿运动方向的导数等于原始图像和其移位L后图像的差,这里L也可以认为是模糊长度。
图像模糊与恢复

实验课二一、实验目的1.进一步了解MATLAB仿真软件图像处理工具箱中图像操作的基本函数;2.深入理解数字图像处理算法的功能。
二、实验内容及要求1.编写由运动引起的图像模糊的MATLAB恢复程序的,并对自选图像进行处理(可对正常图像先进行运动模糊处理,再恢复);源程序:I=imread('C:\Documents and Settings\Administrator\My Documents\MATLAB\picture.bmp imshow(I);title('原始图象');hold on;J=fspecial('motion',20,50);%滤波器J1=imfilter(I,J,'circular','conv');%用滤波器模糊原图像K1=deconvwnr(J1,J);%恢复不加噪声的模糊图象N=0.002*prod(size(I));%设定一个高斯噪声N1=imnoise(J1,'gaussian',0,.002);%对模糊后图象加噪N2=sum(N.^2)/sum(im2double(I(:)).^2);%计算噪声的NSRK2=deconvwnr(N1,J,N2/100);%恢复加噪后的模糊图象figure;subplot(2,2,1);imshow(J1);title('不加噪声的模糊图象');subplot(2,2,2);imshow(N1);title('加高斯噪声的模糊图象');subplot(2,2,3);imshow(K1);title('对不加噪声的图象的恢复');subplot(2,2,4);imshow(K2);title('对加噪的图象的恢复');2.将变换结果与原始图像进行对比分析。
以上模糊图象的恢复采用维纳滤波法实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Q 如果取: R R R g 和 R n 分别是图象和噪声的自相关矩阵。
1 2 g 1 2 n
即
E g gT Rg
E n nT Rn
并且都是正定对称矩阵,则有:
ˆ ˆ Qg R R g 的模方最小,实际上就意味着使噪声和信号的比
1 2 g 1 2 n
பைடு நூலகம்
ˆ g (H T H R1 Rn)1 H T f g
(1)
对复原图象影响最小。因为图象和噪声的相关矩阵都是把图象当 作随机过程来研究,从而描述其统计特性的量,在这里最小二乘 方的最佳已经演变成均方误差最小准则下的最佳。 同样根据式(1)可求得频域维纳滤波公式如下 2 H (u,v) 1 ˆ G(u, v) F (u, v) H (u,v) H (u,v) 2 S n (u,v) S g (u,v)
H (u,v) 1 F (u, v) 2 H (u,v) H (u,v) k
2
实验小结
本次设计的题目是“基于MATLAB的运动模糊图 像的复原”,查阅了许多资料,收集到了多种复原方 法,并从中选择了复原效果较好的作为本次设计的内 容。 选择的方法是维纳滤波并给出了MATLAB实现的程序。 在查找资料的过程中,我对数字图像处理的认识更加 清楚,了解到了更多的图像处理方法和思想。选择的 几种方法是比较常用的,也是比较有代表性的方法, 在利用这四种方法实现运动模糊图像复原的过程中, 学到了逆滤波、维纳滤波和有约束最小二乘滤波的特 点以及适用的范围。在MATLAB程序实现过程中,调 试相应的程序,完成相应的参数设置,并观察不同参 数下的图像处理效果,从而加深对各种滤波算法原理
课件名称:运动模糊图像复原 指导老师:刘红霞
设计人:张彦龙 陈廷川
运动模糊图像复原技术目的
图像复原技术也常被称为图像 恢复技术图像复原技术能够去除或 减轻在获取数字图像过程中发生的 图像质量下降(退化)问题,从而 使图像尽可能地接近于真实场景。
图像复原技术的应用
一方面,对地面上的成像系统来说,由于受到射线及 大气的影响,会造成图像的退化;另一方面,在太空 中的成像系统,由于宇宙飞船的速度远远快于相机 快门的速度,从而造成了运动模糊; 航空成像领域: 无人机、预警机、侦察机的成像侦察;巡航导弹地 形识别,侧视雷达的地形侦察等; 交通智能监控领域:电子眼(车速超过60km/小时); 公安领域: 指纹自动识别,手迹、人像、印章的鉴定识别,过 期档案文字的识别等,都与图像复原技术密不可分; 医学领域:图像复原技术也有着极其重要的作用, 如X光、CT等。
常见的回复方法
逆滤波法 维纳滤波法
频域法 约束最小平方 滤波法 小波变换法 无约束复原法 有约束复原法 频谱外推法 伪逆滤波法 奇异值矩阵分解 SVD法 非线性代数 复原法 凸集投影法 最大熵复原法 贝叶斯复原法 遗传进化法 神经网络法
哈里斯外推法 长球波函数 外推法 能量连续降减法
线性代数 复原法
举例:图像式补偿方法的应用举例
模糊图像
复原后的清晰图像
维纳滤波复原原理
维纳(wiener)滤波可以归于反卷积(或反转滤波) 算法一类,它是由Wiener首提出的,并应用于一维 信号,并取得很好的效果。以后算法又被引入二维 信号理,也取得相当满意的效果,尤其在图象复原 领域,由于维纳滤波器的复原效良好,计算量较低, 并且抗噪性能优良,因而在图象复原领域得到了广 泛的应用并不断得到改进发展,许多高效的复原算 法都是以此为基础形成的。
即
=1时,为标准维纳滤波器; ≠1时,为含参维纳滤波器。 若没有噪声时
S n (u, v)=0,维纳滤波器则退化成理想反滤波器。
实际很难求得因此,可以用一个比值k 代替两者之比,从而得到简化的维纳滤波公式:
实际应用中必须调节
以满足式公式1。因为 S g (u, v)
ˆ G(u, v)
青春,一个美好的时光,一个最 佳的年华,我们要把他演绎得更好, 更加绝色,让青春永远的长驻在我 们美好的时候吧!在这短暂的岁月 里,我们将用一颗热腾腾的心永远 的歌颂它,永存我们的心中。
谢谢观赏
2011年6月23日
维纳滤波法
运动模糊图像恢复程序
I=imread('abc.png'); figure(1);imshow(I,[]); title('原图像'); PSF=fspecial('motion',40,75); MF=imfilter(I,PSF,'circular'); noise=imnoise(zeros(size(I)),'gaussian',0,0.001); MFN=imadd(MF,im2uint8(noise)); figure(2);imshow(MFN,[]); title('运动模糊图像'); figure(3); imshow(deconvwnr(MFN,PSF),[]); title('维纳滤波复原')