精华内容
下载资源
问答
  • MATLAB实现二维图像傅立叶变换算法,MATLAB实现二维图像傅立叶变换算法
  • 5. 通过本实验掌握利用MATLAB编程实现数字图像傅立叶变换。二、 实验原理1.应用傅立叶变换进行图像处理傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器...

    第一部分 图像的傅立叶变换

    一、 实验目的

    1.了解图像变换的意义和手段;

    2. 熟悉傅里叶变换的基本性质;

    3. 熟练掌握FFT的方法及应用;

    4. 通过实验了解二维频谱的分布特点;

    5. 通过本实验掌握利用MATLAB编程实现数字图像的傅立叶变换。

    二、 实验原理

    1.应用傅立叶变换进行图像处理

    傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。通过实验培养这项技能,将有助于解决大多数图像处理问题。对任何想在工作中有效应用数字图像处理技术的人来说,把时间用在学习和掌握博里叶变换上是很有必要的。

    2.傅立叶(Fourier)变换的定义

    对于二维信号,二维Fourier变换定义为:

    二维离散傅立叶变换为:

    三、 实验步骤

    1.打开计算机,安装和启动MATLAB程序;程序组中“work”文件夹中应有待处理的图像文件;

    2.利用MatLab工具箱中的函数编制FFT频谱显示的函数;

    3. a)调入、显示三张不同的图像;

    b)对这三幅图像做FFT并利用自编的函数显示其频谱;

    c)讨论不同的图像内容与FFT频谱之间的对应关系。

    4.记录和整理实验报告。

    四、 实验仪器

    1计算机, MATLAB软件;

    3移动式存储器(软盘、U盘等)。

    4记录用的笔、纸。

    五、 实验结果及程序

    1.程序

    I1=imread('F:MATLAB学习实验pictureLENA.TIF'); %读入原图像文件

    I2=imread('F:MATLAB学习实验picturecell.tif'); %读入原图像文件

    I3=imread('cameraman.tif'); %读入原图像文件

    subplot(3,2,1);imshow(I1); %显示原图像

    fftI1=fft2(I1); %二维离散傅立叶变换

    sfftI1=fftshift(fftI1); %直流分量移到频谱中心

    RR1=real(sfftI1); %取傅立叶变换的实部

    II1=imag(sfftI1); %取傅立叶变换的虚部

    A1=sqrt(RR1.^2+II1.^2); %计算频谱幅值

    A1=(A1-min(min(A1)))/(max(max(A1))-min(min(A1)))*225;%归一化

    subplot(3,2,2);imshow(A1); %显示原图像的频谱

    subplot(3,2,3);imshow(I2); %显示原图像

    fftI2=fft2(I2); %二维离散傅立叶变换

    sfftI2=fftshift(fftI2); %直流分量移到频谱中心

    RR2=real(sfftI2); %取傅立叶变换的实部

    II2=imag(sfftI2); %取傅立叶变换的虚部

    A2=sqrt(RR2.^2+II2.^2); %计算频谱幅值

    A2=(A2-min(min(A2)))/(max(max(A2))-min(min(A2)))*225;%归一化

    subplot(3,2,4);imshow(A2); %显示原图像的频谱

    subplot(3,2,5);imshow(I3); %显示原图像

    fftI3=fft2(I3); %二维离散傅立叶变换

    sfftI3=fftshift(fftI3); %直流分量移到频谱中心

    RR3=real(sfftI3); %取傅立叶变换的实部

    II3=imag(sfftI3); %取傅立叶变换的虚部

    A3=sqrt(RR3.^2+II3.^2); %计算频谱幅值

    A3=(A3-min(min(A3)))/(max(max(A3))-min(min(A3)))*225;%归一化

    subplot(3,2,6);imshow(A3); %显示原图像的频谱

    2.结果

    六、 思考题

    1.傅里叶变换有哪些重要的性质?

    线性、时频对偶性、展缩性、时移性、时域和频域的微分性等。

    第二部分 图像边缘提取

    一。 实验目的:

    掌握图像边缘提取的常用算子的特点和程序实现。

    二。实验原理:

    边缘就是图像中包含的对象的边界所对应的位置。物体的边缘以图像局部特性的不连续性的形式出现的,例如,灰度值的突变,颜色的突变,纹理结构的突变等。从本质上说,边缘就意味着一个区域的终结和另外一个区域的开始。图像边缘信息在图像分析和人的视觉中十分重要,是图像识别中提取图像特征的一个重要属性。

    边缘检测(edge

    detection)在图像处理和对象识别领域中都是一个重要的基本问题。由于边缘的灰度不连续性,可以使用求导数的方法检测到。最早的边缘检测方法都是基于像素的数值导数的运算。现在使用的边缘检测算法大致可以归纳为两类:梯度(gradient)算子和拉普拉斯(Laplacian)算子。

    三。实验内容:

    编制一个通用的边缘提取函数。通过输入不同的参数,能够实现Sobel算子、Prewitt算子、Roberts算子、Laplace算子和Canny边缘检测,并比较不同算子处理后的边缘图像的特点。(实验图像任选)

    MATLAB图像处理工具箱提供的edge函数可以实现检测边缘的功能,详细的使用语法可以在MATLAB命令窗口键入”help

    edge.m”获得帮助。该函数只能应用于灰度图像,其基本原理就是识别图像中灰度值变化较大的像素点。

    四。 实验步骤:

    a、 读入图像

    b、对图像依次进行Sobel算子,Prewitt算子,Roberts算子,Laplace算子和Canny算子运算,比较处理结果。

    五。 实验仪器

    1计算机;

    2 MATLAB软件;

    3移动式存储器(软盘、U盘等)。

    4记录用的笔、纸。

    六、 实验结果及程序

    1.程序

    I=imread('cameraman.tif');

    subplot(2,3,1);

    imshow(I);title('(a)原始图像');

    subplot(2,3,2);

    I1=edge(I,'sobel'); %Sobel算子边缘检测

    imshow(I1);title('(b)Sobel算子');

    subplot(2,3,3);

    I2=edge(I,'prewitt'); %Prewitt算子边缘检测

    imshow(I2);title('(c)Prewitt算子');

    subplot(2,3,4);

    I3=edge(I,'robert'); %Robert算子边缘检测

    imshow(I3);title('(d)Robert算子');

    subplot(2,3,5);

    I4=edge(I,'log'); %Laplace算子边缘检测

    imshow(I4);title('(e)Laplace算子');

    subplot(2,3,6);

    I5=edge(I,'canny'); �nny算子边缘检测

    imshow(I5);title('(f)Canny算子');

    2.实验结果

    3.实验结果分析

    由于Robert s

    算子是利用图像的两个对角线的相邻像素之差进行梯度幅值的检测,所以求得的是在差分点处梯度幅值的近似值,并且检测水平和垂直方向边缘的性能好于斜线方向的边缘,

    检测精度比较高, 但容易丢失一部分边缘, 同时由于没经过图像平滑计算,因此不能抑制噪声,该算子对具有陡峭的低噪声图像响应最好。

    Prewit t 算子和Sobel 算子都是对图像进行差分和滤波运算,仅在平滑部分的权值选择上有些差异,

    因此两者均对噪声具有一定的抑制能力, 但这种抗噪能力是通过像素平均来实现的, 所以图像产生了一定的模糊, 而且还会检测出一些伪边缘,

    所以检测精度比较低, 该类算子比较适用于图像边缘灰度值比较尖锐,且图像噪声比较小的情况。

    Laplace算子首先通过高斯函数对图像进行平滑处理, 因此对噪声的抑制作用比较明显, 但同时也可能将原有的边缘也平滑了,

    造成某些边缘无法检测到,。此外高斯分布因子σ的选择对图像边缘检测效果有较大的影响。σ越大, 检测到的图像细节越丰富, 但抗噪能力下降,

    从而出现伪边缘, 反之则抗噪能力提高, 但边缘检测精度下降, 易丢失许多真边缘, 因此, 对于不同图像应选择不同参数。

    Canny 算子也采用高斯函数对图像进行平滑处理, 因此具有较强的去噪能力, 但同样存在容易平滑掉一些边缘信息,

    其后所采用的一阶微分算子的方向性较Laplace算子要好,因此边缘定位精度较高。该算子与其它边缘检测算子的不同之处在于, 它使用2

    种不同的阈值分别检测强边缘和弱边缘, 并且仅当弱边缘与强边缘相连时才将弱边缘包含在输出图像中,

    因此这种方法较其它方法而言不容易被噪声“填充”,更容易检查出真正的弱边缘。通过实验结果可以看出,该算子在上述几种边缘检测算子当中效果最好。

    展开全文
  • 使用matlab中自带的fft等相关的函数进行操作。代码如下:clear;clc;img=imread('test.jpg');img=rgb2gray(img);f=fft2(img); %傅里叶变换f=fftshift(f); %使图像对称r=real(f); %求图像频域实部i=imag(f); %求图像...

    使用matlab中自带的fft等相关的函数进行操作。

    代码如下:

    clear;

    clc;

    img=imread('test.jpg');

    img=rgb2gray(img);

    f=fft2(img); %傅里叶变换

    f=fftshift(f); %使图像对称

    r=real(f); %求图像频域实部

    i=imag(f); %求图像频域虚部

    margin=log(abs(f)); %图像幅度谱,加log便于显示

    phase=log(angle(f)*180/pi); %图像相位谱

    l=log(f);

    subplot(2,2,1),imshow(img),title('源图像');

    subplot(2,2,2),imshow(l,[]),title('频谱');

    subplot(2,2,3),imshow(margin,[]),title('幅度谱');

    subplot(2,2,4),imshow(phase,[]),title('相位谱');

    展开全文
  • 数字图像处理是一门集计算机科学、光学、数学、物理学等多学科的综合科学。随着计算机科学的发展,数字图像处理技术取得了巨大的进展,呈现出强大的生命力,已经在多种领域...MATLAB作为数学领域应用最广泛的一种软...

    数字图像处理是一门集计算机科学、光学、数学、物理学等多学科的综合科学。随着计算机科学的发展,数字图像处理技术取得了巨大的进展,呈现出强大的生命力,已经在多种领域取得了大量的应用,推动了社会的发展。其中,遥感领域中,对于影像数据的处理均基于数字图像处理的技术。而遥感影像数据作为地理信息科学的重要数据源,如何从中获取有用的信息,是地理信息数据处理中重要的内容。

    MATLAB作为数学领域应用最广泛的一种软件,集成了对于图片处理的函数和功能,成为了处理数字图像问题的佼佼者。其出众的计算能力和简便的绘图能力可以有效进行数字图像的变换和操作。本文探究了MATLAB(R2014a)软件下数字图像处理部分简单内容方法的操作实现,包括图像变换、图像增强等。

    由于时间所迫和水平不足,对于本文中的问题请指出。

    在这里首先将介绍基本的操作。

    1  数字图像处理基础

    1.1            MATLAB图像处理基本操作

    本文中对于大多数的操作,是对数字图像处理领域中最为著名的“lena”图片进行操作的。原图如下(Figure 1):

    155678432_1_20190305053132910.png

    Figure 1

    首先,在MATLAB中显示这幅图片:

    1

    2

    3I=imread('lena.jpg');

    imfinfo('lena.jpg')

    imshow(I);

    其中,imread()可以读取图片,imfinfo()可以获取图片的信息(Figure 2),imshow()可以显示图片。

    155678432_2_20190305053133301.png

    Figure 2

    从Figure 2中可以看出,该图片格式为png,长宽均为512px,颜色类型为真彩色。

    处理后的图片还需要进行保存:

    1imwrite(I,'lenaSave.jpg');

    1.2            图像数字化

    使用imread()读取图像后,可以看到,读入的图片I是以一个512*512*3的矩阵进行保存的,即分别是RGB颜色的数字图片。为了方便起见,在本文中,笔者将lena图进行了转换,转换为灰度图,即保存为一个512*512*1的矩阵。

    为了完成这样一个步骤,MATLAB中提供了相应的函数:

    1

    2I1=rgb2gray(I);

    imshow(I1);

    I1以512*512*1的矩阵形式进行存储。效果如下图(Figure 3):

    155678432_3_20190305053133441.jpg

    Figure 3

    1.3            直方图

    为了显示图像灰度的分布情况,还需要绘制灰度直方图。可以使用如下代码:

    1figure,imhist(I1);

    效果如下(Figure 4):

    155678432_4_20190305053133629.jpg

    Figure 4

    1.4            图像噪声的添加

    为了完成多种图像处理的操作和试验,还可以对图片添加噪声。所用函数为imnoise (I, type),该函数中的type可以为5种噪声参数,分别为:'gaussian'(高斯白噪声),'localvar'(与图象灰度值有关的零均值高斯白噪声),'poisson'(泊松噪声),'salt & pepper'(椒盐噪声)和'speckle'(斑点噪声)。

    以下为高斯噪声(Figure 5)和椒盐噪声(Figure 6)的代码和效果:

    1

    2I2=imnoise(I1,'gaussian');

    figure,imshow(I2);

    155678432_5_20190305053133738.jpg

    Figure 5

    1

    2I3=imnoise(I1,'salt & pepper');

    figure,imshow(I3);

    155678432_6_2019030505313419.jpg

    Figure 6

    2         图像变换

    2.1            傅立叶变换

    傅立叶变换可以将图像从空间域转换到频率域,然后再进行相应的处理。MATLAB中有傅立叶变换的函数。

    原图:

    155678432_7_20190305053134269.jpg

    Figure 7

    傅立叶变换:

    1

    2

    3F=fft2(I1);

    S=abs(F);

    figure,imshow(S,[]);

    效果:

    155678432_8_20190305053134426.jpg

    Figure 8

    看上去是一片黑,事实上在全图的左上角可以看出有一个白点(即左上角缺失了)。

    平移:

    1

    2Fc=fftshift(F);

    figure,imshow(abs(Fc),[]);

    效果:

    155678432_9_20190305053134660.jpg

    Figure 9

    将频率平移到中间。

    频谱图:

    1figure,imshow(uint8(abs(Fc/256)));

    效果:

    155678432_10_20190305053134801.jpg

    Figure 10

    之所以在本例中没有使用lena的图片,是因为该图傅立叶频谱图并无特点。

    傅立叶逆变换:

    1

    2

    3f=real(ifft2(F)/255);

    figure,imshow(f);

    效果:

    155678432_11_20190305053134957.jpg

    Figure 11

    经过逆变换后,仍然为原图。

    展开全文
  • matlab 傅立葉變化有关于matlab数字图像处理的资料 希望可以多多帮到大家
  • 注:本系列来自于图像处理课程实验,用Matlab实现最基本的图像处理算法 1.Fourier变换 (1)频域增强 除了在空间域内可以加工处理图像以外,我们还可以将...

    注:本系列来自于图像处理课程实验,用Matlab实现最基本的图像处理算法


    1.Fourier变换

    (1)频域增强

    除了在空间域内可以加工处理图像以外,我们还可以将图像变换到其他空间后进行处理,这些方法称为变换域方法,最常见的变换域是频域

    使用Fourier变换把图像从空间域变换到频域,在频域内做相应增强处理,再从频域变换到空间域得到处理后的图像。

    我们这里主要学习Fourier变换和FFT变换的算法,没有学过通信原理,我对信号、时域分析也不是很清楚。


    2.FFT算法

    (1)离散Fourier变换,DFT

    函数的计算式为:

    的FFT算法。

    (2)快速Fourier变换,FFT

    快速傅立叶变换FFT是利用单位复数根的特殊性质(消去引理和折半引理,见《算法导论》(第3版中文版)P532详细论述),在时间内计算出DFT的一种快速算法。

    FFT有两种基本实现方式:

    • 递归FFT
    • 迭代FFT,也叫FFT蝶式运算

    递归FFT由于递归栈开销大且容量有限等缺陷(但理解容易),一般计算采取迭代FFT实现。

    (3)迭代FFT

    直接给出算法导论版本的迭代FFT算法:

    这里写图片描述

    其中求逆序数拷贝的函数为:

    这里写图片描述

    FFT采用折半迭代的思想,因此速度能降低到

    (4)迭代FFTMatlab实现

    Matlab有fft函数,我们也可以自己实现:

    function [ fft_m ] = IterativeFFT( vec )
        clear i;
    
        n = length(vec);
    
        fft_m = BitReverseCopy(vec);
        for s = 1 : log2(n)
            m = power(2, s);
            wm = exp(- 2 * pi * i / m);
    
            for k = 0 : m : n - 1
                w = 1;
                for j = 0 : m / 2 - 1
                    t = w * fft_m(k + j + m / 2 + 1);
                    u = fft_m(k + j + 1);
                    fft_m(k + j + 1) = u + t;
                    fft_m(k + j + m / 2 + 1) = u - t;
                    w = w * wm;
                end
            end
        end
    end
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    BitReverseCopy函数如下:

    function [ copy ] = BitReverseCopy( vec )
        n = length(vec);
        copy = zeros(1, n);
    
        bitn = log2(n);
    
        for i = 0 : n - 1
            revi = bin2dec(fliplr(dec2bin(i, bitn)));
            copy(revi + 1) = vec(i + 1);
        end
    end
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    需要特别注意的是:

    • 一般给出的FFT算法伪代码都是基于下标从零开始的数组,写在Matlab需要考虑映射关系
    • clear i是为了怕之前有变量i和复数记号i混淆,清楚Matlab workspace中的缓存
    • 默认vec是double类型的!因为中间采用许多double类型运算

    3.图像的二维Fourier变换

    (1)二维DFT

    二维DFT定义公式为:

    的时间,效率很低。

    (2)将二维DFT分解为两个一维DFT

    Fourier变换的变换核(公式中和

    再对变换后的矩阵的每一行做一维DFT:

    的时间完成二维傅立叶变换。

    (3)用一维FFT实现二维FFT

    同样的我们可以用两个一维FFT实现二维FFT,时间复杂度

    function [ mfft2 ] = JCGuoFFT2( data )
        h = size(data, 1);
        w = size(data, 2);
        mfft2 = data;
    
        if power(2, log2(h)) ~= h || power(2, log2(w)) ~= w
            disp('JCGuoFFT2 exit: h and w must be the power of 2!')
        else
            for i = 1 : h
                mfft2(i, :) = IterativeFFT(mfft2(i, :));
            end
    
            for j = 1 : w
                mfft2(:, j) = IterativeFFT(mfft2(:, j));
            end
        end
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    代码很简单,先做FFT行变换再做FFT列变换。之前忘记提到,我这里实现的都是长度必须是2的次方的Fourier变换,因此有时候会做一些长度规范检查。

    (4)变换结果

    经过JCGuoFFT2的二维傅立叶变换,我们可以得到复平面内各个点的复数值,那么显示在图像中需要先求出幅值:

    pic1_fft = JCGuoFFT2(double(pic1));
    pic1_fft_amp = abs(pic1_fft);
    • 1
    • 2

    在对幅值做一次log变换得到较好的频域图像:

    pic1_fft_amp_log = log(1 + pic1_fft_amp);
    • 1

    绘制结果如下图:

    这里写图片描述

    (5)低频信号移到图像中心点

    由于复数运算的周期特性,图像的Fourier变换在复平面上是完全对称的,可以想象平面是由无限多个上图(右)频域图像拼接而成的二维阵列。一般研究频域图像是把低频部分,也就是变换后的边缘部分移到图像中心点,Matlab提供fftshift函数完成平移。

    平移的思路有两个

    • 通过Fourier变换平移定理先把原始图像做变换再做FFT
    • 先做FFT后再根据频域图像的对称性做对称变换

    查阅Matlab文档发现它是采用第二种方法,对图像做以下子矩阵交换:

    这里写图片描述

    那么我们可以很容易的写出自己的fftshift

    function [ after ] = FFTShift( before )
        h = size(before, 1);
        w = size(before, 2);
    
        after = before;
    
        if power(2, log2(h)) ~= h || power(2, log2(w)) ~= w
            disp('FFTShift exit: h and w must be the power of 2!')
        else
            hh = h / 2;
            hw = w / 2;
            after(1 : hh, 1 : hw) = before(hh + 1 : h, hw + 1 : w);
            after(1 : hh, hw + 1 : w) = before(hh + 1 : h, 1 : hw);
            after(hh + 1 : h, 1 : hw) = before(1 : hh, hw + 1 : w);
            after(hh + 1 : h, hw + 1 : w) = before(1 : hh, 1 : hw);
        end
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    将低频部分平移到中心点后结果为:

    这里写图片描述


    4.图像的二维反Fourier变换

    (1)一维逆DFT和一维逆FFT

    一维离散傅立叶变换的逆变换是将e的指数部分变号,然后整体除以长度N(Fourier变换与逆变换关于符号、系数有很多种组合的定义,但他们都是等价且对称的。这里的定义配合Matlab做fft实际效果。):

    同样我们可以根据iDFT的定义推演iFFT的算法,其迭代版本的Matlab实现如下:

    function [ ifft_m ] = IterativeIFFT( vec )
        clear i;
        n = length(vec);
        ifft_m = BitReverseCopy(vec);
        for s = 1 : log2(n)
            m = power(2, s);
            wm = exp(2 * pi * i / m);
    
            for k = 0 : m : n - 1
                w = 1;
                for j = 0 : m / 2 - 1
                    t = w * ifft_m(k + j + m / 2 + 1);
                    u = ifft_m(k + j + 1);
                    ifft_m(k + j + 1) = u + t;
                    ifft_m(k + j + m / 2 + 1) = u - t;
                    w = w * wm;
                end
            end
        end
        ifft_m = ifft_m ./ n;
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    (2)二维逆FFT

    二维逆FFT和二维FFT的思路一致,对所有行和列分别作一次iFFT即可:

    function [ mifft2 ] = JCGuoIFFT2( data )
        h = size(data, 1);
        w = size(data, 2);
        mifft2 = data;
    
        if power(2, log2(h)) ~= h || power(2, log2(w)) ~= w
            disp('JCGuoIFFT2 exit: h and w must be the power of 2!')
        else
            for i = 1 : h
                mifft2(i, :) = IterativeIFFT(mifft2(i, :));
            end
    
            for j = 1 : w
                mifft2(:, j) = IterativeIFFT(mifft2(:, j));
            end
        end
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    (3)逆FFT结果

    对之前Rect1.bmp用JCGuoFFT2变换的到的Fourier变换(非shift和log之后、非仅幅度部分)作FFT2逆变换可以直接得到原图像:

    这里写图片描述

    这幅图有多个结果,可以看title知道每个结果的含义,图2-1是用JCGuoIFFT2做傅立叶反变换的结果,得到的图像和原图像、和Matlab ifft2反变换后的图像都是一致的。


    5.幅频特性与相频特性

    (1)对振幅和相位单独做逆FFT

    如果我们只把图像Fourier变换的振幅部分和相位部分单独做二维逆FFT,可以直观的感受人眼对图像幅频特性和相频特性的敏感度。

    复数的幅度/振幅定义为:

    相位角和相位定义为:

    对相位反变换需要在乘以一个系数(我是调出来的,针对图像,肯定可以自动的做均衡化):

    pic2_fft_angle = angle(pic2_fft);
    clear i;
    tmp = 10000 * exp(i * pic2_fft_angle);
    pic2_ifft_angle = uint8(JCGuoIFFT2(tmp));
    
    • 1
    • 2
    • 3
    • 4
    • 5

    对振幅和相位单独做逆FFT结果如下:

    这里写图片描述

    (2)人眼敏感度

    观察上图,幅频特性主要涵盖了图像颜色的分布,相频特性主要刻画了图像的边界信息。人眼对图像的相频特性更加敏感,看相频特性能够大概知道图像内容。


    6.Fourier变换的旋转定理

    (1)Fourier变换旋转定理

    (2)结果

    Rect2.bmp是Rect1.bmp旋转45度的示意图(注:原Rect2.bmp是二值的,做了预处理,但其本身边界不平滑,导致效果不太好,但不影响观察旋转定理):

    这里写图片描述

    我们可以看到幅度FFT正变换和相位FFT你变换都是旋转了45度,但是幅度FFT逆变换区别较大。


    展开全文
  • matlab数字图像傅立叶变换实验

    万次阅读 多人点赞 2016-11-11 10:57:53
    实验三 图像傅立叶变换 1.启动MATLAB程序,读入一幅图像;对图像做FFT。使用’subplot’命令,同时显示原始图像其频谱图; 1.1实验过程: 首先读取一幅图像,然后将这幅图像归一化到0~1之间,然后对图像做二维...
  • 二维图像傅立叶变换

    万次阅读 多人点赞 2018-05-11 11:57:50
    二维图像傅立叶变换,与一维傅立叶相比,在理解上要抽象很多。我在网上找了几篇相对较好的文章,并用matlab自己做了几个实验图像,希望能对大家理解二维图像傅立叶变换有所帮助。
  • 第8章 图像傅立叶 变换 ;为什么要在频率域研究图像增强;为什么要在频率域研究图像增强;法国数学家傅立叶(生于1768年)在1822年出版的热分析理论一书中指出:任何周期函数都可以表达为不同频率的正弦和或余弦和的形式,...
  • 1. 启动MATLAB程序,读入一幅图像;对图像做FFT。使用’subplot’命令,同时显示原始图像其频谱图; IenaImg=imread('lena.... %二维离散傅立叶变换 sfftI=fftshift(fftI); %直流分量移到频谱中心 RR=real(sfftI); %取
  • matlab 数字图像矩阵数据的显示及其傅立叶变换
  • 灰度和彩色图像的快速傅立叶变换:问题1:对输入的灰度和彩色图像进行快速傅立叶变换,显示频谱图; 问题2:进行逆变换,观察结果。 1、问题及说明 (1)对输入的灰度和彩色图像进行快速傅立叶变换,显示频谱图; ...
  • 此次项目是在频谱域空间下的操作,代码由c++(MFC)完成,没有使用matlab,完成 project04-01 到04-05 的内容。包括快速傅立叶变换,频谱显示,低通滤波,高通滤波, 图像相关性匹配
  • 傅立叶变换图像目标定位-matlab

    千次阅读 2019-07-29 22:47:05
    傅立叶变换中的目标定位 and 卷积应用中的目标特征识别 写这篇文章的感觉就是一句话:我想验证:**时域中的卷积操作等于频域中的乘积,也就是这个公式:f*g(x) = F(x)*G(x),**这句话。 直接上代码:每一行代码都有...
  • 主要介绍了傅立叶变换的算法,在matlab仿真环境下实现了图像的二维傅立叶变换
  • 注意:这一系列实验的图像处理程序,使用Matlab实现最重要的图像处理算法 1.Fourier兑换 (1)频域增强 除了在空间域内能够加工处理图像以外,我们还能够将图像变换到其它空间后进行处理。这些方法称为变换域...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 305
精华内容 122
关键字:

matlab图像傅立叶变换

matlab 订阅