使用 matlab 数字图像处理(九)—— 去卷积(deconvolution,逆滤波复原)
来源:互联网 发布:c语言中return的用法 编辑:程序博客网 时间:2024/05/22 15:22
在没有噪声的情况下,频域退化模型可由下式给出:
G(u,v) :退化图像;H(u,v) :退化函数;F(u,v) :原始图像。
则原始图像可通过退化图像和退化函数得到:
也即,如果已知退化图像和退化传递函数的频域表示就可以求得原始图像的频域表达式,随后取傅里叶逆变换即可得到原始图像:
这就是所谓的去卷积(deconvolution),或叫逆滤波法。在有噪声的情况下:
所以:
然而退化过程的传递函数(一般为系统特性)是不可知的,且噪声项也无法精确得到。且上式中,
仿真测试
(1)原始图像退化
clear all; close all;clcI = imread('pout.tif');f = im2double(I);subplot(1, 3, 1), imshow(f), title('原始图像')F = fftshift(fft2(f));[M, N] = size(F);[u, v] = meshgrid(1:N, 1:M);k = 0.0025;H = exp(-k*((v-M/2).^2+(u-N/2).^2).^(5/6));G = F.*H;g = ifft2(ifftshift(G));g = uint8(abs(g)*255);subplot(1, 3, 2), imshow(g), title('退化图像')I = deconv(g, H, 128); % 可尝试不同的半径,128、108、78、48subplot(1, 3, 3), imshow(I), title('复原图像')
(2)去卷积函数的实现:
function I_new = deconv(I, H, thresh)if size(I, 3) == 3, I = rgb2gray(I);endI = im2double(I);G = fftshift(fft2(I));[M, N] = size(G);F = G;[x, y] = meshgrid(1:N, 1:M);if thresh > M/2, F = G./(H+eps);else idx = (x-N/2).^2 + (y-M/2).^2 < thresh^2; F(idx) = G(idx)./(H(idx)+eps);endI_new = ifft2(ifftshift(F));I_new = uint8(abs(I_new)*255);
0 0
- 使用 matlab 数字图像处理(九)—— 去卷积(deconvolution,逆滤波复原)
- 使用 matlab 数字图像处理(十)—— 维纳滤波复原
- 使用 matlab 数字图像处理(六)—— 空域滤波
- [数字图像处理]图像复原--逆滤波
- MATLAB数字图像处理(3)滤波
- 数字图像处理笔记—图像复原(一)
- 数字图像处理03(卷积、滤波、边缘检测——算法原理)
- 数字图像处理—空域变换增强之滤波增强(模板操作)(模板卷积)
- 数字图像处理,经典滤波算法去噪对比实验(Matlab实现)
- 数字图像处理—图像滤波(中值滤波)
- 使用 matlab 数字图像处理(一)—— 归一化直方图
- 使用 matlab 数字图像处理(八)—— 画圆
- 【Matlab数字图像处理】第五章:图像复原
- 数字图像处理——图像平滑(均值滤波)
- 数字图像处理——图像平滑(中值滤波)
- 数字图像处理——灰度变换与空间滤波(使用MFC)
- 图像的复原与重建(4):图像处理中滤波(filtering)与卷积(convolution)的区别
- 使用 matlab 数字图像处理(七)—— 频率域处理
- linux系统下的c编程——my first program
- 通过jdbc向数据库中插入数据,并对密码进行加密
- Array,Collection,Map的浅析
- python文件读写
- php面试题之四——PHP面向对象(基础部分)
- 使用 matlab 数字图像处理(九)—— 去卷积(deconvolution,逆滤波复原)
- H.264码流结构解析
- 新视图RecyclerView(一)
- #OC---一些基本概念
- [Robotics: Aerial Robotics] Quadrotor Kinematics 四旋翼无人机运动学
- 不平衡的振动诊断要点
- 我所理解的单例模式
- Codeforces Round #347 (Div. 2) B. Rebus (codeforces 664b) (构造)
- 抽象工厂模式