数字信号处理实验介绍

2023-03-05

第一篇:数字信号处理实验介绍

数字信号处理实验讲稿

邯 郸 学 院

讲 稿

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程序设计》模板提交实验报告

五、预习要求

预习课本上的相关内容

第二篇:数字信号实验报告(大全)

科目:

数字信号处理

姓名:

殷超宇

班级:

14060142 学号:

1406014226

实验题目:Z Z 变换及离散时间系统分析

指导教师:

张志杰

分数:

实验题目:

Z 变换及离散时间系统分析

实验目的:

1、通过本实验熟悉 Z 变换在离散时间系统分析中的地位和作用。

2、掌握并熟练使用有关离散系统分析的 MATLAB 调用函数及格式,以深入理解离散时间系统的频率特性。

实验内容:

给定系统 ) 8 .0 /( 2 .0 ) (2   z z H ,编程并绘出系统的单位阶跃响应 y(n),频率响应 ) e (jwH ,并给出实验数据与代码。

参考代码:

详见《数字信号处理上机实验指导》(班群里有)

实验代码(代码从 B MATLAB )

软件复制粘贴于此处,教师检查重点): :

clear;

x=ones(100);% x(n)=1,n=1~100;

t=1:100;% t 用于后面的绘图;

b=[0,0,-0.2]; % 形成向量 b;

a=[1,0,0.8]; % 形成向量 a;

y=filter(b,a,x);% 求所给系统的阶跃响应;

plot(t,y,"k-"); grid on;

ylabel(" y(n)")

xlabel("n")

实验数据(图像或表格复制粘贴于此处,教师检查重点):

实验心得与收获(可手写):

a,b 两个向量转化成符合的格式。这是一个震荡衰减的信号,信号越来越弱,通过实验,对 matlab 的使用,有了进一步的了解。

第三篇:《数字图像处理》实验教案

数 字 图 像 处 理

实 验 指 导 书

信息科学与工程学院电子系

二○○六年

数字图像处理是研究数字图像处理的基本理论、方法及其在智能化检测中应用的学科,是电子信息类本科专业的专业课。

本课程侧重于数字图像的基本处理,并对图像分析的基本理论和实际应用进行系统介绍;目的是使学生系统掌握数字图像处理的基本概念、原理和实现方法,学习图像分析的基本理论、典型方法和实用技术,具备解决通信领域的图像相关问题的初步能力,为今后的研究与开发打下扎实的基础。

实验一 常用的图像文件格式与格式转换和图像矩阵的显示方实验二 实验三

法 …………………………………………………………2

傅立叶变换……………………………………………………4 图像增强及编程处理…………………………………………5

实验一 常用的图像文件格式与格式转换和图像矩阵的显示方法

1. 实验目的

熟悉Matlab语言的初步使用;

熟悉常用的图像文件格式与格式转换;

熟悉图像矩阵的显示方法(灰度、索引、黑白、彩色); 熟悉图像矩阵的格式转换 2. 实验内容

练习图像读写命令imread和imwrite并进行图像文件格式间的转换。特别是索引图像与1,4,8,16比特图像的存储与转换。

熟悉下列模块函数 Image file I/O.

imread

- Read image file.

imwrite

Create and display image

imagesc

Make movie from multiframe indexed image.

imshow

- Display image.

subimage

- Display multiple images in single figure.

truesize

- Adjust display size of image.

warp

- Display image as texture-mapped surface. zoom

- Zoom in and out of image or 2-D plot. 3. 实验步骤

a. Load cameraman.tif image from your hard disk (using function imread). b. Show the image in a figure window (using function image or imshow). c. Draw a brightness bar on the right side of the image(using function colorbar). d. Get image data from the current figure(axes) (using function getimage). e. Show the gray level of the image between 64 to 128 (using function imagesc). f. Make a movie from a 4-D image (load mri, make the movie by immovie, then show movie by function movie).

object.

g. Draw the cameraman image on a cylinder (using function warp). Question: how to show the cameraman like this

Requirement: write a report to do the experiment from a to g.

实验二

傅立叶变换

1.实验目的

熟悉傅立叶变换的概念和原理; 理解Fourier变换的意义。

2.实验内容

用Fourier变换算法对图像进行Fourier变换; 评价人眼对图像幅频特性和相频特性的敏感度。

