【计算机视觉】图像增强----图像的傅立叶变换

这篇具有很好参考价值的文章主要介绍了【计算机视觉】图像增强----图像的傅立叶变换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【计算机视觉】图像增强----图像的傅立叶变换

个人简介: 

> 📦个人主页:赵四司机
> 🏆学习方向:JAVA后端开发 
> ⏰往期文章:SpringBoot项目整合微信支付
> 🔔博主推荐网站:牛客网 刷题|面试|找工作神器
> 📣种一棵树最好的时间是十年前,其次是现在!
> 💖喜欢的话麻烦点点关注喔,你们的支持是我的最大动力。

目录

一:相关概念

1.什么是傅里叶变换

2.傅里叶变换的定义

二:傅里叶变换 

三:离散余弦变换(DCT)

四:反变换

五:不同的图像内容与FFT、DCT频谱之间的对应关系

 


一:相关概念

1.什么是傅里叶变换

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

2.傅里叶变换的定义

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

【计算机视觉】图像增强----图像的傅立叶变换

二维离散傅立叶变换为:

【计算机视觉】图像增强----图像的傅立叶变换

图像的傅立叶变换与一维信号的傅立叶变换变换一样,有快速算法,具体参见参考书目,有关傅立叶变换的快速算法的程序不难找到。实际上,现在有实现傅立叶变换的芯片,可以实时实现傅立叶变换。

二:傅里叶变换 

a) 绘制一个二值图像矩阵,并将其傅立叶函数可视化。

f=zeros(30,30);

f(5:24,13:17)=1; 

imshow(f,'InitialMagnification','fit')

【计算机视觉】图像增强----图像的傅立叶变换

图2.5.1-1 矩阵可视化结果

F=fft2(f);

F2=log(abs(F));

figure,imshow(F2,[-1 5],'InitialMagnification','fit');colormap(jet);

【计算机视觉】图像增强----图像的傅立叶变换

图2.5.1-2 矩阵频谱图

        分析:fft2表示将二维矩阵转换为频域,可以看到得到的像谱图不是中心对称的, 因此需要进行下一步处理。可以看到,由于矩阵的零频分量分布在矩阵的四周,而1 频分量分布在中心,所以在矩阵中间的梯度较大,对应的频谱图越暗。

F=fft2(f,256,256); %零填充为256×256矩阵

figure,imshow(log(abs(F)),[-1 5],'notruesize');colormap(jet);

【计算机视觉】图像增强----图像的傅立叶变换

图2.5.1-3 256*256矩阵频谱图

F2=fftshift(F);    %将图像频谱中心由矩阵原点移至矩阵中心

figure,imshow(log(abs(F2)),[-1 5],'notruesize');colormap(jet);

【计算机视觉】图像增强----图像的傅立叶变换

图2.5.1-4 频谱中心化处理结果

        分析:根据快速傅里叶变换的计算要求,需要图像的行数、列数均满足2的n次方,所以进行转换前要进行补零操作。一个M行N列的二维图像f(x,y),先按行队列变量y做一次长度为N的一维离散傅里叶变换,再将计算结果按列向对变量x做一次长度为M傅里叶变换就可以得到该图像的傅里叶变换结果。fft2将时域信号转换为频域信号,低频分布在四周,fftshift用于将fft2的 DC分量移动到频谱中心,低频区域移动到中央,这样便于处理,可以看到得到的频谱图是中心对称的。

b)利用傅立叶变换分析两幅图像的相关性,定位图像特征。读入图像‘text.png',抽取其中的字母‘a’。

bw=imread('text.png');

a=bw(32:46,85:102);

imshow(bw);

【计算机视觉】图像增强----图像的傅立叶变换

图2.5.1-5 bw可视化结果

figure,imshow(a);

【计算机视觉】图像增强----图像的傅立叶变换

图2.5.1-6 截取’a’

C=real(ifft2(fft2(bw).*fft2(rot90(a,2),256,256)));%求相关性

figure,imshow(C,[]);

