数字图像处理实验程序

2023-03-05

第一篇:数字图像处理实验程序

遥感数字图像处理实验报告

遥感数字图像处理

学院 理学院 班级 地信131 学号 姓名

编写日期:1

2015.5

▶▶作业a

1.LS8_C_20140613_022505_000000_118039_GEOTIFF_L4

2. L5118_39_19860531 ProductDescription用记事本打开,读取头文件,并填写相关信息与相应位置即可

2

3. L5118-39-19960103

4. L7118039_20050815 直接打开以_mtl为后缀的文件,该文件中包含了遥感影像的所有波段

3 5. LM212803919761127 直接打开波段,然后波段合成即可

6. s5kj297_289_10m

7. WORLDVIEW-052606622010_01

4

▶▶作业b

在ENVI中将landsat的4景影像和SPOT-5的1景的影像打开,并联动连接查看同一区域

link displays是根据象元位置来连接的,geographic link是通过地理坐标位置来连接的。

5

由上图可知,将遥感影像联动时亦可实现不同影像同一区域的快速检索,但是我们也可以看到,由于受到各方面因素的影像并不能特别精确的指在同一地方。

▶▶作业c

1.WORLDVIEW-2影像保存为jpg和TIF格式的4-3-2波段合成的假彩色图像。可用同样的方法将SPOT-5影像保存为jpg和tif格式的4-3-2波段合成的假彩色图像

6 2.为landsat的5景影像附上波段的波长,并根据波长用landsat 5的7-4-3波段,保存为jpg和tif格式影像

为波长复制后,导入影像文件各波段显示差异前后对比

转换为JPG格式后可以用看图软件直接打开

7

▶▶作业d

需要对影像进行裁剪,裁剪的基本步骤如下:

1.L5118_39_19860531裁剪前后对比

2. L5118-39-19960103裁剪前后对比

3. L7118039_20050815裁剪前后对比

4. LS8_C_20140613_022505_000000_118039_GEOTIFF_L4裁剪前后对比

▶▶

作业e

将剪裁影像,重采样成10m,重采样的操作主要如下

9

1.L5118_39_19860531重采样前后对比

2. L5118-39-19960103重采样前后对比

10

3. L7118039_20050815重采样前后对比

11

4.LS8_C_20140613_022505_000000_118039_GEOTIFF_L4重采样前后对比

12

第二篇:天津科技大学---数字图像处理实验报告

·

数字图像处理实验报告

专 业:计算机科学技术 学 号:11101110 姓 名:马艳松 提交日期:2014.6.5

实验一 数字图像的读入与显示

一.实验目的:

1.熟悉opencv的开发环境设置

2.读取一幅图像,并显示,掌握Imread, imwrite,imshow的使用

3.掌握opencv中图像的表示,及其属性的含义。 二.实验内容: 配置好visualstudio2010下opnecv开发环境

使用opencv的函数读入一幅图像,并在窗口中显示出来。

三.实验步骤: #include "stdafx.h" #include using namespace cv; using namespace std; void test1() { Mat inputImage=imread("..imageookeach.jpg",1); if(!inputImage.empty()) {

cvNamedWindow("test");

imshow("test",inputImage);

waitKey(); } else

{

cout<<"file open error!";

getchar(); } }

int _tmain(int argc, _TCHAR* argv[]) { test1(); return 0; }

四.实验心得:通过上课实验理解了opencv的配置过程。通过程序实现了图片的成象处理。

实验二 数字图像像素的访问

一.实验目的: 掌握opencv开发环境中对灰度图像及彩色图像中的像素的访问方法

理解mat数据结构

掌握opencv中对图像进行处理的基本过程。 二.实验内容: (1)打开一幅灰度图像,对其进行线性灰度变换(直线方程的参数为k, b),并显示变换前、后的图像。;调整K值,分别取>1, <1, =1, 以及-1,比较不同K值时的图像增强效果。

(2)打开一幅彩色图像,对每个像素进行访问,分别令R、G、B的值为0,查看处理后的图像,并比较原图像的差异。

重点和难点: 掌握灰度图像和彩色图像的像素的值的访问方法。 三.实验步骤: 1r)实验代码

