




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三、图像的傅立叶变换一、实验目的1了解图像变换的意义和手段;2熟悉傅里叶变换的基本性质;3熟练掌握FFT的方法及应用;4通过实验了解二维频谱的分布特点;5通过本实验掌握编程实现数字图像的傅立叶变换。二、实验原理1应用傅立叶变换进行图像处理傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。通过实验培养这项技能,将有助于解决大多数图像处理问题。对任何想在工作中有效应用数字图像处理技术的人来说,把时间用在学习和掌握博里叶变换上是很有必要的。2傅立叶(Fourier)变换的定义对于二维信号,二维Fourier变换定义为:二维离散傅立叶变换为:图像的傅立叶变换与一维信号的傅立叶变换变换一样,有快速算法,具体参见参考书目,有关傅立叶变换的快速算法的程序不难找到。实际上,现在有实现傅立叶变换的芯片,可以实时实现傅立叶变换。三、实验内容1.根据二维离散Fourier变换的定义编写程序2.实现图象的变换3.画出图象的频谱图。2提交实验的原始图像和结果图像。3报告内容主要是将原理与实验现象相结合,利用原理简要解释观察到的现象。六、思考题1傅里叶变换有哪些重要的性质?2图像的二维频谱在显示和处理时应注意什么?1. 源程序:/ MyDIPView.cpp : implementation of the CMyDIPView class/#include stdafx.h#include MyDIP.h#include MyDIPDoc.h#include MyDIPView.h#include math.h#includeusing namespace std;#define PI 3.14159#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/* * * 函数名称: * FFT() * * 参数: * complex * TD- 指向时域数组的指针 * complex * FD- 指向频域数组的指针 * r2的幂数,即迭代次数 * * 返回值: * 无。 * * 说明: * 该函数用来实现快速付立叶变换。 * */VOID WINAPI FFT(complex * TD, complex * FD, int r)/ 付立叶变换点数LONGcount;/ 循环变量inti,j,k;/ 中间变量intbfsize,p;/ 角度doubleangle;complex *W,*X1,*X2,*X;/ 计算付立叶变换点数count = 1 r;/ 分配运算所需存储器W = new complexcount / 2;X1 = new complexcount;X2 = new complexcount;/ 计算加权系数for(i = 0; i count / 2; i+)angle = -i * PI * 2 / count;Wi = complex (cos(angle), sin(angle);/ 将时域点写入X1memcpy(X1, TD, sizeof(complex) * count);/ 采用蝶形算法进行快速付立叶变换for(k = 0; k r; k+)for(j = 0; j 1 k; j+)bfsize = 1 (r-k);for(i = 0; i bfsize / 2; i+)p = j * bfsize;X2i + p = X1i + p + X1i + p + bfsize / 2;X2i + p + bfsize / 2 = (X1i + p - X1i + p + bfsize / 2) * Wi * (1k);X = X1;X1 = X2;X2 = X;/ 重新排序for(j = 0; j count; j+)p = 0;for(i = 0; i r; i+)if (j&(1i)p+=1(r-i-1);FDj=X1p;/ 释放内存delete W;delete X1;delete X2;/* * * 函数名称: * Fourier() * * 参数: * LPSTR lpDIBBits - 指向源DIB图像指针 * LONG lWidth - 源图像宽度(象素数) * LONG lHeight - 源图像高度(象素数) * * 返回值: * BOOL - 成功返回TRUE,否则返回FALSE。 * * 说明: * 该函数用来对图像进行付立叶变换。 * BOOL WINAPI Fourier(LPSTR lpDIBBits, LONG lWidth, LONG lHeight)/ 指向源图像的指针unsigned char*lpSrc;/ 中间变量doubledTemp;/ 循环变量LONGi;LONGj;/ 进行付立叶变换的宽度和高度(2的整数次方)LONGw;LONGh;intwp;inthp;/ 图像每行的字节数LONGlLineBytes;/ 计算图像每行的字节数lLineBytes = WIDTHBYTES(lWidth * 8);/ 赋初值w = 1;h = 1;wp = 0;hp = 0;/ 计算进行付立叶变换的宽度和高度(2的整数次方)while(w * 2 = lWidth)w *= 2;wp+;while(h * 2 = lHeight)h *= 2;hp+;/ 分配内存complex *TD = new complexw * h;complex *FD = new complexw * h;/ 行for(i = 0; i h; i+)/ 列for(j = 0; j w; j+)/ 指向DIB第i行,第j个象素的指针lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;/ 给时域赋值TDj + w * i = complex(*(lpSrc), 0);for(i = 0; i h; i+)/ 对y方向进行快速付立叶变换FFT(&TDw * i, &FDw * i, wp);/ 保存变换结果for(i = 0; i h; i+)for(j = 0; j w; j+)TDi + h * j = FDj + w * i;for(i = 0; i w; i+)/ 对x方向进行快速付立叶变换FFT(&TDi * h, &FDi * h, hp);/ 行for(i = 0; i h; i+)/ 列for(j = 0; j 255)/ 对于超过的,直接设置为255dTemp = 255;/ 指向DIB第(ih/2 ? i+h/2 : i-h/2)行,第(jw/2 ? j+w/2 : j-w/2)个象素的指针/ 此处不直接取i和j,是为了将变换后的原点移到中心/lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - (ih/2 ? i+h/2 : i-h/2) + (jm_hDIB = NULL)return ;/ TODO: add draw code for native data hereint i,j; unsigned char *lpSrc;LPSTR lpDIB = (LPSTR) :GlobalLock(HGLOBAL) pDoc-m_hDIB);int cxDIB = (int) :DIBWidth(lpDIB); / Size of DIB - xint cyDIB = (int) :DIBHeight(lpDIB); / Size of DIB - yLPSTR lpDIBBits=:FindDIBBits (lpDIB);/ 计算图像每行的字节数long lLineBytes = WIDTHBYTES(cxDIB * 8);/ 每行for(i = 0; i cyDIB; i+)/ 每列for(j = 0; j m_hDIB);CRect rect(0,0,cxDIB,cyDIB), rcDIB(0,0,cxDIB,cyDIB);:PaintDIB(pDC-m_hDC, &rect, pDoc-m_hDIB, &rcDIB, pDoc-m_palDIB);/ CMyDIPView printingBOOL CMyDIPView:OnPreparePrinting(CPrintInfo* pInfo)/ default preparationreturn DoPreparePrinting(pInfo);void CMyDIPView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add extra initialization before printingvoid CMyDIPView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add cleanup after printing/ CMyDIPView diagnostics#ifdef _DEBUGvoid CMyDIPView:AssertValid() constCScrollView:AssertValid();void CMyDIPView:Dump(CDumpContext& dc) constCScrollView:Dump(dc);CMyDIPDoc* CMyDIPView:GetDocument() / non-debug version is inlineASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CMyDIPDoc);return (CMyDIPDoc*)m_pDocument;#endif /_DEBUGvoid CMyDIPView:OnMenuitem32778() / 图像付立叶变换/ 获取文档CMyDIPDoc* pDoc = GetDocument();/ 指向DIB的指针LPSTRlpDIB;/ 指向DIB象素指针LPSTR lpDIBBits;/ 锁定DIBlpDIB = (LPSTR) :GlobalLock(HGLOBAL) pDoc-GetHDIB();/ 找到DIB图像象素起始位置lpDIBBits = :FindDIBBits(lpDIB);/ 判断是否是8-bpp位图(这里为了方便,只处理8-bpp位图的付立叶变换,其它的可以类推)if (:DIBNumColors(lpDIB) != 256)/ 提示用户MessageBox(目前只支持256色位图的付立叶变换!, 系统提示 ,MB_ICONINFORMATION | MB_OK);/ 解除锁定:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();/ 返回return;/ 更改光标形状BeginWaitCursor();/ 调用Fourier()函数进行付立叶变换if (:Fourier(lpDIBBits, :DIBWidth(lpDIB), :DIBHeight(lpDIB)/ 设置脏标记pDoc-SetModifiedFlag(TRUE);/ 更新视图pDoc-UpdateAllViews(NULL);else/ 提示用户MessageBox(分配内存失败!, 系统提示 , MB_ICONINFORMATION | MB_OK);/ 解除锁定:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();/ 恢复光标EndWaitCursor();2.程序运行结果截图实验原始图像:一次傅里叶变换第二次傅里叶变换第三次傅里叶变换3.傅立叶变换的性质及意义傅立叶变换是数字信号处理领域一种很重要的算法。要知道傅立叶变换算法的意义,首先要了解傅立叶原理的意义。傅立叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。而根据该原理创立的傅立叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位。图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低;而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧烈的区域,对应的频率值较高。傅立叶变换在实际中有非常明显的物理意义,设f是一个能量有限的模拟信号,则其傅立叶变换就表示f的谱。从纯粹的数学意义上看,傅立叶变换是将一个函数转换为一系列周期函数来处理的。从物理效果看,傅立叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。换句话说,傅立叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数,傅立叶逆变换是将图像的频率分布函数变换为灰度分布函数。另外:1、图像经过二维傅立叶变换后,其变换系数矩阵表明: 若变换矩阵Fn原点设在中心,其频谱能量集中分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保育员个人发言稿
- 春节生产安全培训
- 食品卫生安全培训
- 2025版医疗机构药品研发保密协议范本
- 二零二五年度智慧社区建设项目内部承包施工合同
- 二零二五年度个人网络直播合作协议
- 2025版建筑工程施工安全教育培训合同
- 二零二五年度网络安全风险评估与检测协议
- 2025版离婚协议书:无子女财产分配与分割
- 二零二五版劳动合同法修订后企业应对策略合同
- 高速天桥拆除方案(3篇)
- 手外伤急救诊疗流程标准化
- 农村土地托管培训课件
- 老年专科护士学习培训汇报
- 2025年机关事业单位工人招聘《机动车驾驶员》技师-考试题库与参考答案
- 2025年机械设备安装工试卷及答案
- 基孔肯雅热防控培训课件
- 老旧小区改造知识课件
- 2025年广东省工业和信息化厅下属事业单位招聘考试笔试试题(含答案)
- 灯具户外知识培训课件
- 公司岗位补助管理办法
评论
0/150
提交评论