图形频域基础

一般我们看到的图像可以表示为函数f(x,y),x和y是空间上的坐标,此时的图像称为空间域图像;经过频域变换后的图像称为频域图像。离散情况下,一维傅里叶变换有如下形式。同时这里还证明了,对原始数据乘以(-1)^x之后,频域结果被中心化。

在二维情况下,则有

因为图像处理中一般有M=N,所以有

我们对一幅图像每个像素点(x,y)乘以(-1)^(x+y),然后进行FFT,得到中心化的频域图像,然后对频域图像进行操作,最后进行傅里叶逆变换,得到处理图像。

在频域上可以方便地进行低通滤波和高通滤波,或者叫模糊化滤波和锐化滤波。设当前的频域图像已经中心化,如果频域图像像素离中心越远,乘以一个小的权值,那么变换回空间域图像,就会发现图像模糊了;反之图像变锐化。常用如下几种滤波器:

1、理想低/高通滤波。如果频域图像像素点离中心超过/小于一定距离D0,那么赋值为0。理想滤波之后产生的空间域图像会伴随着波纹,称为振铃,原因是理想滤波器曲线是阶跃曲线,用傅里叶级数去拟合会产生吉布斯效应引起的震荡。、

2、巴特沃斯滤波器。其公式中n为阶数,控制坡度大小。N=1时有振铃效应,n增大后振铃逐渐减弱。

3、高斯滤波器。效果比较完美。

低通滤波器LPF,其中D0是截止频率,D(u,v)是离中心的距离

高通滤波器HPF = 1 -LPF

带阻滤波器HBR,w是带宽,D0是截止频率,D就是D(u,v)

带通滤波器HBP = 1- HBR

表格略。

陷波器,带阻滤波器中心不在原点的,带有偏移的带阻滤波器。

https://github.com/artzers/NGImageProcessor.git BaseFFTProcessor.py

时间: 2024-10-19 10:56:27

图形频域基础的相关文章

【JAVA语言程序设计基础篇】--图形用户界面基础--一些总结

第12章 图形界面基础 1.那个类是JAVA GUI组件的根?容器类是component的子类吗?哪个类是Swing GUI组建的根? java.awt.component是所有java GUI组件类的根. 容器类如JFrame是组件的子类. JComponent是Swing GUI组件类的根. 2.AWT组件与Swing组建的不同? AWT的组件是重而swing组件轻量化. 3. 你可以添加一个按钮到一个框架. 答:正确 您可以将一个框架添加到面板中. 答:错误 你可以添加一个面板到一个框架.

Android图形动画基础

一.动画基础 本质 每帧绘制不同的内容. 基本过程 开始动画后,调用View的invalidate触发重绘.重绘后检查动画是否停止,若未停止则继续调用invalidate触发下一帧(下一次重绘),直到动画结束. 重绘时View的draw方法会被调用,根据动画的进行绘制不同的内容,如某个被绘制元素的大小变化.角度旋转.透明度变化等,这样即会产生动画. 动画的推进过程一般都会有一个变化量,这个变量会被用到draw方法内元素的绘制.一般的变量都是时间,也可以是手指移动.传感器等任何其他的变量. And

php图形图像处理基础

<?php /*GD库简介 GD指的是Graphic Device,php的GD库是用来处理图形的扩展库,通过GD库提供的一系列API,可以对图像进行处理或者直接生成新的图片 php除了能进行文本处理以外,通过GD库,可以对JPG.PNG.GIF.SWF等进行处理.GD库常用在图片加水印,验证码声称等方面 php默认已经生成了GD库,只需要在安装的时候开启就行了*/ header("content-type:image/png"); #新建一个画布,通过imagecreatetr

图形开发基础(3)-实际例子

实现的功能包含: 1)实现一个椭圆的按钮.可居中显示一行文本. 2)鼠标离开按钮和进入按钮时,按钮边框和背景色需要发生变化. 实现步骤: 1)新增一个用户控件库. public class UserButton:System.Windows.Forms.UserControl { } 2)定义控件属性: private Color _borderColor = Color.Blue; /// <summary> /// 按钮边框色 /// </summary> [System.Co

图形开发基础(2)

操作实例: 使用画笔和画刷: Pen myPen=new Pen(Color.Black); Graphics g=this.CreateGraphics(); g.DrawRectangle(myPen,30,30,70,50); 绘制直线: Graphics g=this.CreateGraphics(); Pen myPen=new Pen(Color.Red); g.DrawLine(myPen,130,30,70,50);

【JAVA语言程序设计基础篇】--图形用户界面基础--练习

exercise12_1 练习FLowLayout package chapter12; import java.awt.FlowLayout; import javax.swing.JFrame; import javax.swing.JButton; import javax.swing.JPanel; @SuppressWarnings("serial") public class exercise12_1 extends JFrame{ public exercise12_1(

【学习笔记】3D图形核心基础精炼版-12:stage3D实战-动态阴影 shadow mapping 和范例工程4

目的: 物体投影在另一个物体身上,而另一个物体可能是平的,但大多数都是不平的多边形物体,这里考虑的是后者,这样可以适用于大多数场合的投影. 预览效果: 原理: 这里使用的是shadow mapping方式,其原理如下: 1.将场景的深度值预先渲染到 以光源位置为原点.光线发射方向为观察方向的投影坐标系中,形成深度纹理. 2.再次渲染场景的过程中,将每个片断(像素)变换到前述眼坐标系中,并缩放到[0,1]的范围内以便查询纹理. 3.以较暗的光照绘制场景 4.以当前片断在眼坐标中的S.T坐标查询深度

图形基础

图形基础 壹佰软件开发小组  整理编译   图形设备接口(GDI:Graphics Device Interface)是Windows的子系统,它负责在视讯显示器和打印机上显示图形.正如您所认为的那样,GDI是Windows非常重要的部分.不只您为Windows编写的应用系统在显示视觉信息时使用GDI,就连Windows本身也使用GDI来显示使用者接口对象,诸如菜单.滚动条.图标和鼠标光标. 不幸的是,如果要对GDI进行全面的讲述,将需要一整本书-当然不是这本书.在本章中,我只是想向您提供画线和

使用Raphael 画图(一) 基本图形 (javascript)

Raphael是什么? Raphael 是一个用于在网页中绘制矢量图形的 Javascript 库.它使用 SVG W3C 推荐标准和 VML 作为创建图形的基础,你可以通过 JavaScript 操作 DOM 来轻松创建出各种复杂的柱状图.饼图.曲线图等各种图表,还可以绘制任意形状的图形,可以进行图表或图像的裁剪和旋转等复杂操作. Raphaël 是跨浏览器的矢量图形库,目前支持的浏览器包括: Firefox 3.0+,Safari 3.0+,Chrome 5.0+,Opera 9.5+ 以及