matlab 约束最小二乘方滤波,约束最小二乘滤波复原.ppt

约束最小二乘滤波复原

(a)原始图像 (b)运动造成的图像模糊 (c)Wiener滤波去图像模糊 维纳滤波复原实例 I = imread('lena.jpg'); figure(1),imshow(I); LEN = 21; THETA = 11; PSF = fspecial('motion', LEN, THETA); blurred = imfilter(I, PSF, 'conv', 'circular'); figure(2), imshow(blurred) estimated_nsr = noise_var / var(I(:)); wnr= deconvwnr(blurred_noisy, PSF, estimated_nsr); figure(3), imshow(wnr) (a)原始图像 (b)运动模糊图像 (c)维纳滤波复原 6.6.2 约束最小二乘滤波复原 用deconvreg函数实现对模糊图像的约束最小二乘复原的调用格式为: J=deconvreg(I,PSF) J=deconvreg(I,PSF,NP) J=deconvreg(I,PSP,NP,LRANGE) J=deconvreg(I,PSF,NP,LRANGE,REGOP) [J,LAGRA]=deconvreg(I,PSP,…) 使用该函数时应注意:输出图像J可能会受到算法中使用的离散傅里叶变换而出现振铃现象。 为了减少振铃现象的影响,在使用deconvreg 函数前先使用edgetaper 函数处理图像。 例如,I=edgetaper(I,PSF)。 几种复原法的比较 令 则有 这是已知退化模型的傅里叶变换式。 下面以实例介绍图像模糊的模型。 例如,设原图像f(x,y)只在x方向以给定的速度做匀速直线运动,则有 和 当t=T时,图像f(x,y)在水平x方向的移动距离为a。则 若y分量也发生变化 ,则退化函数变为 6.5 图像的几何校正 图像在获取或显示生成过程中,由于成像系统本身具有的几何非线性以及由于视像管摄像机及阴极射线管显示器的扫描偏转系统有一定的非线性,或者摄像时视角的不同,都会使生成的图像产生几何失真或几何畸变。 图像的几何失真实质上也是一种图像退化的过程。 解决图像的几何失真校正的办法包括如下两个步骤: (1)空间变换:对图像平面上的像素进行重新排列以恢复原空间关系。 (2)灰度插值:对空间变换后的像素赋予相应的灰度值以恢复原位置的灰度值。 几何变换是图像处理中一种基本的、常用的图像预处理方法,其主要用途是: 1.实现数字图像的放大、缩小及旋转; 2.实现畸变(畸变原因可以多种多样,如摄影系统或镜头畸变)图像的校正; 3.实现不同来源图像(如航空摄影,卫星遥感,合成孔径雷达等不同来源)的配准; 4.显示和打印图像时的一种图像排版工具; 5.可以使处理后的图像具有多种不同的特殊效果。 6.5.1 几何畸变的描述 图像的几何畸变是指在成像过程中所产生的图像像元的几何位置相对于参照系统(地面实际位置或地形图)发生的挤压、伸展、偏移和扭曲等变形,使图像的几何位置、尺寸、形状、方位等发生改变。 图像中所产生几何畸变大致分为两大类:(1)内部畸变;(2)外部畸变。 比例尺 歪斜 中心移动 扫描非线性 辐射状畸变 扭曲 图像的几何畸变示例 (a)内部畸变 倾斜引起的 高度变化引起的 地形起状引起 地球曲率引起 投影畸变 比例尺误差 的畸变 的畸变 (b)外部畸变 图像的几何畸变实例 (a)扭曲 (b)扫描非线性 6.5.2 图像空间变换 图像空间几何坐标变换以及像素点灰度值的确定这两部分内容是几何校正的基础,几何校正需要两个独立的算法。 一个算法是几何空间变换本身,用它描述每个像素如何从其初始位置移动到终止位置,即每个像素的运动。 同时,还需要另一个算法用于灰度级的插值。 图像几何变

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
全逆滤波、维纳滤波约束最小二乘滤波都是常用的图像复原法。其中,全逆滤波是一种简单直接的法,但对于噪声较大或高频分量较强的图像,会出现振铃现象。维纳滤波是针对噪声较大的情况下进行图像复原的一种法,可以有效地降噪,但是对于图像高频分量较强的情况,会有较强的平滑效果。约束最小二乘滤波则可以在保留图像细节的基础上,降噪和平滑图像。 以下是实现全逆滤波、维纳滤波约束最小二乘滤波Matlab代码: ```matlab % 读入图像并添加高斯噪声 I = im2double(imread('degraded_image.png')); J = imnoise(I, 'gaussian', 0.01); % 计算傅里叶变换 F = fft2(J); % 计算全逆滤波系数 H = 1./F; % 计算维纳滤波系数 K = 0.01; S = abs(F).^2; W = conj(F)./(S + K); % 计算约束最小二乘滤波系数 lambda = 0.05; T = lambda./(S + lambda); C = conj(F).*T; % 进行滤波复原 G_inv = real(ifft2(H.*F)); G_wiener = real(ifft2(W.*F)); G_lsq = real(ifft2(C.*F)); % 显示复原结果 figure; subplot(2,2,1); imshow(I); title('原图'); subplot(2,2,2); imshow(J); title('加噪图'); subplot(2,2,3); imshow(G_inv); title('全逆滤波'); subplot(2,2,4); imshow(G_wiener); title('维纳滤波'); figure; subplot(1,2,1); imshow(G_lsq); title('约束最小二乘滤波 (k=0.05)'); ``` 在以上代码中,我们首先读入了经过大气湍流退化的图像,并使用`imnoise`函数添加了高斯噪声。接着,我们计算了图像的傅里叶变换,并分别求出了全逆滤波、维纳滤波约束最小二乘滤波的系数。最后,我们使用`ifft2`函数进行了滤波复原,并将结果进行了显示。 为了比较不同k值下的约束最小二乘滤波效果,我们可以使用循环语句,对不同的k值进行遍历,并重复进行滤波复原和显示操作: ```matlab % 不同k值下的约束最小二乘滤波 figure; for k = [0.01, 0.05, 0.1, 0.5] T = k./(S + k); C = conj(F).*T; G_lsq = real(ifft2(C.*F)); subplot(2,2,find([0.01, 0.05, 0.1, 0.5] == k)); imshow(G_lsq); title(['k=', num2str(k)]); end ``` 在以上代码中,我们对k值进行了遍历,并使用`find`函数找到当前k值在数值列表中的位置,然后将复原结果进行显示,并在标题中显示当前的k值。 运行以上代码,即可得到不同滤波法的复原结果,以及不同k值下约束最小二乘滤波的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值