3.实验步骤

<1>产生如图所示图像f1(x,y)(128×128 大小,暗处=0,亮处=255),用MATLAB中的fft2函数对其进行FFT;

<2>同屏显示原图f1和FFT(f1)的幅度谱图;

<3>若令f2(x,y)=(-1)

xy f1(x,y),重复以上过程,比较两幅图像的幅度谱的异同,简述理由;

<4>若将f2(x,y)顺时针旋转45度得到f3(x,y),试显示FFT(f3)的幅度谱,并与FFT(f2)的幅度谱进行比较;

<5>评价人眼对图像幅频特性和相频特性的敏感度。

4. 实验报告

<1>简述实验目的及原理;

<2>给出实验代码,并加以注释; <3>对实验现象加以说明和讨论。

实验三

图像增强及编程处理

1. 实验目的

观察数字图像增强的效果; 熟悉数字图像增强的一般方法;

掌握数字图像增强的一般方法的Matlab编程实现。 2. 实验内容

使用Photoshop观察数字图像增强的效果; 练习和掌握图像增强的Matlab编程。

熟悉下列模块函数 Image enhancement.

histeq

Adust imae intensity values or colormap. Image noising. imnoise

- Add noise to an image. Image filtering

medfilt2

- Perform 2-D median filtering.

ordfilt2

Perform 2-D adaptive noise-removal filtering.

3. 实验步骤

<1> 使用Photoshop观察数字图像增强的效果 a. 对比度增强

1)在Photoshop中打开一黑白灰度图像文件。

2)在图像菜单中选直方图项,观察原始图像的直方图。

3)在图像菜单调整子菜单中选亮度/对比度项,调节对比度滑块,观察图像变化。

4)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。 b. 灰度变换

1)在Photoshop中打开一黑白灰度图像文件。

2)在图像菜单中选直方图项,观察原始图像的直方图。 3)在图像菜单调整子菜单中选反相项,观察图像变化。

4)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。 5)画出灰度变换曲线。

6)在编辑菜单中选返回项,恢复原始图像。

7)在图像菜单调整子菜单中阈值项,调节阈值色阶滑块,观察图像变化。

8)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。 9)画出灰度变换曲线。

c. 直方图均衡化

1)在Photoshop中打开一黑白灰度图像文件。

2)在图像菜单中选直方图项,观察原始图像的直方图。 3)在图像菜单调整子菜单中选色调均化项,观察图像变化。

4)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。

d. 图像平滑

1)在Photoshop中打开一黑白灰度图像文件。

2)在图像菜单中选直方图项,观察原始图像的直方图。

3)在滤镜菜单模糊子菜单中选进一步模糊项,观察图像变化。

4)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。 5)在编辑菜单中选返回项,恢复原始图像。

6)在滤镜菜单模糊子菜单中选高斯模糊项,观察图像变化。

7)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。 8)在Matlab Help菜单中, 选Demos项。

9)打开ToolboxesImage Processing项,选Noise Reduction Filtering,并运行。

10)选图像Blood、噪声类型Salt & Pepper、滤波器类型Median、邻域3x3,比较原始图像、受噪声污染图像、滤波后图像。 11)改变参数,重做(10)。

12)选其他图像,重做(10)-(11)。

13)思考何种滤波器对抑制何种类型噪声更有效,邻域大小对抑制噪声效果及图像模糊程度的影响。

<2> 图像增强的Matlab编程

a. Load cameraman.tif image from your hard disk (using function imread). b. Show the image in a figure window. c. Show the histogram of the image (using function imhist). d. Enhance the contrast of the image using histogram equalization. e. Show the histogram of the image after processing. f. Compare the qualities of two images and makes a discussion about them. g. Add noises, such as gaussian, salt&pepper, speckle noise into the image respectively. Compare with the influence of the different Means and Variance. h. Remove the added noise from the image by function medfilt2, ordfilt2 and wiener2 respectively. Compare the qualities of the original images with the processed images and discuss the effect of the methods.

Requirement:

Write a report to do the experiment . Make sure the report includes the discussion about the experiment. If the report just is a copy from others, the report will have a zero mark.

第四篇:遥感数字图像处理实验报告

遥感数字图像处理

学院 理学院 班级 地信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; }

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

上一篇:石子项目立项申请报告下一篇:填报高考志愿十大误区