数字图像处理 下载本文

数字图像处理论文

学生姓名:

学 号:

学 院: 信息学部 专 业: 计算机技术

2016年11月

前言

本论文的编写围绕四个项目:图像空域/时域变换、图像增强、染色体计数与提取Mnist链码组成。项目的编写基于Windows 7 操作系统,使用VS2013作为开发环境,以OpenCV作为内部核心处理算法库。项目的最终组成结构为:

在此,我们不再说明OpenCV的配置环境的搭建,而是直接展示项目的核心代码以及所使用到的知识。

题目一

1) 将宽为2n的正方形图像,用FFT算法从空域变换到频域,并用频域图像的模来进行显

示。

2) 使图像能量中心,对应到几何中心,并用频域图像的模来进行显示。 3) 将频域图象,通过FFT逆变换到空域,并显示。 解决方案:

我们在一个项目中完成以上三个步骤。

#include #include #include usingnamespace cv; usingnamespace std; int main() {

//以灰度模式读取原始图像并显示

Mat srcImage = imread(\,0); if(srcImage.empty()) {

cout <<\打开图像失败!\<< endl; return-1; }

imshow(\原始图像\, srcImage);

//将输入图像延扩到最佳的尺寸,边界用0补充

int m = getOptimalDFTSize(srcImage.rows); int n = getOptimalDFTSize(srcImage.cols); //将添加的像素初始化为0. Mat padded;

copyMakeBorder(srcImage, padded,0, m - srcImage.rows,0, n - srcImage.cols, BORDER_CONSTANT, Scalar::all(0)); //为傅立叶变换的结果(实部和虚部)分配存储空间。

//将planes数组组合合并成一个多通道的数组complexI

Mat planes[]={ Mat_(padded), Mat::zeros(padded.size(),

CV_32F)};

Mat complexI;

merge(planes,2, complexI); //进行就地离散傅里叶变换

dft(complexI, complexI);

//将复数转换为幅值,即=> log(1 + sqrt(Re(DFT(I))^2 + Im(DFT(I))^2)) split(complexI, planes);// 将多通道数组complexI分离成几个单通道数组,