void image1Pixel() {

double durationa,durationb,durationc; double cacStart,cacEnd;

Mat image=imread("..imageookeach.jpg",1); Mat gray(image.size().height,image.size().width,CV_8UC1,Scalar(0)); //gray=0.299R+0.587G+0.114b uchar r,g,b; float fgray; cacStart = static_cast(getTickCount()); for(int m=0;m<100;m++) for(int i=0;i

for(int j=0;j

{

b=image.at(i,j)[0];

g=image.at(i,j)[1];

r=image.at(i,j)[2];

fgray=0.299*r+0.587*g+0.114*b;

gray.at(i,j)=saturate_cast(fgray);

}

imshow("",gray);

cacEnd = static_cast(getTickCount()); durationa=(cacEnd-cacStart)/cv::getTickFrequency(); // the elapsed time in ms waitKey(); } 2)实验代码

#include "stdafx.h"

#include using namespace cv; using namespace std;

void image1Pixel() {

{

Mat inputImage=imread("..imageookeach.jpg",1); if(!inputImage.empty()) { double durationa,durationb,durationc; double cacStart,cacEnd; Mat image=imread("..imageookeach.jpg",1); Mat gray(image.size().height,image.size().width,CV_8UC1,Scalar(0)); Mat grayGB(image.size().height,image.size().width,CV_8UC3,Scalar(0)); Mat grayRB(image.size().height,image.size().width,CV_8UC3,Scalar(0)); Mat grayRG(image.size().height,image.size().width,CV_8UC3,Scalar(0)); uchar r,g,b; float fgray; cacStart = static_cast(getTickCount()); for(int m=0;m<100;m++) for(int i=0;i

for(int j=0;j

} imshow("org",image); cvNamedWindow("gray"); imshow("gray",gray); waitKey(); b=image.at(i,j)[0]; g=image.at(i,j)[1]; r=image.at(i,j)[2]; //////////////////////////// grayGB.at(i,j)[0] = b; grayGB.at(i,j)[1] = g; grayGB.at(i,j)[2] = 0; //R grayRB.at(i,j)[0] = b; grayRB.at(i,j)[1] = 0;// G grayRB.at(i,j)[2] = r; grayRG.at(i,j)[0] = 0; //B grayRG.at(i,j)[1] = g; grayRG.at(i,j)[2] = r; //////////////////////////// fgray=0.299*r+0.587*g+0.114*b; gray.at(i,j)=saturate_cast(fgray); cvNamedWindow("org"); cacEnd = static_cast(getTickCount()); durationa=(cacEnd-cacStart)/cv::getTickFrequency(); } void test1()

}

} cvNamedWindow("test"); imshow("test",inputImage); waitKey(); else {

} cout<<"file open error!"; getchar(); int _tmain(int argc, _TCHAR* argv[]) {

}

image1Pixel(); test1(); return 0; 心得体会:通过本次试验,我了解并大致掌握灰度图像和彩色图像的像素的值的访问方法。由于之前很少练习这方面的内容,试验过程中遇到了一些问题,好在在别人的帮助下和向别人咨询终于了解了这方面知识的大致框架和原理。由此更坚定了我学习下去的信心和动力!

实验三 图像的平滑

一.实验目的: 掌握opencv开发环境中对灰度图像及彩色图像中的像素的访问方法

掌握opencv中对图像进行处理的基本过程。

掌握均值平滑和中值滤波的基本原理

二.实验内容: (1)打开一幅灰度图像,对图像进行3*3(包括中心点)的邻域平均处理。

(2)对原图进行3*3(包括中心点)的中值滤波处理。

(3)比较原图像与邻域平均的图像、中值滤波后的图像的差异

三.实验步骤: 1)中值滤波处理

for(int i=1;i

{

for(int j=1;j

{

int

imshow("中值滤波",gray);

cacEnd = static_cast(getTickCount()); durationa=(cacEnd-cacStart)/cv::getTickFrequency(); waitKey(); } int GetMidNum(int n[]) {

for (int i=0;i<9;i++)

for(int j = 0 ;j<8;j++)

{

if (n[j]>n[j+1])

{

int temp ;

temp = n[j+1];

n[j+1] = n[j];

n[j]= temp;

}

}

return n[4]; }

void test4_4() { int count[256];//存放各个像素值对应的个数

float hist[256],sumHist[256]; uchar grayHist[256]; for (int i=0;i<256;i++) {

count[i]=0;

hist[i]=0; a[9]={gray.at(i-1,j),gray.at(i,j),gray.at(i+1,j),

gray.at(i-1,j-j),gray.at(i,j-1),gray.at(i+1,j-1)

+gray.at(i-1,j+1),gray.at(i,j+1),gray.at(i+1,j+1)};

gray.at(i,j)=GetMidNum(a);

}

}

} int _tmain(int argc, _TCHAR* argv[]) { image1Pixel(); //Test3();

//test4_4(); return 0; }

2)邻域平均

void image1Pixel() sumHist[i]=0; grayHist[i]=0; } Mat image=imread("..imageookeach.jpg",0); for(int i=0;i(i); for(int j=0;j

count[data[j]]++; } } for(int i=0;i<256;i++) hist[i]=((float)count[i])/(image.size().height*image.size().width); sumHist[0]=hist[0]; for(int i=1;i<256;i++) sumHist[i]=sumHist[i-1]+hist[i]; for(int i=0;i<256;i++) grayHist[i]=saturate_cast(sumHist[i]*255); Mat gray(image.size().height,image.size().width,CV_8UC1,Scalar(0)); for(int i=0;i(i); uchar* grayData=gray.ptr(i); for(int j=0;j

grayData[j]=grayHist[data[j]]; } } cvNamedWindow("tset"); imshow("org",image); cvNamedWindow("hist"); imshow("hist",gray); waitKey(); {

double durationa,durationb,durationc; double cacStart,cacEnd;

Mat image=imread("..imageookeach.jpg",1); Mat gray(image.size().height,image.size().width,CV_8UC1,Scalar(0)); //gray=0.299R+0.587G+0.114b uchar r,g,b; float fgray; cacStart = static_cast(getTickCount()); for(int m=0;m<100;m++) for(int i=0;i

for(int j=0;j

{

b=image.at(i,j)[0];

g=image.at(i,j)[1];

r=image.at(i,j)[2];

fgray=0.299*r+0.587*g+0.114*b;

gray.at(i,j)=saturate_cast(fgray);

}

imshow("",gray);

cacEnd = static_cast(getTickCount()); durationa=(cacEnd-cacStart)/cv::getTickFrequency(); // the elapsed time in ms waitKey(); }

void Test3() {

int GetMidNum(int n[]); double durationa,durationb,durationc; double cacStart,cacEnd;

Mat image=imread("..imageookeach.jpg",1); Mat gray(image.size().height,image.size().width,CV_8UC1,Scalar(0)); Mat grayGB(image.size().height,image.size().width,CV_8UC3,Scalar(0)); Mat grayRB(image.size().height,image.size().width,CV_8UC3,Scalar(0)); Mat grayRG(image.size().height,image.size().width,CV_8UC3,Scalar(0)); //gray=0.299R+0.587G+0.114b uchar r,g,b; float fgray; cacStart = static_cast(getTickCount()); for(int m=0;m<100;m++)

for(int i=0;i

b=image.at(i,j)[0];

g=image.at(i,j)[1];

r=image.at(i,j)[2];

}

实验心得:通过这次试验,我明白了,平滑技术用于平滑图像的噪声,平滑噪声可以在空间域中进行,基本方法是求像素灰度的平均值或中值。但是这些很容易引起边缘的模糊,常用的有均值滤波、中值滤波,在使用时,针对不同的噪声,也需要不同的滤波法,没有哪种方法是绝对好,必须具体情况具体分析。 最后比较三种平滑效果,八点平滑最好,说明对高斯噪声平滑滤波效果较好。中值滤波基本把椒盐噪声都滤去了,说明中值滤波对椒盐噪声平滑效果比高斯噪声好。

fgray=0.299*r+0.587*g+0.114*b;

gray.at(i,j)=saturate_cast(fgray); } imshow("原图",gray); for(int i=1;i

for(int j=1;j

{

gray.at(i,j)= (gray.at(i-1,j)+gray.at(i,j)+gray.at(i+1,j)+

gray.at(i-1,j-j)+gray.at(i,j-1)+gray.at(i+1,j-1)

+gray.at(i-1,j+1)+gray.at(i,j+1)+gray.at(i+1,j+1))/9;

}

imshow("邻域平均",gray); 实验四 图像的直方图均衡化

一.实验目的: 掌握直方图均衡化的基本步骤及实现方法

掌握opencv中对图像进行处理的基本过程。

二.实验内容: (1)打开一幅灰度图像,对图像进行直方图均衡化处理。

(2)比较原图像与均衡化的图像的差异。

(3)要求自己按照课本介绍的均衡化的步骤在opencv下实现直方图均衡化处理。

三.实验步骤:void test1() { Mat inputImage=imread("..imageookeach.jpg",1);

if(!inputImage.empty()) {

cvNamedWindow("test");

imshow("test",inputImage);

waitKey(); } else

{

cout<<"file open error!";

getchar(); } } void test4() { int count[256]; float hist[256],sumHist[256]; uchar grayHist[256];

for (int i=0;i<256;i++) {

count[i]=0;

hist[i]=0;

sumHist[i]=0;

grayHist[i]=0; }

Mat image=imread("..imageookeach.jpg",0);

for(int i=0;i

uchar* data=image.ptr(i);

for(int j=0;j

{

count[data[j]]++;

} } for(int i=0;i<256;i++)

hist[i]=((float)count[i])/(image.size().height*image.size().width); sumHist[0]=hist[0]; for(int i=1;i<256;i++)

sumHist[i]=sumHist[i-1]+hist[i]; for(int i=0;i<256;i++)

grayHist[i]=saturate_cast(sumHist[i]*255);

Mat gray(image.size().height,image.size().width,CV_8UC1,Scalar(0));

for(int i=0;i

uchar* data=image.ptr(i);

uchar* grayData=gray.ptr(i);

for(int j=0;j

{

grayData[j]=grayHist[data[j]];

} }

cvNamedWindow("org");

imshow("org",image);

cvNamedWindow("hist");

imshow("hist",gray);

waitKey();

} int _tmain(int argc, _TCHAR* argv[]) { //test1(); test4(); return 0; }

四.实验心得:通过这次的实验,我明白了直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。

第三篇:数字信号处理实验讲稿

邯 郸 学 院

讲 稿

2010 ~2011 学年 第 一 学期

分院(系、部): 信息工程学院 教 研 室: 电子信息工程 课 程 名 称: 数字信号处理

授 课 班 级: 07级电子信息工程

主 讲 教 师: 王苗苗 职

称:

助教(研究生)

使 用 教 材: 《数字信号处理》

制 作 系 统:

Word2003

邯郸学院制

实验一.. Matlab仿真软件介绍

一、实验目的

熟悉Matlab仿真软件

二、实验设备和元器件

含Matlab仿真软件的计算机

三、实验内容和步骤

1、学习Matlab仿真软件的安装

2、熟悉Matlab仿真软件的操作环境

3、直接在Matlab仿真软件的命令窗口实现数值计算

4、编写M文件

四、实验报告要求

按照《Matlab程序设计》模板提交实验报告

五、预习要求

1、熟悉Matlab仿真软件

2、参阅Matlab及在电子信息类课程中的应用(第2版)唐向宏 电子工业出版社

实验二 离散信号和系统分析的Matlab实现

一、实验目的

1、Matlab实现离散信号和系统分析

2、进一步熟悉Matlab软件操作

二、实验设备和元器件

含Matlab仿真软件的计算机

三、实验内容和步骤

1、利用Matlab产生离散信号

2、利用Matlab计算离散卷积

3、利用Matlab求解离散LTI系统响应

4、利用Matlab计算DTFT

5、利用Matlab实现部分分式法

6、利用Matlab计算系统的零极点

7、利用Matlab进行简单数字滤波器设计

四、实验报告要求

按照《Matlab程序设计》模板提交实验报告

五、预习要求

预习课本上的相关内容

实验三 利用Matlab实现信号DFT的计算

一、实验目的

1、Matlab实现信号DFT的计算

2、进一步熟悉Matlab软件操作

二、实验设备和元器件

含Matlab仿真软件的计算机

三、实验内容和步骤

1、利用Matlab计算信号的DFT

2、利用Matlab实现由DFT计算线性卷积

四、实验报告要求

按照《Matlab程序设计》模板提交实验报告

五、预习要求

预习课本上的相关内容

实验四 利用Matlab实现滤波器设计

一、实验目的

1、Matlab实现实现滤波器设计

2、进一步熟悉Matlab软件操作

二、实验设备和元器件

含Matlab仿真软件的计算机

三、实验内容和步骤

1、 利用Matlab实现模拟低通滤波器的设计

2、 利用Matlab实现模拟域频率变换

3、 利用Matlab实现脉冲响应不变法

4、 利用Matlab实现双线性变换法

5、 利用Matlab实现数字滤波器设计

四、实验报告要求

按照《Matlab程序设计》模板提交实验报告

五、预习要求

预习课本上的相关内容

实验五 利用Matlab实现FIR滤波器设计

一、实验目的

1、Matlab实现实现滤波器设计

2、进一步熟悉Matlab软件操作

二、实验设备和元器件

含Matlab仿真软件的计算机

三、实验内容和步骤

1、利用Matlab实现窗函数法

2、利用Matlab实现频率取样法

3、利用Matlab实现优化设计

四、实验报告要求

按照《Matlab程序设计》模板提交实验报告

五、预习要求

预习课本上的相关内容

实验六.. 随机信号功率谱估计的Matlab实现

一、实验目的

1、Matlab实现实现滤波器设计

2、进一步熟悉Matlab软件操作

二、实验设备和元器件

含Matlab仿真软件的计算机

三、实验内容和步骤

1、利用Matlab实现随机序列

2、利用Matlab计算相关函数的估计

3、利用Matlab进行非参数功率谱估计

4、利用Matlab进行AR模型功率谱估计

四、实验报告要求

按照《Matlab程序设计》模板提交实验报告

五、预习要求

预习课本上的相关内容

实验七.. 数字滤波器结构的Matlab实现

一、实验目的

1、Matlab实现实现滤波器设计

2、进一步熟悉Matlab软件操作

二、实验设备和元器件

含Matlab仿真软件的计算机

三、实验内容和步骤

1、利用Matlab实现数字滤波器直接型设计

2、利用Matlab实现数字滤波器级联设计

3、利用Matlab实现数字滤波器并联型设计

4、利用Matlab实现数字滤波器格型设计

四、实验报告要求

按照《Matlab程序设计》模板提交实验报告

五、预习要求

预习课本上的相关内容

实验八.... 利用Matlab实现信号小波分析

一、实验目的

1、Matlab实现实现滤波器设计

2、进一步熟悉Matlab软件操作

二、实验设备和元器件

含Matlab仿真软件的计算机

三、实验内容和步骤

1、小波测试信号

2、分解与重构滤波器组

3、离散小波变换

4、离散小波反变换

5、基于小波的信号去噪

6、基于小波的信号压缩

四、实验报告要求

按照《Matlab程序设计》模板提交实验报告

五、预习要求

预习课本上的相关内容

第四篇:数字信号处理实验-FFT的实现

学生姓名:

学 号:

指导教师:

一、实验室名称:数字信号处理实验室

二、实验项目名称:FFT的实现

三、实验原理:

一.FFT算法思想:

1.DFT的定义:

对于有限长离散数字信号{x[n]},0  n  N-1,其离散谱{x[k]}可以由离散付氏变换(DFT)求得。DFT的定义为:

N1X[k]通常令ej2Nx[n]en0j2Nnk,k=0,1,…N-1 WN,称为旋转因子。

2.直接计算DFT的问题及FFT的基本思想:

由DFT的定义可以看出,在x[n]为复数序列的情况下,完全直接运算N点DFT需要(N-1)2次复数乘法和N(N-1)次加法。因此,对于一些相当大的N值(如1024)来说,直接计算它的DFT所作的计算量是很大的。

FFT的基本思想在于,将原有的N点序列分成两个较短的序列,这些序列的DFT可以很简单的组合起来得到原序列的DFT。例如,若N为偶数,将原有的N

22点序列分成两个(N/2)点序列,那么计算N点DFT将只需要约[(N/2) ·2]=N/2次复数乘法。即比直接计算少作一半乘法。因子(N/2)2表示直接计算(N/2)点DFT所需要的乘法次数,而乘数2代表必须完成两个DFT。上述处理方法可以反复使用,即(N/2)点的DFT计算也可以化成两个(N/4)点的DFT(假定N/2为偶数),从而又少作一半的乘法。这样一级一级的划分下去一直到最后就划分成两点的FFT运算的情况。

3.基2按时间抽取(DIT)的FFT算法思想:

设序列长度为N2L,L为整数(如果序列长度不满足此条件,通过在后面补零让其满足)。

将长度为N2L的序列x[n](n0,1,...,N1),先按n的奇偶分成两组:

x[2r]x1[r]x[2r1]x2[r],r=0,1,…,N/2-1 DFT化为:

N1N/21N/21X[k]DFT{x[n]}N/21n0x[n]WnkN2rkr0x[2r]W2rkNr0x[2r1]WN(2r1)kN/21r0N/21x1[r]Wx1[r]W2rkNWWkNr0N/21x2[r]WN

r0rkN/2kNr0x2[r]WN/22rkrk上式中利用了旋转因子的可约性,即:WNN/21NrkN/21rkWN/2。又令

rkX1[k]r0x[1r]W,/X2[k]2r0x[r]WN2,则上式可以写成: /2X[k]X1[k]WNX2[k](k=0,1,…,N/2-1)

k可以看出,X1[k],X2[k]分别为从X[k]中取出的N/2点偶数点和奇数点序列的N/2点DFT值,所以,一个N点序列的DFT可以用两个N/2点序列的DFT组合而成。但是,从上式可以看出,这样的组合仅表示出了X[k]前N/2点的DFT值,还需要继续利用X1[k],X2[k]表示X[k]的后半段本算法推导才完整。利用旋转因子的周期性,有:WN/2WN/2X1[N2N/21rkr(kN/2),则后半段的DFT值表达式:

rkk]r0x1[r]W2N/2r(Nk)N/21r0x1[r]WN/2X1[k],同样,X2[N2k]X2[k]

(k=0,1,…,N/2-1),所以后半段(k=N/2,…,N-1)的DFT值可以用前半段k值表达式获得,中间还利用到WN(N2k)NWN2Wk得到后半段的X[k]值表达式W,

k为:X[k]X1[k]WNkX2[k](k=0,1,…,N/2-1)。

这样,通过计算两个N/2点序列x1[n],x2[n]的N/2点DFTX1[k],X2[k],可以组合得到N点序列的DFT值X[k],其组合过程如下图所示:

X1[k] X1[k]WNkX2[k]

X2[k] WNnk -1 X1[k]WNkX2[k]

比如,一个N = 8点的FFT运算按照这种方法来计算FFT可以用下面的流程图来表示:

x(0)W0x(1)W0x(2)W0x(3)W2W0W1W0x(5)W0x(6)W0x(7)W2X(7)W3X(6)W2X(5)X(3)X(2)X(1)X(0)x(4)X(4)

4.基2按频率抽取(DIF)的FFT算法思想:

设序列长度为N2L,L为整数(如果序列长度不满足此条件,通过在后面补零让其满足)。

在把X[k]按k的奇偶分组之前,把输入按n的顺序分成前后两半:

N1N/21nkNN1X[k]DFT{x[n]}N/21N/21x[n]Wn0(nn0N2)kx[n]WnkNnN/2x[n]WNnkn0N/21x[n]WnkNn0x[nNkN2]WNnk

Nn0[x[n]x[nN2NkN2]W2N]WN,k0,1,...,N1因为W2N1,则有WX[k](1),所以:

kkN/21n0[x[n](1)x[nN2]]WN,k0,1,...,N1

nk按k的奇偶来讨论,k为偶数时:

N/21X[2r]n0[x[n]x[nN2]]WN,k0,1,...,N1 N22rnN/21k为奇数时:X[2r1]前面已经推导过WNN/21n0[x[n]x[n]]WN(2r1)n,k0,1,...,N1

2rkWN/2,所以上面的两个等式可以写为:

N2]]WN/2,r0,1,...,N/21 N2rnrkX[2r]n0[x[n]x[nN/21X[2r1]n0{[x[n]x[n]]WN}WN/2,r0,1,...,N/21

nnr通过上面的推导,X[k]的偶数点值X[2r]和奇数点值X[2r1]分别可以由组合而成的N/2点的序列来求得,其中偶数点值X[2r]为输入x[n]的前半段和后半段之和序列的N/2点DFT值,奇数点值X[2r1]为输入x[n]的前半段和后半段之差再与WN相乘序列的N/2点DFT值。

令x1[n]x[n]x[nN/21nN2],x2[n][x[n]x[nN/21N2]]WN,则有:

nX[2r]n0x1[n]WrnN/2,X[2r1]n0x2[n]WrnN/2,r0,1,...,N21

这样,也可以用两个N/2点DFT来组合成一个N点DFT,组合过程如下图所示:

x[n] x[n]x[nN2]

x[nN2] -1 WNn [x[n]x[nN2]]WNn

二.在FFT计算中使用到的MATLAB命令:

函数fft(x)可以计算R点序列的R点DFT值;而fft(x,N)则计算R点序列的N点DFT,若R>N,则直接截取R点DFT的前N点,若R

四、实验目的:

离散傅氏变换(DFT)的目的是把信号由时域变换到频域,从而可以在频域分析处理信息,得到的结果再由逆DFT变换到时域。FFT是DFT的一种快速算法。在数字信号处理系统中,FFT作为一个非常重要的工具经常使用,甚至成为DSP运算能力的一个考核因素。

本实验通过直接计算DFT,利用FFT算法思想计算DFT,以及使用MATLAB函数中的FFT命令计算离散时间信号的频谱,以加深对离散信号的DFT变换及FFT算法的理解。

五、实验内容:

a) 计算实数序列x(n)cos516n,0n256的256点DFT。

b) 计算周期为1kHz的方波序列(占空比为50%,幅度取为+/-512,采样频率为25kHz,取256点长度) 256点DFT。

六、实验器材(设备、元器件):

安装MATLAB软件的PC机一台,DSP实验演示系统一套。

七、实验步骤:

(1) 先利用DFT定义式,编程直接计算2个要求序列的DFT值。

(2) 利用MATLAB中提供的FFT函数,计算2个要求序列的DFT值。 (3) (拓展要求)不改变序列的点数,仅改变DFT计算点数(如变为计算1024点DFT值),观察画出来的频谱与前面频谱的差别,并解释这种差别。通过这一步骤的分析,理解频谱分辨力的概念,解释如何提高频谱分辨力。

(4) 利用FFT的基本思想(基2-DIT或基2-DIF),自己编写FFT计算函数,并用该函数计算要求序列的DFT值。并对前面3个结果进行对比。

(5) (拓展要求)尝试对其他快速傅立叶变换算法(如Goertzel算法)进行MATLAB编程实现,并用它来计算要求的序列的DFT值。并与前面的结果进行对比。

(6) (拓展要求)在提供的DSP实验板上演示要求的2种序列的FFT算法(基2-DIT),用示波器观察实际计算出来的频谱结果,并与理论结果对比。

八、实验数据及结果分析:

程序: (1) 对要求的2种序列直接进行DFT计算的程序

(2) 对要求的2种序列进行基2-DIT和基2-DIF FFT算法程序 (3) 对要求的2种序列用MATLAB中提供的FFT函数进行计算的程序

结果:(1)对2种要求的序列直接进行DFT计算的频域波形

(2)对2种要求的序列进行基2-DIT和基2-DIF FFT算法频域波形 (3)对2种要求的序列用MATLAB中提供的FFT函数计算的频域波形。 (4)(拓展要求)分析利用上面的方法画出的信号频谱与理论计算出来的频谱之间的差异,并解释这种差异。

(5)(拓展要求)保持序列点数不变,改变DFT计算点数(变为1024点),观察频谱的变化,并分析这种变化,由此讨论如何提高频谱分辨力的问题。

九、实验结论:

十、总结及心得体会:

十一、对本实验过程及方法、手段的改进建议:

第五篇:数字图像处理心得

数字图像处理&视频处理之体会

姓名:宋彦

学号:08370902

班级:1310809

在这一学期,我选修了《数字图像处理基础》这门课程,同时,老师还讲授了一些视频处理的知识。在这里,梳理一下这学期学到的知识,并提出一些我对这门课程的建议。

图像处理是指对图像信息进行加工,从而满足人类的心理、视觉或者应用的需求的一种行为。图像处理方法一般有数字法和光学法两种,其中数字法的优势很明显,已经被应用到了很多领域中,相信随着科学技术的发展,其应用空间将会更加广泛。数字图像处理又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。数字图像处理是从20世纪60年代以来随着计算机技术和VLSL的发展而产生、发展和不断成熟起来的一个新兴技术领域。数字图像处理技术其实就是利用各种数字硬件与计算机,对图像信息通过转换而得到的电信号进行相应的数学运算,例如图像去噪、图像分割、提取特征、图像增强、图像复原等,以便提高图像的实用性。其特点是处理精度比较高,并且能够对处理软件进行改进来优化处理效果,操作比较方便,但是由于数字图像需要处理的数据量一般很大,因此处理速度有待提高。目前,随着计算机技术的不断发展,计算机的运算速度得到了很大程度的提高。在短短的历史中,它却广泛应用于几乎所有与成像有关的领域,在理论上和实际应用上都取得了巨大的成就。

1. 数字图像处理需用到的关键技术

由于数字图像处理的方便性和灵活性,因此数字图像处理技术已经成为了图像处理领域中的主流。数字图像处理技术主要涉及到的关键技术有:图像的采集与数字化、图像的编码、图像的增强、图像恢复、图像分割、图像分析等。

图像的采集与数字化:就是通过量化和取样将一个自然图像转换为计算机能够处理的数字形式。

图像编码:图像编码的目的主要是来压缩图像的信息量,以便能够满足存储和传输的要求。

图像的增强:图像的增强其主要目的是使图像变得清晰或者将其变换为机器能够很容易分析的形式,图像增强方法一般有:直方图处理、灰度等级、伪彩色处理、边缘锐化、干扰抵制。

图像的恢复:图像恢复的目的是减少或除去在获得图像的过程中因为各种原因而产生的退化,可能是由于光学系统的离焦或像差、被摄物与摄像系统两者之间的相对运动、光学或电子系统的噪声与介于被摄像物跟摄像系统之间的大气湍流等等。

图像的分割:图像分割是将图像划分为一些互相不重叠的区域,其中每一个区域都是像素的一个连续集,通常采用区域法或者寻求区域边界的境界法。

图像分析:图像分析是指从图像中抽取某些有用的信息、数据或度量,其目的主要是想得到某种数值结果。图像分析的内容跟人工智能、模式识别的研究领域有一定的交叉。

2. 数字图像处理的特点

数字图像处理的特点主要表现在以下几个方面:

1) 数字图像处理的信息大多是二维信息,处理信息量很大。因此对计算机的计算速度、存

储容量等要求较高。

2) 数字图像处理占用的频带较宽。与语言信息相比,占用的频带要大几个数量级。所以在成

像、传输、存储、处理、显示等各个环节的实现上技术难度较大,成本亦高。这就对频带压缩技术提出了更高的要求。

3) 数字图像中各个像素不是独立的,其相关性大。在图像画面上,经常有很多像素有相同

或接近的灰度。所以,图像处理中信息压缩的潜力很大。

4) 数字图像处理后的图像受人的因素影响较大,因为图像一般是给人观察和评价的。

3. 数字图像处理的优点

数字图像处理的优点主要表现在4个方面。

1) 再现性好。数字图像处理与模拟图像处理的根本不同在于它不会因图像的存储、传输或

复制等一系列变换操作而导致图像质量的退化。只要图像在数字化时准确地表现了原稿,那么数字图像处理过程始终能保持图像的再现。

2) 处理精度高。将一幅模拟图像数字化为任意大小的二维数组,主要取决于图像数字化设

备的能力。

3) 适用面宽。图像可以来自多种信息源,它们可以是可见光图像,也可以是不可见的波谱图

像。只要针对不同的图像信息源,采取相应的图像信息采集措施,图像的数字处理方法适用于任何一种图像。

4) 灵活性高。图像处理大体上可分为图像的像质改善、图像分析和图像重建三大部分,每

一部分均包含丰富的内容。

4. 数字图像处理的应用领域

图像是人类获取和交换信息的主要来源,因此,图像处理的应用领域必然涉及到人类生活和工作的方方面面,随着人类活动范围的不断扩大,图像处理的应用领域也将随之不断扩大。

航天和航空技术:在飞机遥感和卫星遥感技术中用配备有高级计算机的图像处理系统来判读分析,既节省人力又加快了速度,还可以从照片中提取人工所不能发现的大量有用情报。 生物医学工程:除了CT技术之外,还有对医用显微图像的处理分析,如红细胞、白细胞分类,染色体分析,癌细胞识别等。

通信工程:当前通信的主要发展方向是声音、文字、图像和数据结合的多媒体通信。在一定意义上讲,编码压缩是这些技术成败的关键。除了已应用较广泛的熵编码、DPCM编码、变换编码外,目前国内外正在大力开发研究新的编码方法,如分行编码、自适应网络编码、小波变换图像压缩编码等。

工业和工程领域:图像处理技术有着广泛的应用,如自动装配线中检测零件的质量并对零件进行分类,印刷电路板疵病检查,弹性力学照片的应力分析,流体力学图片的阻力和升力分析,邮政信件的自动分拣,在一些有毒、放射性环境内识别工件及物体的形状和排列状态,先进的设计和制造技术中采用工业视觉等等。

军事方面:图像处理和识别主要用于导弹的精确末制导,各种侦察照片的判读,具有图像传输、存储和显示的军事自动化指挥系统,飞机、坦克和军舰模拟训练系统等;公安业务图片的判读分析,指纹识别,人脸鉴别,不完整图片的复原,以及交通监控、事故分析等。 文化艺术:电视画面的数字编辑、动画的制作、电子图像游戏、纺织工艺品设计、服装设计与制作、发型设计、文物资料照片的复制和修复、运动员动作分析和评分等等。

视频和多媒体系统:电视制作系统广泛使用的图像处理、变换、合成,多媒体系统中静止图像和动态图像的采集、压缩、处理、存贮和传输等。

电子商务:图像处理技术在电子商务中也大有可为,如身份认证、产品防伪、水印技术等。

在这门课程的最后,代课老师给我们讲授了数字视频处理,让我们了解到数字视频就是以数字形式记录的视频,和模拟视频相对的。数字视频有不同的产生方式,存储方式和播出方式。比如通过数字摄像机直接产生数字视频信号,存储在数字带,P2卡,蓝光盘或者磁盘上,从而得到不同格式的数字视频。然后通过PC,特定的播放器等播放出来。了解了数字视频发展过程和视频压缩的概念和分类等。

我们这门课程主要是上理论课,其中有很复杂的数学原理,专业术语多,基础知识要求高,理解起来有些困难。当初选择这门课是希望能有一些具体软件的教学。就我了解,视频处理的软件有MAYA、Premiere、绘声绘影、windows自带的MOVE MAKER;处理数字图像的软件主要有matlaB、photoshop、ImageJ(java图像处理程序)。其中,matlaB和PS

很具有教学性,这两个软件也运用的很广。

MATLAB全称是MatrixLaboratory(矩阵实验室),一开始它是一种专门用于矩阵数值计算的软件,从这一点上也可以看出,它在矩阵运算上有自己独特的特点。实际运用中MATLAB中的绝大多数的运算都是通过矩阵这一形式进行的,这一特点决定了MATLAB在处理数字图像上的独特优势。理论上讲,图像是一种二维的连续函数,然而计算机对图像进行数字处理时,首先必须对其在空间和亮度上进行数字化,这就是图像的采样和量化的过程。

Photoshop是Adobe公司旗下最为出名的图像处理软件之一,集图像扫描、编辑修改、图像制作、广告创意,图像输入与输出于一体的图形图像处理软件,深受广大平面设计人员和电脑美术爱好者的喜爱。

如果能理论和实践相结合,相信我们会把数字图像处理理解的跟透彻,同时也锻炼了大家的动手能力。希望老师能考虑我的这点建议,多开设实际动手的课程。

上一篇:市政协副主席述职报告下一篇:泰安鲁润股份有限公司