【计算机视觉】图像增强----图像的傅立叶变换

图2.5.1-7  计算相关性

thresh=max(C(:));

figure,imshow(C>thresh-10)

【计算机视觉】图像增强----图像的傅立叶变换

图2.5.1-8 相关值大于thresh-10

figure,imshow(C>thresh-15)

【计算机视觉】图像增强----图像的傅立叶变换

图2.5.1-9 相关值大于thresh-15

        在空域中f(x,y)与 与 g(x,y) 的相关等价于频域中 F(u,v) 的共轭与 G(u,v)  相乘,利用傅里叶变换,可以将积分求和过程转换成频域相乘(程序里求的是相乘后的实部),简化了计算过程,相关定理与卷积定理类似。相关定理可用于匹配当中,用于寻找感兴趣的物体,例如题中寻找字母a,匹配之后函数相关值在匹配点达到最大值(见图2.5.1-7,匹配点亮度最亮)。此外在寻找其他区域匹配点时,先找出了相关矩阵的最大值,然后显示出相关值大于最大值减10的匹配点,可以看到在第一第二行基本匹配成功(见2.5.1-8),显示出相关值大于最大值减15的匹配点时误差比较大。其实求的也即实部误差。

三:离散余弦变换(DCT)

a) 使用dct2对图像‘autumn.tif’进行DCT变换

RGB=imread('autumn.tif');

imshow(RGB)

【计算机视觉】图像增强----图像的傅立叶变换

图2.5.2-1 autumn.tif

I=rgb2gray(RGB); %转换为灰度图像

figure,imshow(I)

【计算机视觉】图像增强----图像的傅立叶变换

图2.5.2-2 autumn.tif灰度处理

J=dct2(I);

figure,imshow(log(abs(J)),[]),colormap(jet(64));colorbar;

【计算机视觉】图像增强----图像的傅立叶变换

图2.5.2-3 autumn图像dct系数

        对原始图像进行离散余弦变换,首先要把彩色图片进行灰度化处理,可以看到变换后的DCT系数能量主要集中在左上角,其余大部分DCT系数接近于0,说明离散余弦变换适用于对图像进行压缩。低频系数体现的是图像中目标的轮廓和灰度分布特性,高频系数体现的是目标形状的细节信息。DCT变换之后,能量主要集中在低频分量处,这也是DCT变换去相关性的一个体现。

b) 将上述DCT变换结果中绝对值小于10的系数舍弃,使用idct2重构图像并与原图像比较。

K=idct2(J);

figure,imshow(K,[0 255])

【计算机视觉】图像增强----图像的傅立叶变换

图2.5.2-4 DCT逆变换

J(abs(J)<10)=0;  %舍弃系数

K2=idct2(J);

figure,imshow(K2,[0 255]);

【计算机视觉】图像增强----图像的傅立叶变换

图2.5.2-5 DCT压缩处理

        DCT变换和FFT变换都属于变换压缩方法,变换压缩的一个特点是将从前密度均匀的信息分布变换为密度不同的信息分布。在图像中,低频部分的信息量要大于高频部分的信息量,尽管低频部分的数据量比高频部分的数据量要小的多。对DCT系数设置门限(将DCT系数低于10的灰度值置0),这就是图像压缩的量化过程,再经过逆变换将频域转换成空域便可达到压缩效果,可以看到,虽然图像经过了压缩处理,但是图像质量肉眼看不出变化(见图2.5.2-5)。

c) 利用DCT变换进行图像压缩。

I=imread('cameraman.tif');

I=im2double(I);

T=dctmtx(8);

