本文主要是介绍图像复原之退化模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
图像复原之退化模型
概述
引言
- 退化就是将一幅正常的图像给弄得不正常,从而验证后续的复原方法是否能达到预期的效果。
- 如上图所述,正常的图像经过退化函数H还需要加噪声,下面我们来介绍几种常见的噪声模型。
- 高斯噪声来源于诸如电子线路的传感器噪声;瑞利噪声源于深度成像的表征噪声现象;指数和伽马源于激光成像。
- 对于这些噪声的去除估计大家应该会想到很多的方法。空域包括如均值滤波,统计滤波中的中值滤波,频域的带阻滤波和陷波器等。
- 这里想强调的是忽略考虑滤波器复杂度的问题的话,自适应滤波器也应该纳入我们的考虑范围之类。所谓的自适应就是指让系统实现反馈调节自己的参数,从而达到最佳的效果。频域的消除噪声自适应滤波器是最佳陷波器。
位置不变的线性退化
- 点扩散可以概括为空阈的卷积即即实现了退化
建模估计退化
- 首先介绍大气湍流模型,让图像具有一种大气湍流模糊的退化效果。
下面重点来了,运动模糊。即由于摄像头的运动引起的图像退化。
下面我们用matlab实现一下原图像卷积一个运动滤波器。
LEN = 31;THETA = 11; PSF=fspecial('motion',LEN,THETA);
- 这里在再介绍一波fspecial的用法吧
- 完事具备了,接下来我们用线性移动滤波和圆形均值滤波(低通模糊效果)再来实现退化
- 至此,退化部分介绍完毕了。接下来就是使用各种滤波来实现图像的复原了,这其中自然包含了千呼万唤始出来的维纳滤波了。
示例代码
clc;
clear;
close all;
I = imread('jyy.jpg'); % 读入图像
I = rgb2gray(I);
I = I(60+[1:256],222+[1:256],:); % 图像剪切
subplot(1,2,1); imshow(I); % 显示原始图像
title('原始图像'); % 设置图像标题
LEN = 31; % 模糊长度
THETA = 11; % 角度
PSF = fspecial('motion',LEN,THETA); % 生成PSF
Blurred = imfilter(I,PSF,'circular','conv'); % 图像卷积计算
subplot(1,2,2);imshow(Blurred); % 显示处理后的图像
title('图像卷积运算效果'); % 设置图像标题
clc;
clear;
close all;
I = imread('jyy.jpg'); % 读入图像
I = rgb2gray(I); subplot(2,2,1); imshow(I);
xlabel('(a) 原始图像');
H = fspecial('motion',20,45);
MotionBlur = imfilter(I,H,'replicate');
subplot(2,2,2); imshow(MotionBlur);
xlabel('(b) 动态模糊图像');H = fspecial('disk',10);
blurred = imfilter(I,H,'replicate');
subplot(2,2,3);imshow(blurred);
xlabel('(c) 模糊图像');H = fspecial('unsharp');
sharpened = imfilter(I,H,'replicate');
subplot(2,2,4); imshow(sharpened);
xlabel('(d) 图像锐化效果');
这篇关于图像复原之退化模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!