zoukankan      html  css  js  c++  java
  • 《数字图像处理》冈萨雷斯学习笔记3:频域处理

    频率域图像增强

    用傅里叶变换表示的函数特征可以完全通过傅里叶反变换进行重建而不丢失任何信息。

    吉布斯现象Gibbs phenomenon(又叫吉布斯效应):将具有不连续点的周期函数(如矩形脉冲)进行傅立叶级数展开后,选取有限项进行合成。当选取的项数越多,在所合成的波形中出现的峰起越靠近原信号的不连续点。当选取的项数很大时,该峰起值趋于一个常数,大约等于总跳变值的9%。这种现象称为吉布斯现象。

                                   


    一、傅里叶变换

    l = fft2(x);   %快速傅里叶变换
    l = fft2(x,m,n);


    x为输入图像;m和n分别用于将x的第一和第二维规整到指定的长度。当m和n均为2的整数次幂时算法的执行速度要比m和n均为素数时快。

    l1 = abs(l);  %计算l的幅度谱
    l2 = angle(l);  %计算l的相位谱
    Y = fftshift(l);  %频谱平移
    l = ifft2(x);      %快速傅里叶逆变换
    l =iff2(x,m,n);
    %% fftshift 对数变换,所应用的图片本身很简单,就只有黑白2种颜色
    clc
    clear
    f = imread('.imagesdipum_images_ch04Fig0403(a)(image).tif');
    imshow(f)
    title('原始图像')
    imfinfo('.imagesdipum_images_ch04Fig0403(a)(image).tif');%此处如果用Imfinfo(f)就会报错fft
    %没有居中的傅里叶频谱
    F=fft2(f);%进行二维快速傅里叶变换,其结果和DFT的一样,只是计算机的计算速度变快了而已,因而叫fft
    S=abs(F);%求傅里叶变换后的幅值
    figure,subplot(121),imshow(S,[]),title('傅里叶频谱图像1');%title函数一定要放在坐标显示的下一句才有效。
    subplot(122),imshow(S),title('傅里叶频谱图像2');%当没有第二个参数时,显示的图像为竖线加一些孤立的黑点
    %居中的傅里叶频谱
    Fc=fftshift(F);%将频谱图像原点移至图像矩形中间
    S1=abs(Fc);
    figure,
    subplot(121),imshow(S1,[]);%加了第二个参数后显示的图像正常
    %使用对数后视觉增强后的傅里叶频谱
    S2=log(1+S1);
    subplot(122),imshow(S2,[]);

    原始图像:                                                               傅里叶频谱图:

                                         

    居中频谱和对数后频谱:

    理想低通:

    %%%=============理想低通========================
    function out = imidealflpf(f,freq)
    %imidealflpf函数  构造高斯频域低通滤波器
    [M,N] = size(l);
    out = ones(M,N);
    for i = 1:M
        for j = 1:N
            if(sqrt(((i-M/2)^2+(j-N/2)^2))>freq)
                out(i,i) = 0;
            end
        end
    end


    高斯低通:

    %%%=============高斯低通========================
    function out = imgausslpf(l,sigma)
    %imgaussflpf函数  构造高斯频域低通滤波器
    [M,N] = size(l);
    out = ones(M,N);
    for i = 1:M
        for j = 1:N
                out(i,j) = exp(-((i-M/2)^2+(j-N/2)^2)/2/sigma^2);
        end
    end



  • 相关阅读:
    $(document).ready() 与$(window).load()
    关于.NET玩爬虫这些事 【初码干货】
    关于c# .net爬虫
    UIScollView Touch事件
    UISearchBar 点击X 按钮收键盘
    IOS7 UITableView一行滑动删除后 被删除行的下一行的点击事件将被忽略解决办法
    IOS 使用dispatch_once 创建单例
    IOS 定位 单例
    IOS拷贝文件到沙盒
    IOS后台运行
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3304045.html
Copyright © 2011-2022 走看看