zoukankan      html  css  js  c++  java
  • 基于matlab的退化图像复原(二)------逆滤波复原

    差不多就是这个理论,傅里叶变换之后除掉退化函数的傅里叶变换,就变回来了。

    说是这么说,写出来就是这样。手写公式简单得多,人懒就是任性。

    matlab代码。

    clc
    I=imread('src.png');
    I0=rgb2gray(I);
    subplot(231);
    imshow(I0);
    title('src');
    [m,n]=size(I0);
    F=fftshift(fft2(I0));
    k=0.0025;
    H=[];
    for u=1:m
        for v=1:n
            q=((u-m/2)^2+(v-n/2)^2)^(5/6);
            H(u,v)=exp((-k)*q);
        end
    end
    G=F.*H;
    I1=abs(ifft2(fftshift(G)));
    subplot(232);
    imshow(uint8(I1))
    title('退化');
    
    I2=imnoise(uint8(I1),'gaussian',0,0.001);
    subplot(233);
    imshow(uint8(I2));
    title('加噪声');
    F0=fftshift(fft2(I2));
    F1=F0./H;
    I3=ifft(fftshift(F1));
    subplot(236);
    imshow(uint8(I3));
    title('退化噪声复原')
    
    F2=fftshift(fft2(I1));
    F3=F2./H;
    I4=ifft(fftshift(F3));
    subplot(235);
    imshow(uint8(I4));
    title('退化复原')
    
    F4=fftshift(fft2(I0));
    I5=ifft(fftshift(F4));
    subplot(234);
    imshow(uint8(I5));
    title('直接傅里叶变换回来')
    

      

    上面主要是傅里叶除的矩阵要一样维度,所以给了个[m,n]的矩阵,好像局限性有点大。

    我个人想是不是逆卷积的效果更好一点,主要是傅里叶变来变去的相位难以控制。

        参考《MATLAB图像处理超级学习手册》

  • 相关阅读:
    Python表达式与生成式
    Python三大器之生成器
    Python三大器之迭代器
    Arrays.asList基本用法
    理解静态绑定与动态绑定
    Comparable 和 Comparator的理解
    @SuppressWarnings 用法
    @SafeVarargs 使用说明
    LeetCode43,一题让你学会高精度算法
    分布式——吞吐量巨强、Hbase的承载者 LSMT
  • 原文地址:https://www.cnblogs.com/MnsterLu/p/5638102.html
Copyright © 2011-2022 走看看