% B=blkproc(I,[8,8],'P1*x*P2',T,T');

fun = @(block_struct)T*block_struct.data*T';

B=blockproc(I,[8 8],fun);

mask=[1  1  1  1  0  0  0  0

      1  1  1  0  0  0  0  0

      1  1  0  0  0  0  0  0

      1  0  0  0  0  0  0  0

      0  0  0  0  0  0  0  0

      0  0  0  0  0  0  0  0

      0  0  0  0  0  0  0  0

      0  0  0  0  0  0  0  0];

% B2=blkproc(B,[8 8],'P1.*x',mask);

fun = @(block_struct)Mask.*block_struct.data;

B2=blockproc(B,[8 8],fun);

% I2=blkproc(B2,[8 8],'P1*x*P2',T',T);

fun = @(block_struct)T'*block_struct.data*T;

I2=blockproc(B2,[8 8],fun);

imshow(I)

【计算机视觉】图像增强----图像的傅立叶变换

图2.5.2-6 cameramen.tif

figure,imshow(I2);

【计算机视觉】图像增强----图像的傅立叶变换

图2.5.2-5 图片压缩

        在运行参考代码时候,出现警告说建议使用blockproc来替换掉blkproc,经过查 阅得知两者的区别是blkproc必须一次性把要处理的矩阵全部导入内存中,对一些超大 型图像就无法使用了,随后matlab推出了可以处理任意大的图像blockproc函数。把 blkproc改成blockproc后,出现了错误,查阅帮助文档得知blockproc函数的原型为B = blockproc(A,[M N],FUN),A是要处理的图像矩阵,[M,N]是每次分块处理矩阵的大小, FUN是函数句柄,即对每块矩阵的处理函数。不同于blkproc,FUN须事先定义好,且 输入必须是结构体,其data域是我们的矩阵数据,这里由blockproc分块后的机制决定。

        fun = @(block_struct)T*block_struct.data*T'的作用为进行离散余弦变换,以便于后 面进行压缩处理,其中T表示8*8的DCT变换矩阵。由于DCT系数能量值主要分布 于左上角,因此mask将左上角的系数设置为1,其余位置设置为0,这样就能保留每 个块中的低频系数,而舍弃高频系数,以达到图像压缩的目的。最后再通过fun = @(block_struct)T'*block_struct.data*T;进行反余弦变换,将频域转换为空域,得到 压缩后的图像。

四:反变换

①对(1)中的矩阵进行反变换,代码如下:

F3 = iff2(F);

figure,imshow(log(abs(F3)),[-1 5],'InitialMagnification','fit');colormap(jet);

【计算机视觉】图像增强----图像的傅立叶变换

图2.5.3-1 对矩阵进行傅里叶反变换

        由于进行傅里叶变换的是矩阵,将空域转换成了频域,而傅里叶反变换则将空域 转换回频域,重新显现出原来的图形。

②对(2)中的图像进行反变换

K=idct2(J);

figure,imshow(K,[0 255])

【计算机视觉】图像增强----图像的傅立叶变换

图2.5.3-2 DCT逆变换

        DCT可以用于对图片进行压缩,DCT过程是将空域转换为频域的过程,而经过DCT逆变换则可以将频域转换为空域,将图像还原。

五:不同的图像内容与FFT、DCT频谱之间的对应关系

        进行傅里叶变换(FFT2)后,频谱的低频部分主要集中在四周,中间则为高频部分; 而DCT则从左上角到右下角从低频到高频,系数逐渐减小。相同点为图像能量均集中在 低频部分,低频系数体现出图像中目标的轮廓和灰度分布特性,高频系数体现了目标形 状细节。需要注意的是,频谱图上各点和原图像不存在一一对应的关系,即使是在不移 频的情况下也没有。

友情链接: 牛客网  刷题|面试|找工作神器文章来源地址https://www.toymoban.com/news/detail-441761.html

到了这里,关于【计算机视觉】图像增强----图像的傅立叶变换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【图像检测】计算机视觉地质断层结构的自动增强和识别【含Matlab源码 4026期】

    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。 🍎个人主页:海神之光 🏆代码获取方式: 海神之光Matlab王者学习之路—代码获取方式 ⛳️座右铭:行百里者,半于九十。 更多Matlab仿真内容点击👇 Matlab图像处理(进阶版) 路径规划

    2024年03月21日
    浏览(75)
  • 【图像检测】基于matlab计算机视觉地质断层结构的自动增强和识别【含Matlab源码 4026期】

    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。 🍎个人主页:海神之光 🏆代码获取方式: 海神之光Matlab王者学习之路—代码获取方式 ⛳️座右铭:行百里者,半于九十。 更多Matlab仿真内容点击👇 Matlab图像处理(进阶版) 路径规划

    2024年03月26日
    浏览(72)
  • MATLAB实现图像的傅立叶变换

    文章和代码以及样例图片等相关资源,已经归档至【Github仓库:digital-image-processing-matlab】或者公众号【AIShareLab】回复 数字图像处理 也可获取。 1.掌握二维 DFT 变换及其物理意义 2.掌握二维 DFT 变换的MATLAB 程序 3.空域滤波与频域滤波 1.应用傅立叶变换进行图像处理 傅里叶变换

    2024年02月06日
    浏览(48)
  • 计算机视觉 - 了解Mosaic数据增强

            数据增强包含各种扩展和增强机器学习和深度学习模型数据集的技术。这些方法跨越不同的类别,每种方法都会改变数据以引入多样性并提高模型的稳健性。几何变换(例如旋转、平移、缩放和翻转)会修改图像方向和结构。颜色和对比度调整会改变图像外观,包

    2024年01月17日
    浏览(48)
  • 【深度学习:数据增强】计算机视觉中数据增强的完整指南

    可能面临的一个常见挑战是模型的过拟合。这种情况发生在模型记住了训练样本的特征,但却无法将其预测能力应用到新的、未见过的图像上。过拟合在计算机视觉中尤为重要,在计算机视觉中,我们处理高维图像输入和大型、过度参数化的深度网络。有许多现代建模技术可

    2024年02月03日
    浏览(49)
  • 计算机视觉的未来:增强现实与虚拟现实

    感谢您提供如此详细的任务说明和要求。我将尽我所能按照您的指引来撰写这篇技术博客文章。 计算机视觉作为人工智能的重要分支,在过去的几十年里取得了飞速的发展。从最初的图像识别和物体检测,到现在的3D重建、语义分割、行为理解等诸多前沿方向,计算机视觉的应用

    2024年04月08日
    浏览(62)
  • 数据增强:让计算机视觉模型更加智能和有效

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 随着计算机视觉技术的快速发展,各种数据增强技术也应运而生。数据增强技术可以有效地提高计算机视觉模型的智能和有效性,从而在众多应用场景中取得更好的表现。 1.2. 文章目的 本文旨在阐述数据增强技术在计算机视

    2024年02月08日
    浏览(45)
  • 数据增强:如何让计算机视觉模型更加准确和可靠

    作者:禅与计算机程序设计艺术 数据增强(Data Augmentation)是一种常用的技术,可以提高计算机视觉模型的精度和鲁棒性。本文主要介绍数据增强技术的原理、分类方法及应用。通过实例分析,阐述数据增强对模型精度提升的重要作用。最后,讨论一些未来可能遇到的问题与

    2024年02月07日
    浏览(47)
  • 压缩编码之变换的选择之离散余弦变换(DCT)和离散傅立叶变换(DFT)——数字图像处理

    变换的选择是一个关键的考量因素,它决定了数据是如何被压缩的。选择变换时考虑以下几个重要原则: 数据去关联性 :变换的目的之一是减少数据中的相关性。例如,在图像压缩中,像素间往往高度相关。通过适当的变换,如离散余弦变换(DCT),可以将这些相关性转化

    2024年02月02日
    浏览(54)
  • 【计算机视觉 | 图像分类】arxiv 计算机视觉关于图像分类的学术速递(6月 29 日论文合集)

    基于多示例学习的全幻灯片图像分类的伪袋混合增强 论文地址: 鉴于十亿像素图像建模的特殊情况,多实例学习(MIL)已成为全幻灯片图像(WSI)分类最重要的框架之一。 在当前实践中,大多数 MIL 网络在训练中经常面临两个不可避免的问题:i)WSI 数据不足,ii)神经网络

    2024年02月11日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包