人人范文网 其他范文

数字图像处理实验报告(精选多篇)

发布时间:2022-05-17 06:03:36 来源:其他范文 收藏本文 下载本文 手机版

推荐第1篇:数字图像处理实验报告

数字图像处理

实验报告

目录

1.数字图像处理简介

2.实验目的

3.实验内容

4.实验结果及代码展示

5.算法综述

6.Matlab优势

7.总结

8.存在问题

一、数字图像处理简介

图像处理,是对图像进行分析、加工、和处理,使其满足视觉、心理以及其他要求的技术。图像处理是信号处理在图像域上的一个应用。目前大多数的图像是以数字形式存储,因而图像处理很多情况下指数字图像处理。此外,基于光学理论的处理方法依然占有重要的地位。

图像处理是信号处理的子类,另外与计算机科学、人工智能等领域也有密切的关系。

传统的一维信号处理的方法和概念很多仍然可以直接应用在图像处理上,比如降噪、量化等。然而,图像属于二维信号,和一维信号相比,它有自己特殊的一面,处理的方式和角度也有所不同。

二、实验目的

巩固所学知识,提高所学能力

三、实验内容

利用matlab的GUI程序设计一个简单的图像处理程序,并含有如下基本功能: 1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题 2.对给定图像进行旋转

3.对给定的图像添加噪声(椒盐噪声、高斯噪声)

四、实验结果及代码展示

1.软件设计界面

2.各模块功能展示以及程序代码

(1)读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题

效果展示:

代码:

a = imread(\'C:\\Documents and Settings\\Administrator\\桌面\\数字图像\\舞美.JPG\');

i = rgb2gray(a); I = im2bw(a,0.5);

subplot(3,1,1);imshow(a);title(\'源图像\') subplot(3,1,2);imshow(i);title(\'灰度图像\') subplot(3,1,3);imshow(I);title(\'二值图像\')

(2)图像旋转 原图

效果展示:

代码:

clc;clear all;close all;

Img=imread(\'D:\\My Documents\\My Pictures\\5.JPG\'); Img=double(Img); [h w]=size(Img); alpha=pi/4;

wnew=w*cos(alpha)+h*sin(alpha); hnew=w*sin(alpha)+h*cos(alpha); wnew=ceil(wnew);

hnew=ceil(hnew); u0=w*sin(alpha);

T=[cos(alpha),sin(alpha);-sin(alpha),cos(alpha)]; Imgnew2=zeros(hnew,wnew);Imgnew1=zeros(hnew,wnew); for u=1:hnew

for v=1:wnew

tem=T*([u;v]-[u0;0]); x=tem(1); y=tem(2); if x>=1&&x=1&&y

else

x=x_up;

end

if (y-y_low)

else

y=y_up;

end

p1=Img(x_low,y_low); p2=Img(x_up,y_low); p3=Img(x_low,y_low); p4=Img(x_up,y_up); s=x-x_low; t=y-y_low; Imgnew1(u,v)=Img(x,y);

Imgnew2(u,v)=(1-s)*(1-t)*p1+(1-s)*t*p3+(1-t)*s*p2+s*t*p4; end

end end

figure;imshow(Imgnew2,[]); B=imrotate(Img,alpha/pi*180); figure;imshow(B,[]);

(3)对给定的图像添加噪声(斑点噪声、高斯噪声) 效果展示:

代码:

I= imread(\'D:\\My Documents\\My Pictures\\5.JPG\'); figure,subplot(211);imshow(I);title(\'原图\'); J1=imnoise(I,\'gauian\',0,0.02);

subplot(223);imshow(J);title(\'添加高斯噪声\'); J=imnoise(I,\'speckle\',0.04);

subplot(224);imshow(J);title(\'添加斑点噪声\');

五、算法综述 灰度图像:

一幅完整的图像,是由红色、绿色、蓝色三个通道组成的。红色、绿色、蓝色三个通道的缩览图都是以灰度显示的。用不同的灰度色阶来表示“ 红,绿,蓝”在图像中的比重。通道中的纯白,代表了该色光在此处为最高亮度,亮度级别是255。

通道是整个Photoshop显示图像的基础。色彩的变动,实际上就是间接在对通道灰度图进行调整。通道是Photoshop处理图像的核心部分,所有的色彩调整工具都是围绕在这个核心周围使用的。

在计算机领域中,灰度数字图像是每个像素只有一个采样颜色的图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑色与白色两种颜色;灰度图像在黑色与白色之间还有许多级的颜色深度。但是,在数字图像领域之外,“黑白图像”也表示“灰度图像”,例如灰度的照片通常叫做“黑白照片”。在一些关于数字图像的文章中单色图像等同于灰度图像,在另外一些文章中又等同于黑白图像。 灰度图像经常是在单个电磁波频谱如可见光内测量每个像素的亮度得到的。

用于显示的灰度图像通常用每个采样像素 8 位的非线性尺度来保存,这样可以有 256 级灰度。这种精度刚刚能够避免可见的条带失真,并且非常易于编程。在医学图像与遥感图像这些技术应用中经常采用更多的级数以充分利用每个采样 10 或 12 位的传感器精度,并且避免计算时的近似误差。在这样的应用领域每个采样 16 位即 65536 级得到流行。

二值图像:

是指每个像素不是黑就是白,其灰度值没有中间过渡的图像。二值图像一般用来描述文字或者图形,其优点是占用空间少,缺点是,当表示人物,风景的图像时,二值图像只能描述其轮廓,不能描述细节。这时候要用更高的灰度级。

二值图像是每个像素只有两个可能值的数字图像。人们经常用黑白、B&W、单色图像表示二值图像,但是也可以用来表示每个像素只有一个采样值的任何图像,例如灰度图像等。

二值图像中所有的像素只能从0和1这两个值中取,因此在MATLAB中,二值图像用一个由0和1组成的二维矩阵表示。这两个可取的值分别对应于关闭和打开,关闭表征该像素处于背景,而打开表征该像素处于前景。以这种方式来操作图像可以更容易识别出图像的结构特征。二值图像操作只返回与二值图像的形式或结构有关的信息,如果希望对其他类型的图像进行同样的操作,则首先要将其转换为二进制的图像格式,可以通过调用MATLAB提供的im2bw()来实现。

二值图像经常出现在数字图像处理中作为图像掩码或者在图像分割、二值化和dithering的结果中出现。一些输入输出设备,如激光打印机、传真机、单色计算机显示器等都可以处理二值图像。

二值图像经常使用位图格式存储。

二值图像可以解释为二维整数格Z,图像变形处理领域很大程度上就是受到这个观点启发。

图像旋转:

图像旋转是指图像以某一点为中心旋转一定的角度,形成一幅新的图像的过程。当然这个点通常就是图像的中心。既然是按照中心旋转,自然会有这样一个属性:旋转前和旋转后的点离中心的位置不变.根据这个属性,我们可以得到旋转后的点的坐标与原坐标的对应关系。由于原图像的坐标是以左上角为原点的,所以我们先把坐标转换为以图像中心为原点。假设原图像的宽为w,高为h,(x0,y0)为原坐标内的一点,转换坐标后的点为(x1,y1)。那么不难得到: x1 = x0 - w/2; y1 = -y0 + h/2; 在新的坐标系下,假设(x0,y0)距离原点的距离为r,点与原点之间的连线与x轴的夹角为b,旋转的角度为a,旋转后的点为(x1,y1)

噪声:

是电路或系统中不含信息量的电压或电流。在工业与自然界中,存在着各种干扰源(噪声源),如大功率电力电子器件的接入、大功率用电设备的开启与断开、雷击闪电等都会使空间电场和磁场产生有序或无序的变化,这些都是干扰源(或噪声源)。这些源产生的电磁波或尖峰脉冲通过磁、电耦合或是通过电源线等路径进入放大电路,各种电气设备,形成各种形式的干扰。

斑点噪声:

斑点噪声是SAR成像系统的一大特色,源自基本分辨单元内地物的随机散射,在图像上表现为信号相关(如在空间上相关)的小斑点,它既降低了图像的画面质量,又严重影响图像的自动分割、分类、目标检测以及其它定量专题信息的提取 。

SAR图像斑点噪声的去除一方面要抑制图像均匀区域斑点噪声,另一方面要保持图像边缘和纹理细节信息。SAR斑点噪声的抑制可通过非相干多视处理,也可使用空间域滤波实现。非相干多视处理会降低图像的地面分辨率。因此,涌现出了一系列空间域滤波方法,如均值滤波、中值滤波、Lee滤波、Kuan滤波、Frost滤波、Sigma滤波以及Gamma Map滤波等。但这类算法存在自身无法克服的矛盾:一方面为增强斑点去噪效果需选较大的滤波窗口,另一方面为保持图像的实际分辨率要求所选的窗口较小。

高斯噪声:

所谓高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。高斯白噪声包括热噪声和散粒噪声。

实验中是通过MATLAB自带的函数产生噪声,各函数如下: J1=imnoise(I,\'salt & pepper\',0.05); %添加椒盐噪声

J2=imnoise(I,\'gauian\',0,0.03);

%添加均值为0,方差为0.03的高斯噪声。

六、Matlab优势

MATLAB是一个包含大量算法的集合。其可以快捷的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和差错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。 图形处理功能

图形处理功能MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足

模块集合工具箱

MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。

七、总结

运用matlab软件对图像进行处理,让我巩固了之前所学的知识,同时也在这次作业中更加了解到matlab语言在生活中的运用环境和掌握这门语言的重要性

八、存在问题

1.在进行图像增强时要不要讲图像先进行平滑处理? 2.如何增加这个算法的准确度

3.在此次作业中,为何添加椒盐噪声时无法显示

推荐第2篇:数字图像处理实验报告

数字图像处理

实验报告

班级:通信103 学号:201027201 姓名:计富威 指导教师:孙洁

实验一 MATLAB数字图像处理初步

一、实验目的与要求

1.熟悉及掌握在MATLAB中能够处理哪些格式图像。 2.熟练掌握在MATLAB中如何读取图像。

3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。

4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。 5.图像间如何转化。

二、实验内容及步骤

1.利用imread( )函数读取一幅图像,假设其名为”第一个.tif”,存入一个数组中;

>>I=imread(\'第一个.tif\'); 2.利用whos命令提取该读入图像”第一个.tif”的基本信息; >>whos I 3.利用imshow()函数来显示这幅图像; >>imshow(I);

第一个.tif 4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;

>>imfinfo(\'第一个.tif\'); 5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为flower.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。

>>imwrite(I,\'第一个.jpg\',\'quality\',50) 6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flower.bmp。 >>imwrite(I,\'第一个.bmp\'); 7.用imread()读入图像:Lenna256.jpg 和camemaman.jpg; >>b=imread(\'lena256.bmp\'); >>c=imread(\'cameraman.tif\'); 8.用imfinfo()获取图像Lenna256.jpg和camemaman.jpg 的大小; >>imfinfo(\'lena256.bmp\'); >>imfinfo(\'cameraman.tif\'); 9.用figure,imshow()分别将Lenna256.jpg和camemaman.jpg显示出来,观察两幅图像的质量。 >>figure >>imshow(b); >>figure >>imshow(c);

(Lena256.jpg图像截图)

(cameraman.jpg图像截图)

10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。 >>d=im2bw(b); >>figure >>imshow(b); >>figure >>imshow(d);

(二值化截图)

三、实验总结

通过实验MatLab软件的基本使用有了基本的了解,学会了使用MatLab软件来读取一个特定格式的图像,并通过相关的命令语句对图像进行格式转换、图像压缩、二值化等的处理,掌握了利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息,掌握在MATLAB中如何通过imshow()语句来读取图像等等。

第二 图像基本运算

一、实验目的

1.了解图像的算术运算在数字图像处理中的初步应用。 2.体会图像算术运算处理的过程和处理前后图像的变化。

二、实验原理

图像的代数运算是图像的标准算术操作的实现方法,是两幅输入图像之间进行的点对点的加、减、乘、除运算后得到输出图像的过程。如果输入图像为A(x,y)和B(x,y),输出图像为C(x,y),则图像的代数运算有如下四种形式:

C(x,y) = A(x,y) + B(x,y) C(x,y) = A(x,y) - B(x,y) C(x,y) = A(x,y) * B(x,y) C(x,y) = A(x,y) / B(x,y)

三、实验步骤 1.图像的加法运算

在MATLAB中,如果要进行两幅图像的加法,或者给一幅图像加上一个常数,可以调用imadd函数来实现。imadd函数将某一幅输入图像的每一个像素值与另一幅图像相应的像素值相加,返回相应的像素值之和作为输出图像。imadd函数的调用格式如下:

Z = imadd(X,Y) 首先读入两幅图像

>>a=imread(\'第二个原图1.jpg\'); >>b=imread(\'第二个原图2.jpg\') 通过一个加法操作:>>c=imadd(a,b);

给图像的每一个像素加上一个常数可以使图像的亮度增加。如截图

第一张为原图,第二张为亮度加50 ,第三张为亮度减50 2.图像的减法运算

在MATLAB中,使用imsubtract函数可以将一幅图像从另一幅图像中减去,或者从一幅图像中减去一个常数。imsubtract函数将一幅输入图像的像素值从另一幅输入图像相应的像素值中减去,再将这个结果作为输出图像相应的像素值。imsubtract函数的调用格式如下:

Z = imsubtract(X,Y); 读入一幅画后通过减法 >>a3=imsubtract(a,50);

3.图像的乘法运算

在MATLAB中,使用immultiply函数实现两幅图像的乘法。immultiply函数将两幅图像相应的像素值进行元素对元素的乘法操作(MATLAB点乘),并将乘法的运算结果作为输出图形相应的像素值。immulitply函数的调用格式如下:

Z = immulitply(X,Y) 读入一幅图后通过乘法操作 >>a=imread(\'cameraman.tif\'); >>b=immultiply(a,1.5);

4.图像的除法运算

在MATLAB中使用imdivide函数进行两幅图像的除法。imdivide函数对两幅输入图像的所有相应像素执行元素对元素的除法操作(点除),并将得到的结果作为输出图像的相应像素值。imdivide函数的调用格式如下:

Z = imdivide(X,Y) 读入一幅图后通过除法操作

四、实验总结

通过对图像的四则运算了结图像的不同变化过程,对软件的进一步使用也有了更加深刻的认识。

实验三 图像增强—空域滤波

一、实验目的

进一步了解MatLab软件/语言,学会使用MatLab对图像作滤波处理,使学生有机会掌握滤波算法,体会滤波效果。

了解几种不同滤波方式的使用和使用的场合,培养处理实际图像的能力,并为课堂教学提供配套的实践机会。

二、实验设备与软件

(1) IBM-PC计算机系统

(2) MatLab软件/语言包括图像处理工具箱(Image Proceing Toolbox)

(3) 实验所需要的图片

三、实验内容与步骤

a) 调入并显示原始图像“原图像.jpg”。 >>I=imread(\'原图像.jpg\'); b) 利用imnoise命令在图像“原图像.jpg”上加入高斯(gauian) 噪声

>>J = imnoise(I,\'gau\',0.02);

%添加高斯噪声 c)利用预定义函数fspecial命令产生平均(average)滤波器 d)分别采用3x3和5x5的模板,分别用平均滤波器以及中值滤波器,对加入噪声的图像进行处理并观察不同噪声水平下,上述滤波器处理的结果;

>>ave1=fspecial(\'average\',3);

%产生3×3的均值模版 >>ave2=fspecial(\'average\',5);

%产生5×5的均值模版 >>K = filter2(ave1,J)/255;

%均值滤波3×3 >>L = filter2(ave2,J)/255;

%均值滤波5×5 e)选择不同大小的模板,对加入某一固定噪声水平噪声的图像进行处理,观察上述滤波器处理的结果。

>>M = medfilt2(J,[3 3]);

%中值滤波3×3模板 >>N = medfilt2(J,[4 4]);

%中值滤波4×4模板

f)利用imnoise命令在图像Sample2-1.jpg 上加入椒盐噪声(salt & pepper) >>J = imnoise(I,\'salt& pepper\',0.02);

%添加椒盐噪声

四、实验总结

椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声往往由图像切割引起,去除脉冲干扰及椒盐噪声最常用的算法是中值滤波。椒盐噪声是指两种噪声,一种是盐噪声,另一种是胡椒噪声。盐=白色,椒=黑色。前者是高灰度噪声,后者属于低灰度噪声。一般两种噪声同时出现,呈现在图像上就是黑白杂点。这点我们通过实验结果可以明显看到。中值滤波对于滤除图像的椒盐噪声非常有效。

实验四图像分割

一、实验目的

使用MatLab 软件进行图像的分割。使学生通过实验体会一些主要的分割算子对图像处理的效果,以及各种因素对分割效果的影响。

二、实验要求

要求学生能够自行评价各主要算子在无噪声条件下和噪声条件下的分割性能。能够掌握分割条件(阈值等)的选择。完成规定图像的处理并要求正确评价处理结果,能够从理论上作出合理的解释。

三、实验内容与步骤

(1)使用Roberts 算子的图像分割实验,使用的原图是cameraman.jpg,截图如下

(2)使用Prewitt 算子的图像分割实验 截图如下

(3)使用Sobel 算子的图像分割实验

(4)使用LoG (拉普拉斯-高斯)算子的图像分割实验

四、实验结果

对Roberts算子、Prewitt 算子、Sobel 算子、LoG (拉普拉斯-高斯)算子的运算对图像的结果有了基本的认识,加深学习效果。

实验五 形态学运算

1、实验目的

学习常见的数学形态学运算基本方法,了解腐蚀、膨胀、开运算、闭运算取得的效果,培养处理实际图像的能力,并为课堂教学提供配套的实践机会。

2、实验要求

利用MatLab工具箱中关于数学形态学运算的函数,计算本指导书中指定二值图像进行处理。

3、实验设备与软件

1.LC-PC计算机系统

2.MatLab软件/语言包括图像处理工具箱(Image Proceing Toolbox) 3.实验所需要的图片

4、实验内容与步骤

1.调入并显示图像“原图.jpg”;2.调入并显示图像“原图.jpg”;

3.选取合适的阈值,得到二值化图像“原图.jpg”;>>bw = im2bw(I,level);

%二值化 4.设置结构元素;

5.对得到的二值图像“原图.jpg”进行腐蚀运算;>>BW2 = imerode(bw,SE1);

%腐蚀 6.对得到的二值图像“原图.jpg”进行膨胀运算; >>BW1 = imdilate(bw,SE);

%膨胀 7.对得到的二值图像“原图.jpg”进行开运算;

>>BW3 = bwmorph(bw, \'open\');

%开运算 8.对得到的二值图像“原图.jpg”进行闭运算; >>BW4 = bwmorph(bw, \'close\');

%闭运算 9.将两种处理方法的结果作比较;

五、实验总结

通过本次实验,学习了常见的数学形态学运算基本方法,了解腐蚀、膨胀、开运算、闭运算取得的效果,培养处理实际图像的能力,通过自己动手的实验,对课本上的知识有了更加深刻的理解。

推荐第3篇:数字图像处理实验报告

实验一 数字图像的获取

一、实验目的

1、了解图像的实际获取过程。

2、巩固图像空间分辨率和灰度级分辨率、邻域等重要概念。

3、熟练掌握图像读、写、显示、类型转换等 matlab 函数的用法。

二、实验内容

1、读取一幅彩色图像,将该彩色图像转化为灰度图像,再将灰度图像转化为索引图像并显示所有图像。

2、编程实现空间分辨率变化的效果。

三、实验原理

1、图像读、写、显示 I=imread(‘image.jpg’) Imview(I) Imshow(I) Imwrite(I,’wodeimage.jpg’)

2、图像类型转换

I=mat2gray(A,[amin,amax]);按指定的取值区间[amin,amax]将数据矩阵 A 转化为灰度

图像 I,amin 对应灰度 0,amax 对应 1,也可以不指定该区间。

[x,map]=gray2ind(I,n);按指定的灰度级 n 将灰度图像转化为索引图像,n 默认为 64 I=ind2gray(x,map);索引图像转化为灰度图像 I=grb2gray(RGB);真彩色图像转化为灰度图像

[x,map]=rgb2ind(RGB);真彩色图像转化为索引图像 RGB=ind2rgb(x,map);索引图像转化为真彩色图像

BW=im2bw(I,level);将灰度图像转化为二值图像,level 取值在[0,1]之间

BW=im2bw(x,map,level);将索引图像转化为二值图像,level 取值在[0,1]之间 BW=im2bw(RGB,level);将真彩色图像转化为二值图像,level 取值在[0,1]之间

四、实验代码及结果

1、in=imread(\'peppers.png\');i=rgb2gray(in);[x,map]=gray2ind(i,128); subplot(131),imshow(in) subplot(132),imshow(i) subplot(133),imshow(x),colormap(map)

、%空间分辨率变化的效果

clc,close all,clear i=imread(\'cameraman.tif\');

i=imresize(i,[256,256]); i1=i(1:2:end,1:2:end); [m1,n1]=size(i) i2=i1(1:2:end,1:2:end); [m2,n2]=size(i2) i3=i2(1:2:end,1:2:end); [m3,n3]=size(i3) subplot(221),imshow(i),xlabel(\'256 x 256\') subplot(222),imshow(i1),xlabel(\'128 x 128\') subplot(223),imshow(i2),xlabel(\'64 x 64\') subplot(224),imshow(i3),xlabel(\'32 x 32\') 256 x 25664 x 64128 x 12832 x 32

2

实验二

图像的几何变换

一、实验目的

掌握图像的基本几何变换的方法

1、图像的平移

2、图像的旋转

二、实验内容

练习用matalb命令实现图像的平移、旋转操作

1、.编写实现图像平移的函数

2、用imread命令从你的硬盘读取一幅256×256灰度图;

3、调用平移函数,将256×256灰度图平移100行200列,在同一个窗口中显示平移前和平移后的图像。

4、再开辟一个窗口,分别用最近邻插值法、双线性插值法实现图像顺势针旋转50°,显示在同一窗口中,并比较两种效果图(在报告中)

三、实验原理

提示:图片平移就是实现运算

x\'10x0x \' y01y0y10011 

x\'xx0即:y\'yy0

四、实验代码及结果

1、function [I]=hmove(i,x0,y0); %编写实现图像平移的函数hmove,平移量为 [r,c]=size(i);

%x0,y0,平移前图像矩阵为i, I(r+x0,c+y0)=0;

%平移后图像矩阵为I for x=1:r;

for y=1:c;

x1=x+x0;

y1=y+y0;

I(x1,y1)=i(x,y);

end; end; 参考程序 subplot(2,2,1) imshow(RGB) subplot(2,2,3) gray1=rgb2gray(RGB); imagesc(gray1),colormap(gray);

subplot(2,2,2) I1=hmove(gray1,100,20); subimage(gray1),axis(\'image\'); subplot(2,2,4),imagesc(I1),colormap(gray),axis([1,700],[1,820]);

2、显示图像的傅立叶频谱  a=0:800;b=0:600;

 %[x,y]=meshgrid([-20:0.2:20],[-20:0.2:20]);  [x,y]=meshgrid(a,b);  i=imread(\'hr.jpg\');  I=rgb2gray(i);

 subplot(1,2,1),subimage([0,800],[0,600],i);  subplot(1,2,2);  s=fft2(I,601,801);  mesh(x,y,log(abs(s)));%图像的傅立叶幅度频谱以三维图形显示  colormap(hsv);

实验三 图像空域变换增强(1)

一、实验目的

1、掌握直方图均衡化算法。

2、巩固灰度变换、直方图修正、图像算术和逻辑运算等基础知识。

3、熟练掌握空域变换增强的matlab 相关函数用法,并能利用算法自己编写matlab 程序实现图像空域变换增强。

二、实验内容

1、用函数imcomplement 对灰度图像cameraman.tif 取反。

2、利用如下分段变换曲线对canmeraman.tif 做线性灰度变换。

3、利用直方图求取算法计算以及显示pout.tif 的直方图,并和imhist 函数生成的直方图作比较。

三、实验原理

在图像处理中,空域是指由像素组成的空间,空域增强方法是指直接作用于像素的增强方法。空域处理可以表示为:

g(x, y)=T[ f (x, y)]

j=imcomplement(i);对图像取反 imhist();显示图像的直方图 histeq();直方图均衡化函数

imnoise(I,type,parameters);给图像加噪声 bitand();图像位与运算 bitor();图像位或运算

四、实验代码与结果

1、i=imread(\'cameraman.tif\');

j=imcomplement(i); subplot(121),imshow(i) subplot(122),imshow(j)

2、

clear,close all,clc in1=imread(\'cameraman.tif\');

f0=0;g0=0; f1=100;g1=60; f2=150;g2=220; f3=255;g3=255; figure,plot([f0,f1,f2,f3],[g0,g1,g2,g3]) axis tight,xlabel(\'f\'),ylabel(\'g\') title(\'intensity transformation\') r1=(g1-g0)/(f1-f0); b1=g0-r1*f0; r2=(g2-g1)/(f2-f1); b2=g1-r2*f1; r3=(g3-g2)/(f3-f2); b3=g2-r3*f2; [m,n]=size(in1); in2=double(in1); for i=1:m for j=1:n f=in2(i,j); g(i,j)=0; if (f>=0)&(f=f1)&(f=f2)&(f

3、clc,clear,close all in=imread(\'pout.tif\'); [m,n]=size(in); num=zeros(1,256); % num 是每个灰度级对应的像素个数 p=zeros(1,256); % p 是每个灰度级出现的概率 for i=1:m for j=1:n num(1,in(i,j)+1)=num(1,in(i,j)+1)+1;% 统计个数 end end p=num./(m*n)% 求概率 x=1:256; subplot(121),plot(x,p) ,axis([1 256 0 0.06]) subplot(122),imhist(in)

实验四 图像空域变换增强(2)

一、实验目的

1、掌握直方图均衡化算法。

2、巩固灰度变换、直方图修正、图像算术和逻辑运算等基础知识。

3、熟练掌握空域变换增强的matlab 相关函数用法,并能利用算法自己编写matlab 程序实现图像空域变换增强。 实现频域线性变换,非线性变换增强

二、实验内容

1、利用直方图均衡化算法对图像pout.tif 进行增强运算。

2、对图像lena.jpg 作逻辑与和逻辑或运算。

三、实验原理

j=imcomplement(i);对图像取反 imhist();显示图像的直方图 histeq();直方图均衡化函数

imnoise(I,type,parameters);给图像加噪声 bitand();图像位与运算 bitor();图像位或运算

四、实验代码与结果

1、clear;close all; clc; tu=imread(\'pout.tif\'); % 输入图像

%tu=rgb2gray(tu); % 转换为灰度图像

N=zeros(1,256); % N 为原始图像各灰度级像素个数 P=zeros(1,256); % P 为原始成图像直方图

q=zeros(1,256); % q 为原始图像直方图累积分布函数

newN=zeros(1,256); % newN 为新生成图像各灰度级像素个数 newP=zeros(1,256); % newP 为新生成图像直方图

newq=zeros(1,256); % newq 为新生成图像直方图累积分布函数 [h w]=size(tu); new_tu=zeros(h,w); % 计算原始图像各灰度级像素个数 for x=1:h for y=1:w N(1,tu(x,y))=N(1,tu(x,y))+1; end end P=N./sum(N);% 计算原始直方图 P % 计算原始累积分布直方图 q(1,1)=P(1,1); for i=2:256 q(1,i)=q(1,i-1)+P(1,i); end % 计算原始直方图对应的新的灰度 t ,建立映射关系 for i=1:256 t(1,i)=floor(254*q(1,i)+1+0.5); end % 计算直方图均衡化后的新图 new_tu for x=1:h for y=1:w new_tu(x,y)=t(1,tu(x,y)); end end % 统计新生成图像各灰度级像素个数 for x=1:h for y=1:w newN(1,new_tu(x,y))=newN(1,new_tu(x,y))+1; end end newP=newN./(h*w);% 计算新的灰度直方图 newP % 计算新生成图像累积分布直方图 newq(1,1)=newP(1,1); for i=2:256 newq(1,i)=newq(1,i-1)+newP(1,i); end % 显示信息

subplot(231),imshow(tu) subplot(232),plot(P),axis([1 256 0 0.06]) subplot(233),plot(q),axis([1 256 0 1]) subplot(234),imshow(new_tu,[]) subplot(235),plot(newP),axis([1 256 0 0.06]) subplot(236),plot(newq),axis([1 256 0

1])

2、clc,clear,close all in=imread(\'lena.jpg\'); in=rgb2gray(in); [m,n]=size(in); in=double(in); out1=ones(m,n)*255;out1(20:150,30:170)=0; chu1=zeros(m,n);chu1(20:150,30:170)=255; for i=1:m for j=1:n out2(i,j)=bitor(in(i,j),out1(i,j)); chu2(i,j)=bitand(in(i,j),chu1(i,j)); end end in=uint8(in);out1=uint8(out1);out2=uint8(out2); chu1=uint8(chu1);chu2=uint8(chu2); subplot(231),imshow(in) subplot(232),imshow(out1) subplot(233),imshow(out2) subplot(234),imshow(chu1) subplot(235),imshow(chu2)

实验五 图像滤波增强

一、实验目的

1、掌握各种空域和频域图像滤波增强算法已经模板运算的基本方法。

2、巩固卷积定理、滤波处理等基础知识。

3、熟练掌握空域和频域滤波增强的matlab 相关函数用法。

二、实验内容

1、利用均值滤波算法对已被噪声污染的图像rice.png 进行滤波除噪处理。

2、利用标准中值滤波算法对已被噪声污染的图像rice.png 进行滤波除噪处理。 3、用prewitt 算子对图像cameraman.tif 进行锐化滤波处理。

三、实验原理

H=fspecial(type); H=fspecial(type,parameters);用于创建一个指定的滤波器模板,type 指滤波器的类型。

parameters 是与指定的滤波器有关的参数。 Y=filter2(B,X); 用于进行二维线性数字滤波,使用矩阵B 中的二维滤波器对数据X进行滤波。结果Y 是通过二维互相关计算出来的,大小与X 一样。

Y=filter2(B,X,’shape’);结果Y 的大小由参数shape确定,shape的取值如下: Full:返回二维户相关的全部结果,size(Y) >size(X) Same:返回二维户相关结果的中间部分,Y 的大小与X 相同 Valid:返回二维户相关未使用边缘补0 的部分,size(Y)

四、实验代码与结果

1、clc,clear

in1=imread(\'rice.png\');f=imnoise(in1,\'salt & pepper\',0.1); %f=imnoise(in1,\'gauian\',0,0.02) %g 是标准均值滤波器的输出图像 g=biaozhunjunzhi(f,3); subplot(221),imshow(in1)%,xlabel(\'(a) 原始图像\') subplot(222),imshow(f)%,xlabel(\'(b) 加噪图像\') subplot(223),imshow(g)%,xlabel(\'(c) 标准均值滤波图像\') function g=biaozhunjunzhi(f,k) [m,n]=size(f); %f1 是对边缘像素补0 后得到的图像

f1=zeros(m+(k-1),n+(k-1));[m1,n1]=size(f1); %f1 的边缘像素值为0中间的像素值依然为f f1((1+(k-1)/2):(m1-(k-1)/2),(1+(k-1)/2):(n1-(k-1)/2))=f; %注意这条指令绝对不能少 ga=f; %取出窗口内的像素值并作标准均值滤波处理 for i=(k+1)/2:(m1-(k-1)/2)

for j=(k+1)/2:(n1-(k-1)/2) a=0;x=1; for p=1:k for q=1:k a(x)=f1(i+(p-(k+1)/2),j+(q-(k+1)/2));x=x+1; end end %hsum 表示窗口内所有像素值的和 hsum=0; for h=1:(k^2) hsum=hsum+a(h); end ga(i,j)=round(hsum/(k^2)); end end %ga 的大小和f1 的大小一致所以必须取出中间部分像素值作为输出 g=ga((1+(k-1)/2):(m1-(k-1)/2),(1+(k-1)/2):(n1-(k-1)/2));

2、clc,clear in1=imread(\'rice.png\');f=imnoise(in1,\'salt & pepper\',0.1); %f=imnoise(in1,\'gauian\',0,0.02) %g 是标准中值滤波器的输出图像 g=biaozhunzhongzhi(f,3); subplot(131),imshow(in1)%,xlabel(\'(a) 原始图像\') subplot(132),imshow(f)%,xlabel(\'(b) 加噪图像\') subplot(133),imshow(g)%,xlabel(\'(c) 标准均值滤波图像\') function g=biaozhunzhongzhi(f,k) [m,n]=size(f); %f1 是对边缘像素补0 后得到的图像

f1=zeros(m+(k-1),n+(k-1));[m1,n1]=size(f1); %f1 的边缘像素值为0中间的像素值依然为f f1((1+(k-1)/2):(m1-(k-1)/2),(1+(k-1)/2):(n1-(k-1)/2))=f; %注意这条指令绝对不能少 ga=f; for i=(k+1)/2:(m1-(k-1)/2) for j=(k+1)/2:(n1-(k-1)/2) a=0;x=1; for p=1:k for q=1:k a(x)=f1(i+(p-(k+1)/2),j+(q-(k+1)/2));x=x+1;

end end a=sort(a);ga(i,j)=a((k^2+1)/2); end end %ga 的大小和f1 的大小一致所以必须取出中间部分像素值作为输出 g=ga((1+(k-1)/2):(m1-(k-1)/2),(1+(k-1)/2):(n1-(k-1)/2));

3、clc,clear,close all f=imread(\'cameraman.tif\');[m,n]=size(f);g=f; h1=[-1 -1 -1;0 0 0;1 1 1];h2=[-1 0 1;-1 0 1;-1 0 1]; x1=h1;x2=h2; for i=2:1:m-1 for j=2:1:n-1 sum1=0;sum2=0;sum=0; for p=1:1:3 for q=1:1:3 x1(p,q)=f(i+(p-2),j+(q-2));x2(p,q)=f(i+(p-2),j+(q-2)); sum1=sum1+x1(p,q)*h1(p,q);sum2=sum2+x2(p,q)*h2(p,q);sum=sum1+sum2; end end if sum

实验六 图像复原

一、实验目的

1、掌握各种空域和频域图像滤波增强算法已经模板运算的基本方法。

2、巩固卷积定理、滤波处理等基础知识。

3、熟练掌握空域和频域滤波增强的matlab 相关函数用法并能利用算法自己编写matlab程序实现图像空域变换增强 。

二、实验内容

1 利用大气湍流引起的图像退化模型对camerman.tif 进行退化和复原仿真,采用逆滤波的方法复原。

2 利用匀速直线运动的图像退化模型对camerman.tif 进行退化和复原仿真,采用逆滤波的方法复原。

3 根据逆谐波均值滤波器的输入输出方程对输入图像camerman.tif 进行空域滤波还原处理。

三、实验原理

Psf=fspecial(type,parameters);返回指定滤波器的单位冲击响应 Imfilter(c,psf,’circular’,’conv’);根据psf 对图像进行滤波处理 Fr=deconvwnr(g,psf,ncorr,icorr);对图像进行维纳滤波处理

Fr=deconvreg(g,psf,noisepower,range);对图像进行最小二乘方滤波处理

Tform=maketform(transform_type,transform_parameters);对图像进行几何失真校正

四、实验代码与结果

1、%基于大气湍流造成的模糊图像及其还原

clear;close all;clc in=imread(\'cameraman.tif\'); subplot(131),imshow(in),title(\'原始图像\') f=fft2(in); [N1,N2]=size(f); k1=0.00005; %退化模型中的常数

%根据退化模型对输入图像进行退化处理并输出退化后的图像 for i=1:N1 for j=1:N2 h(i,j)=exp((-k1*(i^2+j^2))^(5/6)); out(i,j)=f(i,j)*h(i,j); end end out1=ifft2(out); outreal=uint8(real(out1)); subplot(132),imshow(outreal),title(\'大气湍流退化图\') %根据退化模型对已经退化的图像进行恢复处理 k2=0.00006; %退化模型中的常数

for i=1:N1 for j=1:N2 h(i,j)=exp((-k2*(i^2+j^2))^(5/6)); chu(i,j)=out(i,j)/h(i,j); end end chu1=ifft2(chu); chureal=uint8(real(chu1)); subplot(133),imshow(chureal),title(\'大气湍流还原图\')

2、%基于匀速直线运动造成的模糊图像及其还原

clear;close all;clc in=imread(\'cameraman.tif\'); %in=rgb2gray(in1); subplot(131),imshow(in),title(\'原始图像\') f=fft2(in); [N1,N2]=size(f); t=1; a=0.06; b=0.04; pi=3.1415926; for u=1:N1 for v=1:N2 fenzhi=cos(pi*(u*a+v*b))-i*sin(pi*(u*a+v*b)); h(u,v)=t*sin(pi*(u*a+v*b))*fenzhi/(pi*(u*a+v*b)); out(u,v)=f(u,v)*h(u,v); end end out1=ifft2(out); outreal=uint8(real(out1)); subplot(132),imshow(outreal),title(\'匀速直线运动退化图\') for u=1:N1 for v=1:N2 h(u,v)=t*sin(pi*(u*a+v*b))*(cos(pi*(u*a+v*b))-j*sin(pi*(u*a+v*b))) /(pi*(u*a+v*b)); chu(u,v)=out(u,v)/h(u,v); end end chu1=ifft2(chu); chureal=uint8(real(chu1));

subplot(133),imshow(chureal),title(\'匀速直线运动还原图\')

a=0.06;b=0;时的运行结果:

a=0;b=0.06; 时的运行结果::

3、%逆谐波均值滤波举例

clc,close all,clear in=imread(\'cameraman.tif\'); f=imnoise(in,\'gauian\',0,0.05); g=nixiebojunzhi(f,3); subplot(131),imshow(in) subplot(132),imshow(f) subplot(133),imshow(g) %逆谐波函数

function g=nixiebojunzhi(f,k) [m,n]=size(f); r=2;%r 为逆谐波函数中的Q 值

%f1 是对边缘像素补0 后得到的图像

f1=zeros(m+(k-1),n+(k-1)); [m1,n1]=size(f1); %f1 的边缘像素值为0中间的像素值依然为f f1((1+(k-1)/2):(m1-(k-1)/2),(1+(k-1)/2):(n1-(k-1)/2))=f; %注意这条指令绝对不能少 ga=f; %取出窗口内的像素值并作标准均值滤波处理 for i=(k+1)/2:(m1-(k-1)/2) for j=(k+1)/2:(n1-(k-1)/2) a=0;x=1; for p=1:k for q=1:k a(x)=f1(i+(p-(k+1)/2),j+(q-(k+1)/2)); x=x+1; end end %hsum 表示窗口内所有像素值的和 hsum1=0; hsum2=0; for h=1:(k^2) hsum1=hsum1+a(h)^(r+1); hsum2=hsum2+a(h)^r; end ga(i,j)=round(hsum1/hsum2); end end %ga 的大小和f1 的大小一致所以必须取出中间部分像素值作为输出 g=ga((1+(k-1)/2):(m1-(k-1)/2),(1+(k-1)/2):(n1-(k-1)/2));

实验七 彩色图像处理

一、实验目的

1、了解三色成像及各种颜色模型。

2、能用处理灰度图像的算法和技术对真彩色图像进行增强、去噪、复原等处理。

3、理解伪彩色图像处理技术并掌握密度分层法、灰度级彩色变换法、频域滤波等伪彩色图像处理算法。

二、实验内容

1、生成一幅256x256 的RGB 图像,该图像左上角为红色,右上角为蓝色,左下角为绿色,右下角为黑色。

2、给彩色图像加噪并去噪,可以采用灰度图像去噪处理的任何方法。

3、密度分层伪彩色处理仿真。

4、灰度级-彩色变换法伪彩色处理仿真。

三、实验原理

B=cat(dim,A1,A2,A3,...),dim 为维数,cat 函数将A1,A2,A3 等矩阵连接成维数为dim的矩阵。

四、实验代码与结果

1、clc,clear,close all rin=zeros(256,256);%红色分量 rin(1:128,1:128)=1;%左上角 gin=zeros(256,256);%绿色分量 gin(129:256,1:128)=1;%左下角 bin=zeros(256,256);%蓝色分量 bin(1:128,129:256)=1;%右上角 %将三个分量进行组合 out1=cat(3,rin,gin,bin); %也可以不用matlab 函数

out2(:,:,1)=rin;out2(:,:,2)=gin;out2(:,:,3)=bin; subplot(121),imshow(out1) subplot(122),imshow(out2)

2、%给彩色图像加噪并去噪

clc,clear,close all in1=imread(\'peppers.png\'); in=imnoise(in1,\'salt & pepper\',0.8); out(:,:,1)=gaijinjunzhi(in(:,:,1),5); out(:,:,2)=gaijinjunzhi(in(:,:,2),5); out(:,:,3)=gaijinjunzhi(in(:,:,3),5); subplot(221),imshow(in1) subplot(222),imshow(in) subplot(223),imshow(out) %采用改进均值滤波算法,函数如下 function g=gaijinjunzhi(f,k) [m,n]=size(f); %f1 是对边缘像素补0 后得到的图像

f1=zeros(m+(k-1),n+(k-1));[m1,n1]=size(f1); %f1 的边缘像素值为0中间的像素值依然为f f1((1+(k-1)/2):(m1-(k-1)/2),(1+(k-1)/2):(n1-(k-1)/2))=f; %注意这条指令绝对不能少 ga=f; %取出窗口内的像素值并作改进均值滤波处理 for i=(k+1)/2:(m1-(k-1)/2) for j=(k+1)/2:(n1-(k-1)/2) a=0;x=1; for p=1:k for q=1:k a(x)=f1(i+(p-(k+1)/2),j+(q-(k+1)/2));x=x+1; end end mina=min(a);maxa=max(a); %tan 表示窗口内既不是最大也不是最小像素值的个数 %he 表示窗口内所有既不是最大也不是最小像素值的和 tan=0;he=0; %hsum 表示窗口内所有像素值的和 hsum=0; %取出不是最大也不是最小的像素值并求和以及个数 for h=1:(k^2) hsum=hsum+a(h); if a(h)~=mina & a(h)~=maxa tan=tan+1;he=he+a(h); else end end %在噪声密度较大的情况下有可能窗口内所有的值都是最大值或最小值 %对其进行判断,如果是这种情况,就采用普通的均值滤波算法求当前要求的像素点的值 if tan~=0 ga(i,j)=round(he/tan); else ga(i,j)=round(hsum/(k^2));

end end end %ga 的大小和f1 的大小一致,所以必须取出中间部分像素值作为输出 g=ga((1+(k-1)/2):(m1-(k-1)/2),(1+(k-1)/2):(n1-(k-1)/2));

3、clc,clear,close all %[i0,map]=imread(\'trees.tif\'); d=[0.54,0.24,0.81;0.44,0.136,0.123;0.45,0.73,0.145;...0.21,0.12,0.56;0.45,0.54,0.33;0.33,0.23,0.141;...0.42,0.23,0.1;0.101,0.51,0.31;0.22,0.88,0.21;0.23,0.93,0.33]; in=imread(\'pout.tif\');[m,n]=size(in); for i=1:m for j=1:n % out(i,j,1)=map(in(i,j),1);% out(i,j,2)=map(in(i,j),2); % out(i,j,3)=map(in(i,j),3); ind=fix(in(i,j)/26); out(i,j,1)=d(ind,1);out(i,j,2)=d(ind,2);out(i,j,3)=d(ind,3); end end subplot(121),imshow(in) subplot(122),imshow(out)

4、clear,close all,clc in1=imread(\'moon.tif\'); %in1=rgb2gray(in1); %第一个独立的变换 f10=0;g10=0; f11=127;g11=0;f12=191;g12=255;f13=255;g13=255; figure(11),plot([f10,f11,f12,f13],[g10,g11,g12,g13],\'r\') axis tight,xlabel(\'f\'),ylabel(\'g\') title(\'intensity transformation\') r11=(g11-g10)/(f11-f10);b11=g10-r11*f10; r12=(g12-g11)/(f12-f11);b12=g11-r12*f11; r13=(g13-g12)/(f13-f12);b13=g12-r13*f12; [m,n]=size(in1);in2=double(in1); for i=1:m for j=1:n f=in2(i,j);g1(i,j)=0; if (f>=0)&(f=f11)&(f=f12)&(f

f20=0;g20=0;f21=63;g21=255; f22=191;g22=255;f23=255;g23=0; figure(21),plot([f20,f21,f22,f23],[g20,g21,g22,g23],\'r\') axis tight,xlabel(\'f\'),ylabel(\'g\') title(\'intensity transformation\') r21=(g21-g20)/(f21-f20);b21=g20-r21*f20; r22=(g22-g21)/(f22-f21);b22=g21-r22*f21; r23=(g23-g22)/(f23-f22);b23=g22-r23*f22; [m,n]=size(in1);in2=double(in1); for i=1:m for j=1:n f=in2(i,j);g2(i,j)=0; if (f>=0)&(f=f21)&(f=f22)&(f

g2=uint8(g2); figure(22),subplot(121),imshow(in1) subplot(122),imshow(g2)%imshow(mat2gray(g2)) %第三个独立的变换

f30=0;g30=255;f31=63;g31=255; f32=127;g32=0;f33=255;g33=0; figure(31),plot([f30,f31,f32,f33],[g30,g31,g32,g33],\'r\') axis tight,xlabel(\'f\'),ylabel(\'g\') title(\'intensity transformation\') r31=(g31-g30)/(f31-f30);b31=g30-r31*f30; r32=(g32-g31)/(f32-f31);b32=g31-r32*f31; r33=(g33-g32)/(f33-f32);b33=g32-r33*f32; [m,n]=size(in1); in2=double(in1); for i=1:m for j=1:n f=in2(i,j); g3(i,j)=0; if (f>=0)&(f=f31)&(f=f32)&(f

实验八 图像检测与分割

一、实验目的

1、了解图像的实际获取过程。

2、巩固图像空间分辨率和灰度级分辨率、邻域等重要概念。

3、熟练掌握图像读、写、显示、类型转换等matlab 函数的用法。

二、实验内容

1、应用一阶算子roberts 检测边缘。

2、用一阶算子sobel 检测边缘并对边界处的像素进行处理。

3、用上面描述的Otsu 算法编写matlab 程序实现图像分割。

三、实验原理

[g,t]=edge(image,method,threshold,direction)其中image 为输入图像method 为采用的方法类型:threshold 为阈值,如果给定阈值,则t= threshold,否则有函数自动计算出来并把其值返回给t;direction 为所寻找边缘的方向,其值可以为horizontal,vertical,both 默认为both;g 为返回的二值图像。

四、实验代码与结果

1、clc,clear,close all f=imread(\'lena.jpg\'); t=50; g=robertsf(f,t); subplot(121),imshow(f),title(\'原图\') subplot(122),imshow(g),title(\'roberts 算子\') %用roberts 算子对图像进行边缘检测的函数 function g=robertsf(f,t) [m,n]=size(f); g=f; h1=[-1 0;0 1];h2=[0 -1;1 0]; x1=h1;x2=h2; for i=2:1:m-1 for j=2:1:n-1 sum1=0;sum2=0;sum=0; for p=1:2 for q=1:2 x1(p,q)=f(i+(p-2),j+(q-2));x2(p,q)=f(i+(p-2),j+(q-2)); sum1=sum1+x1(p,q)*h1(p,q);sum2=sum2+x2(p,q)*h2(p,q); sum=(sum1^2+sum2^2)^(1/2); end end if sum

else end end end

2、clc,clear,close all f=imread(\'cameraman.tif\'); k=3; [m,n]=size(f); b1=[-1 -2 -1 0 0 0 1 2 1];b2=[-1 0 1 -2 0 2 -1 0 1]; t=150; %f1 是对边缘像素补0 后得到的图像 f1=zeros(m+(k-1),n+(k-1)); [m1,n1]=size(f1); %f1 的边缘像素值为0中间的像素值依然为f f1((1+(k-1)/2):(m1-(k-1)/2),(1+(k-1)/2):(n1-(k-1)/2))=f; %注意这条指令绝对不能少 ga=f1; %取出窗口内的像素值并作标准均值滤波处理 for i=(k+1)/2:(m1-(k-1)/2) for j=(k+1)/2:(n1-(k-1)/2) a=0;%a 是一维数组1xk^2 x=1;%x 是数组的序号 for p=1:k for q=1:k a(x)=f1(i+(p-(k+1)/2),j+(q-(k+1)/2)); x=x+1; end end sum1=0;sum2=0; for w=1:k^2 sum1=sum1+a(w)*b1(w);sum2=sum2+a(w)*b2(w); end sum=(sum1^2+sum2^2)^(1/2);

if sum

3、%利用Otsu 法阈值选择的方法分割图像

clc,clear,close all k=8;%k 表示无符号整型数的位数 L=2^k; in=imread(\'pout.tif\'); [m,n]=size(in); num=zeros(1,256); % num 是每个灰度级对应的像素个数 p=zeros(1,256); % p 是每个灰度级出现的概率

%p=zeros(1,256); % q 是每个灰度级出现的概率的累积分布函数 for i=1:m for j=1:n num(1,in(i,j)+1)=num(1,in(i,j)+1)+1;% 统计个数 end end p=num./(m*n);% 求概率 ut=0;%ut 是整幅图像的均值 for i=1:L ut=ut+(i-1)*p(i); end for t=0:L-1 w0=0;w1=0; for i=1:t w0=w0+p(i); end w1=1-w0; u0=0;

for i=1:t if w0>0 u0=u0+i*p(i)/w0; else u0=u0+0; end end u1=0; for i=(t+1):L if w1>0 u1=u1+i*p(i)/w1; else u1=u1+0; end end rou(t+1)=w0*w1*(u0-u1)^2;%类间方差的求取 end maxrou=max(rou);%类间方差的最大值 for i=1:L if rou(i)==maxrou r=i-1; end end r %类间方差最大所对应的灰度值 for i=1:m for j=1:n if in(i,j)>r out(i,j)=1; else out(i,j)=0; end end end subplot(121),imshow(in) subplot(122),imshow(out) 运行结果得到的阈值为:114

推荐第4篇:数字图像处理实验报告

实 验 报 告 书

系部学生专业班

实验

名称姓名名称 级时间:

: : :

实验一 直方图均衡

一、实验目的

在学习图像直方图的概念、计算方法、性质和相关应用基础上,生成、绘制图像的直方图,并应用MATLAB编程实现图像直方图均衡化程序。

二、实验内容

(1)计算并绘制图像直方图;

(2)编程实现图像的直方图均衡化处理,显示均衡前后的直方图和图像;

三、实验运行结果

四、实验中遇到的问题及解决方法

1、显示无法找到图像文件,应将图片与xx.m文件置于同一文件夹;

2、编程过程中应注意标点的输入法,应该用英文输入,否则会报错。

3、编程完成后运行时输入文件名与保存时文件名相同,区分大小写。

五、思考题

(1)、灰度直方图可以反映一幅图像的哪些特征? 答:

1、表征了图像的一维信息。只反映图像中像素不同灰度值出现的次数(或频数)而未反映像素所在位置。

2、与图像之间的关系是多对一的映射关系。一幅图像唯一确定出与之对应的直方图,但不同图像可能有相同的直方图。

3、子图直方图之和为整图的直方图。(2) 均衡化后的直方图有何特点?

答:经直方图均衡化处理后,可以得到一副改善了质量的新图像。这幅图像的灰度层次将不再是呈黑暗色调的图像,而是一副灰度层次较为适中的、比原始图像清晰、明快得多的图像。处理的结果使图像更适合与人的视觉特征或机器的识别系统。

六、实验心得体会

本次实验中,因为初学这个软件,我学习到了在程序中关于图像的运用,以及也复习了课本上的许多知识,加深了对直方图均衡化的理解。

七、程序清单

clear all; I=imread(\'lena_gray_256.tif\'); %打开一幅灰度图像 [m,n]=size(I); p=m*n; J=imhist(I)./p;

%计算图像的归一化直方图 subplot(1,3,1),imshow(I); subplot(1,3,2),imhist(I,64); subplot(1,3,3),plot(J);

(2)直方图均衡化

clear all; Im=imread(\'region.jpg\'); J=histeq(Im); %均衡化 subplot(2,2,1); imshow(Im); title(\'原图\'); %显示原图 subplot(2,2,2); imhist(Im); title(\'原图直方图\'); %显示原图的直方图 subplot(2,2,3); imshow(J); title(\'均衡化结果\'); %显示均衡化后的图像 subplot(2,2,4); imhist(J); title(\'均衡化结果的直方图\'); %显示均衡化后的直方图

实验二 频域图像增强

一、实验目的

1、频域图像增强

2、掌握基于频域的图像增强方法。

二、实验内容

(1)编程实现图像的理想低通和高通滤波; (2)编程实现图像的巴特沃斯低通和高通滤波。

三、实验运行结果

四、实验中遇到的问题及解决方法

显示图像无法打开,最终查出来时图像格式弄错了。

五、思考题

分析为什么图像通过低通滤波器后变得模糊?为什么通过高通滤波器后得到锐化结果?

答:图像的精细结构及突变部分主要由高频成分起作用,故经低通滤波后图像的精细结构消失,变得模糊;经高通滤波后图像得到锐化。

六、实验心得体会

本实验中遇到很多问题及错误,例如图像打不开、处理后图像模糊等,都是经常容易发生的错误,最后实验几次,就能够逐一自己解决了。使自己对数字图像处理课程中的许多问题有了更实际和确切的深入了解。

七、程序清单

clc; clear; data4=imread(\'lena.gif\'); subplot(3,2,1); imshow(data4); title(\'原图\'); i=fft2(data4); subplot(3,2,2); i=fftshift(i); z=log(abs(i)); x=0:1:255; y=0:1:255; [x,y]=meshgrid(x,y); mesh(z); %以三维坐标显示该图像频谱图title(\'原图频谱\'); [n,m]=size(i); %for k=1:1:n for l=1:1:m if (k^2+l^2)>=190^2 % result(k,l)=0; else result(k,l)=i(k,l); end end end subplot(3,2,4);

对该图进行低通滤波 选取D=190

z=log(abs(result)); %三维方式显示低通滤波后的频谱图 x=0:1:255; y=0:1:255; [x,y]=meshgrid(x,y); mesh(z); title(\'理想低通滤波后的频谱\'); subplot(3,2,3); %新建图像显示窗口 result=fftshift(result); %滤波后的数据去中心化 b=ifft2(result); %逆傅里叶变换 imshow(uint8(abs(b))); title(\'理想低通滤波后的图像\'); subplot(3,2,6); %新建图像显示窗口 % [n,m]=size(c); %对原图进行高通滤波 for k=1:1:n for l=1:1:m if (k^2+l^2)

imshow(uint8(abs(d))); title(\'理想高通滤波后的图像\'); %频域增强(巴特沃斯原型)

%二阶巴特沃斯(Butterworth)低通滤波器 %clc; %clear; Figure; J1=imread(\'lena.gif\'); subplot(3,2,1); imshow(J1); title(\'原图\'); f=double(J1); g=fft2(f); % 傅立叶变换 g=fftshift(g); % 转换数据矩阵 subplot(3,2,2); x=0:1:255; y=0:1:255; [x,y]=meshgrid(x,y); z=log(abs(g)); %取幅度 mesh(z); %以三维坐标显示该图像频谱图 title(\'原图频谱\'); [M,N]=size(g); nn=2; % 二阶巴特沃斯(Butterworth)低通滤波器 d0=20; m=fix(M/2); n=fix(N/2); for i=1:M for j=1:N d=sqrt((i-m)^2+(j-n)^2); h=1/(1+0.414*(d/d0)^(2*nn)); % 计算低通滤波器传递函数 result(i,j)=h*g(i,j);

end end subplot(3,2,4); x=0:1:255; y=0:1:255; [x,y]=meshgrid(x,y); z=log(abs(result)); %取幅度 mesh(z); %以三维坐标显示该图像频谱图 title(\'低通滤波后的频谱\'); result=ifftshift(result); J2=ifft2(result); J3=uint8(abs(J2)); subplot(3,2,3); imshow(J3); title(\'低通滤波后的图像\');

%利用二阶巴特沃斯(Butterworth)高通滤波器

nn=2; % 二阶巴特沃斯(Butterworth)高通滤波器 d0=5; m=fix(M/2); n=fix(N/2); for i=1:M for j=1:N d=sqrt((i-m)^2+(j-n)^2); if (d==0) h=0; else h=1/(1+0.414*(d0/d)^(2*nn));% 计算传递函数 end result(i,j)=h*g(i,j);

end end subplot(3,2,6); x=0:1:255; y=0:1:255; [x,y]=meshgrid(x,y); z=log(abs(result)); %取幅度 mesh(z); %以三维坐标显示该图像频谱图 title(\'高通滤波后的频谱\'); result=ifftshift(result); J2=ifft2(result); J3=uint8(abs(J2)); subplot(3,2,5); imshow(J3); title(\'高通滤波后的图像\');

实验三 图像边缘检测与连接

一、实验目的

图像边缘检测与连接

二、实验内容

(1)编程实现一阶差分边缘检测算法,包括Robert梯度算子、Prewitt算子、Sobel算子等; (2)编程实现二阶差分拉普拉斯边缘检测算法以及LoG检测法和Canny检测法; (3)分析与比较各种边缘检测算法的性能;

(4)编程实现Hough变换提取直线

(5)分析Hough变换检测性能;

三、实验运行结果

四、实验中遇到的问题及解决方法

拷贝文件后没改文件名,直接执行时出现错误,最后重新修改后重新编译,使之成功。

五、思考题

(1)边缘的方向是什么意思?为什么要考虑边缘的方向?

答:边缘常常意味着一个区域的终结和另一个区域的开始,图像的边缘也包含了物体的形状的重要信息,他不仅在分析图像时大幅度的减少了要处理的信息量,而且还保护了目标的边界结构。所以考虑边缘的方向很重要。

(2)Hough变换原理是什么?

答:Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。这样就把原始图像中给定曲线的检测问题转化为准找参数空间的峰值问题。也即把检测整体特性转化为检测局部特性。比如直线、椭圆、圆、弧线等。

六、实验心得体会

对于一些图像处理的函数不是很了解,只能够按课本的参照函数拷贝做实验,对于其中的一些函数问题理解不是很透彻,有些甚至完全不懂。还得继续努力。

七、程序清单

1、边缘检测

由edge函数实现各算子对图像的边缘检测

clear all; I = imread(\'d:\\office.bmp\'); I=rgb2gray(I); BW1 = edge(I,\'sobel\');

%利用Sobel算子进行边缘检测 BW2 = edge(I,\'roberts\'); %利用roberts算子进行边缘检测 BW3 = edge(I,\'prewitt\'); %利用prewitt算子进行边缘检测 BW4 = edge(I,\'log\');

%利用log算子进行边缘检测 BW5 = edge(I,\'canny\');

%利用canny算子进行边缘检测 subplot(2,3,1),imshow(I) subplot(2,3,2),imshow(BW1) subplot(2,3,3),imshow(BW2) subplot(2,3,4),imshow(BW3)

subplot(2,3,5),imshow(BW4) subplot(2,3,6),imshow(BW5)

2、边缘连接

使用Hough变换作线检测和连接

clear all;

RGB = imread(\'d:\\M_M.bmp\'); I=RGB; %I = rgb2gray(RGB); BW = edge(I,\'canny\');

% 利用Canny算子提取图像边缘 [H,T,R] = hough(BW,\'RhoResolution\',0.5,\'ThetaResolution\',0.5); figure(1), imshow(T,R,H,[],\'notruesize\'), axis on, axis normal xlabel(\'\\T\'), ylabel(\'\\R\') p = houghpeaks(H,5,\'threshold\',ceil(0.3*max(H(:))));

%找到5个较明显的Hough变换峰值

hold on plot(T(p(:,2)),R(p(:,1)),\'s\',\'color\',\'white\'); lines = houghlines(BW,T,R,p,\'FillGap\',10,\'MinLength\',10);

%查找并链接线段

figure, imshow(BW), hold on %在二值图中叠加显示这些线段 for k = 1:length(lines)

xy = [lines(k).point1; lines(k).point2];

plot(xy(:,1),xy(:,2),\'LineWidth\',2,\'Color\',\'green\'); end

推荐第5篇:数字图像处理实验报告

目录

实验一: 数字图像的基本处理操作 ......................................................................................................2 1.1: 实验目的 .........................................................................................................................................2 1.2:实验任务和要求 ...............................................................................................................................2 1.3:实验步骤和结果 ...............................................................................................................................2 1.4:结果分析 ...........................................................................................................................................6 实验二: 图像的灰度变换和直方图变换 ..............................................................................................7 2.1: 实验目的 .........................................................................................................................................7 2.2:实验任务和要求 ...............................................................................................................................7 2.3:实验步骤和结果 ...............................................................................................................................7 2.4:结果分析 .........................................................................................................................................11 实验三: 图像的平滑处理 ....................................................................................................................12 3.1: 实验目的 .......................................................................................................................................12 3.2:实验任务和要求 .............................................................................................................................12 3.3:实验步骤和结果 .............................................................................................................................12 3.4:结果分析 .........................................................................................................................................16 实验四:图像的锐化处理 ......................................................................................................................17 4.1: 实验目的 .......................................................................................................................................17 4.2:实验任务和要求 .............................................................................................................................17 4.3:实验步骤和结果 .............................................................................................................................17 4.4:结果分析 .........................................................................................................................................19

实验一:

数字图像的基本处理操作

1.1: 实验目的

1、熟悉并掌握MATLAB、PHOTOSHOP等工具的使用;

2、实现图像的读取、显示、代数运算和简单变换。

3、熟悉及掌握图像的傅里叶变换原理及性质,实现图像的傅里叶变换。

1.2:实验任务和要求

1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。2.对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题。 3.对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。 4.对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的对应关系。

1.3:实验步骤和结果

1.对实验任务1的实现代码如下: a=imread(\'d:\\tp.jpg\'); i=rgb2gray(a); I=im2bw(a,0.5); subplot(1,3,1);imshow(a);title(\'原图像\'); subplot(1,3,2);imshow(i);title(\'灰度图像\'); subplot(1,3,3);imshow(I);title(\'二值图像\'); subplot(1,3,1);imshow(a);title(\'原图像\');

结果如图1.1 所示:

图1.1 原图及其灰度图像,二值图像 2.对实验任务2的实现代码如下: a=imread(\'d:\\tp.jpg\'); A=imresize(a,[800 800]); b=imread(\'d:\\tp2.jpg\'); B=imresize(b,[800 800]); Z1=imadd(A,B); Z2=imsubtract(A,B); Z3=immultiply(A,B); Z4=imdivide(A,B); subplot(3,2,1);imshow(A);title(\'原图像 A\'); subplot(3,2,2);imshow(B);title(\'原图像 B\'); subplot(3,2,3);imshow(Z1);title(\'加法图像\'); subplot(3,2,4);imshow(Z2);title(\'减法图像\'); subplot(3,2,5);imshow(Z3);title(\'乘法图像\'); subplot(3,2,6);imshow(Z2);title(\'除法图像\'); 结果如图1.2所示:

3.对实验任务3的实现代码如下:

s=imread(\'d:\\tp3.jpg\'); i=rgb2gray(s); i=double(i); j=fft2(i); k=fftshift(j);

%直流分量移到频谱中心 I=log(abs(k));

%对数变换

m=fftshift(j);

%直流分量移到频谱中心 RR=real(m);

%取傅里叶变换的实部 II=imag(m);

%取傅里叶变换的虚部 A=sqrt(RR.^2+II.^2); A=(A-min(min(A)))/(max(max(A)))*255; b=circshift(s,[800 450]); b=rgb2gray(b); b=double(b); c=fft2(b); e=fftshift(c); I=log(abs(e)); f=fftshift(c); WW=real(f); ZZ=imag(f); B=sqrt(WW.^2+ZZ.^2);

4 B=(B-min(min(B)))/(max(max(B)))*255; subplot(2,2,1);imshow(s);title(\'原图像\'); subplot(2,2,2);imshow(uint8(b));title(\'平移图像\'); subplot(2,2,3);imshow(A);title(\'离散傅里叶变换频谱\'); subplot(2,2,4);imshow(B);title(\'平移图像离散傅里叶变换频谱\'); 结果如图1.3所示:

4.对实验任务4的实现代码如下: s=imread(\'d:\\tp3.jpg\'); i=rgb2gray(s); i=double(i); j=fft2(i); k=fftshift(j); I=log(abs(k)); m=fftshift(j); RR=real(m); II=imag(m); A=sqrt(RR.^2+II.^2); A=(A-min(min(A)))/(max(max(A)))*255; b=imrotate(s,-90); b=rgb2gray(b); b=double(b); c=fft2(b);

5 e=fftshift(c); I=log(abs(e)); f=fftshift(c); WW=real(f); ZZ=imag(f); B=sqrt(WW.^2+ZZ.^2); B=(B-min(min(B)))/(max(max(B)))*255; subplot(2,2,1);imshow(s);title(\'原图像\'); subplot(2,2,2);imshow(uint8(b));title(\'平移图像\'); subplot(2,2,3);imshow(A);title(\'离散傅里叶频谱\'); subplot(2,2,4);imshow(B);title(\'平移图像离散傅里叶频谱\'); 结果如图1.4所示:

1.4:结果分析

对MATLAB软件的操作开始时不太熟悉,许多语法和函数都不会使用,写出程序后,调试运行,最开始无法显示图像,检查原因,是有些标点符号没有在英文状态下输入和一些其他的细节,学会了imread(),imshow(),rgb2gray()等函数。

6 实验二: 图像的灰度变换和直方图变换

2.1: 实验目的

1、熟悉及掌握图像的采样原理,实现图像的采样过程,进行图像的灰度转换。

2、理解直方图的概念及应用,实现图像直方图的显示,及通过直方图均衡对图像进行修正。

2.2:实验任务和要求

1、对一幅图像进行2倍、4倍、8倍和16倍减采样,显示结果。

2、显示一幅灰度图像a,改变图像亮度使其整体变暗得到图像b,显示两幅图像的直方图。

3、对一幅图像进行灰度变化,实现图像变亮、变暗和负片效果,在同一个窗口内分成四个子窗口来分别显示,注上文字标题。

4、对一副图像进行直方图均衡化,显示结果图像和对应直方图。

5、对一副图像进行如图所示的分段线形变换处理,试比较与直方图均衡化处理的异同。

2.3:实验步骤和结果

1.对实验任务1的实现代码如下:

a=imread(\'d:\\tp2.jpg\');

b=rgb2gray(a); for m=1:4 figure [width,height]=size(b); quartimage=zeros(floor(width/(m)),floor(height/(2*m))); k=1; n=1; for i=1:(m):width for j=1:(2*m):height

7 quartimage(k,n)=b(i,j); n=n+1; end k=k+1; n=1; end imshow(unit8(quartimage)); end

结果如图所示:

2.对实验任务2的实现代码如下:

a=imread(\'d:\\tp2.jpg\'); c=rgb2gray(a); b=c-46; subplot(3,2,1);imshow(c);title(\'原图像\') subplot(3,2,2);imhist(c);title(\'原图像的直方图\') subplot(3,2,3);imshow(b);title(\'变暗后的图像\') subplot(3,2,4);imhist(b);title(\'变暗后的图像直方图\'); d=imadjust(c,[0,1],[1,0]); subplot(3,2,5);imshow(d);title(\'反转图像\'); 结果如图2.2所示:

8

3.对实验任务3的实现代码如下: a=imread(\'d:\\tp.jpg\'); m=imadjust(a,[,],[0.5;1]);%图像变亮 n=imadjust(a,[,],[0;0.5]);%图像变暗 g=255-a;%负片效果

subplot(2,2,1);imshow(a);title(\'原图像\'); subplot(2,2,2);imshow(m);title(\'图像变亮\'); subplot(2,2,3);imshow(n);title(\'图像变暗\'); subplot(2,2,4);imshow(g);title(\'负片效果\'); 结果如图所示:

4.对实验任务4的实现代码如下:

b=imread(\'d:\\tp.jpg\'); c=rgb2gray(b); j=histeq(c); subplot(2,2,1),imshow(c); subplot(2,2,2),imshow(j); subplot(2,2,3),imhist(c);

9 subplot(2,2,4),imhist(j); 结果如图2.4所示:

5.对实验任务5的实现代码如下: x1=0:0.01:0.125; x2=0.125:0.01:0.75; x3=0.75:0.01:1; y1=2*x1; y2=0.25+0.6*(x2-0.125); y3=0.625+1.5*(x3-0.75); x=[x1,x2,x3]; y=[y1,y2,y3]; plot(x,y); 结果如图所示:

2.4:结果分析

这次实验主要是对图像的灰度变换和直方图均衡化,实验内容包括灰度拉伸、图像反转、图像的二值化以及直方图均衡。通过实验将课本上理论知识加以实践,实验过程中明白了图像处理的一些技巧。但是以上几种方法采用的基本都是线性变换法,在实际应用中存在很多缺陷。它只能处理一些黑白分明的图像,而对于一些颜色丰富或者处理比较复杂图像时,往往于心不足。

实验三: 图像的平滑处理

3.1: 实验目的

1、熟悉并掌握常见的图像噪声种类;

2、理解并掌握常用的图像的平滑技术,如邻域平均法和中值滤波的原理、特点、适用对象。

3.2:实验任务和要求

1、读出lena.jpg这幅图像,给这幅图像分别加入椒盐噪声、高斯噪声和乘性噪声后并与前一张图显示在同一图像窗口中。

2、对受高斯噪声(模拟均值为0方差为0.02的高斯噪声)干扰的lena图像分别利用邻域平均法和中值滤波进行滤波去噪(窗口可变,可先取3*3,依次再取5*5,7*7),并显示滤波结果。

3、对受椒盐噪声(噪声方差为0.02)干扰的lena图像,选择合适的滤波器将噪声滤除。

4、对受乘性噪声(噪声方差为0.02)干扰的lena图像,选择合适的滤波器将噪声滤除。

3.3:实验步骤和结果

1.对实验任务1的实现代码如下:

>>I=imread(\'d:\\tp.jpg\'); >>i=rgb2gray(I); >>J=imnoise(i,\'gauian\',0,0.02);%高斯噪声 >>K=imnoise(i,\'salt & pepper\',0.02);%椒盐噪声 >>P=imnoise(i,\'speckle\',0.02);%乘性噪声 >>subplot(2,2,1);imshow(i); >>xlabel(\'原图\'); >>subplot(2,2,2);imshow(J);xlabel(\'高斯噪声\'); >>subplot(2,2,3);imshow(K);xlabel(\'椒盐噪声\'); >>subplot(2,2,4);imshow(P);xlabel(\'乘性噪声\'); 结果如图3.1所示:

12

2.对实验任务2的实现代码如下: >>I=imread(\'d:\\tp.jpg\'); >>i=rgb2gray(I); >>J=imnoise(i,\'gauian\',0,0.02); >>K=im2double(J); >>h=fspecial(\'average\'); >>G1=filter2(h,K,\'same\'); >>G2=medfilt2(K); >>subplot(2,2,1);imshow(1); >>subplot(2,2,1);imshow(i); >>xlabel(\'原图\'); >>subplot(2,2,2);imshow(J); >>xlabel(\'添加高斯噪声\'); >>subplot(2,2,3);imshow(G1); >>xlabel(\'均值滤波\'); >>subplot(2,2,4);imshow(G2); >>xlabel(\'中指滤波\'); 结果如图3.2所示:

3.对实验任务3的实现代码如下: >>I=imread(\'D:\\tp.jpg\'); >>i=rgb2gray(I); >>J=imnoise(i,\'salt & pepper\',0.02); >>K=im2double(J); >>h=fspecial(\'average\'); >>G1=filter2(h,K,\'same\'); >>G2=medfilt2(K); >>subplot(2,2,1);imshow(i); >>xlabel(\'原图\'); >>subplot(2,2,2);imshow(J); >>xlabel(\'添加椒盐噪声\'); >>subplot(2,2,3);imshow(G1); >>xlabel(\'均值滤波\'); >>subplot(2,2,4);imshow(G2); >>xlabel(\'中值滤波\'); 结果如图3.3所示:

4.对实验任务4的实现代码如下: >>i=imread(\'D:\\tp.jpg\'); >>I=rgb2gray(i); >>J=imnoise(I,\'speckle\',0.02); >>K=im2double(J); >>h=fspecial(\'average\'); >>G1=filter2(h,K,\'same\'); >>G2=medfilt2(K); >>subplot(2,2,1);imshow(I); >>xlabel(\'原图\'); >>subplot(2,2,2);imshow(J); >>xlabel(\'添加乘性噪声\'); >>subplot(2,2,3);imshow(G1); >>xlabel(\'均值滤波\'); >>subplot(2,2,4);imshow(G2); >>xlabel(\'中值滤波\'); 结果如图3.4所示:

3.4:结果分析

(1)采用均值滤波器对图像处理能达到去噪的效果,并且一般滤波器的模板越大去噪效果越好,但是应该适中,当模板选择的过大时,处理的效果就会下降,因此我们应该根据具体的要求选择合适的模板来处理图像。

(2)采用高斯滤波器对图像处理能达到去噪的效果,与均值滤波器相同,随着所用的滤波器尺寸的增大,图像的细节锐化程度相应降低图像变得模糊起来。但相较于均值滤波器,其模糊程度较小。但是高斯滤波同时受到标准差 sigma 的影响。

(3)中值滤波对去除“椒盐”噪声可以起到很好的效果,因为椒盐噪声只在画面中的部分点上随机出现,所以根据中值滤波原理可知,通过数据排序的方法,将图像中未被噪声污染的点代替噪声点的值的概率比较大,因此噪声的抑制效果很好。中值滤波与均值滤波相比,在去除图像椒盐噪声的同时,还能够保持图像比较清晰的轮廓。从实验结果可以看出,通过3*3 的均值滤波器,图像中的噪声点有明显的消除。但是 3*3 的非线性模板中值滤波器上对噪声的滤除效果更完美。

实验四:图像的锐化处理

4.1: 实验目的

1、熟悉并掌握MATLAB图像处理工具箱的使用;

2、理解并掌握常用的图像的锐化技术。

4.2:实验任务和要求

1、采用三种不同算子对图像进行锐化处理。

2、锐化空间滤波

1) 采用3×3的拉普拉斯算子w = [ 1, 1, 1; 1 – 8 1; 1, 1, 1]滤波

2) 编写函数w = genlaplacian(n),自动产生任一奇数尺寸n的拉普拉斯算子,如5×5的拉普拉斯算子:

w =

[ 1

-24

1] 3) 分别采用5×5,9×9,15×15和25×25大小的拉普拉斯算子对blurry_moon.tif

2g(x,y)f(x,y)f(x,y)完成图像的锐化增强,进行锐化滤波,并利用式观察其有何不同,要求在同一窗口中显示。

4.3:实验步骤和结果

1.对实验任务1的实现代码如下:

>>i=imread(\'d:\\tp.jpg\'); >>I=rgb2gray(i); >>H=fspecial(\'sobel\'); >>I1=filter2(H,I); >>H=fspecial(\'prewitt\'); >>I2=filter2(H,I); >>H=fspecial(\'log\'); >>I3=filter2(H,I); >>subplot(2,2,1);imshow(i);title(\'原图像\'); >>subplot(2,2,2);imshow(I1);title(\'sobel算子锐化图像\'); >>subplot(2,2,3);imshow(I2);title(\'prewitt算子锐化图像\'); >>subplot(2,2,4);imshow(I3);title(\'log算子锐化图像\'); 结果如图所示:

2.对实验任务2的实现代码如下: 1)

>>i=imread(\'D:\\tp.jpg\'); >>I=rgb2gray(i); >>T=double(I); >>subplot(1,2,1),imshow(T,[]); >>w=[1,1,1; 1,-8,1; 1,1,1]; >>K=conv2(T,w,\'same\'); >>subplot(1,2,2),imshow(K,[]); >>title(\'Lalacian Transformation\'); 结果如图所示:

2)

function w = genlaplacian(n)

w=ones(n);

x=ceil(n/2);

w(x,x)=-1*(n*n-1);

end

3)w1=genlaplcaian(5);

I=imread(‘d:\\tp.jpg’); T=double(I); K=conv2(T,w1’same’); J=T-K; 4.4:结果分析

19 通过对数字图像进行锐化处理,可以增强图像的边缘,使模糊的图像变得清晰起来,而以上几种方法都能很好的将图像的边缘变得清晰,但是要在不影响图像整体效果的情况下还是比较困难。综上所述,根据不同的情况可以需要选用不同的方法。在边缘检测中,常用的一种模板是Sobel 算子。Sobel 算子有两个,一个是检测水平边缘的 ;另一个是检测垂直边缘的 。与Prewitt算子相比,Sobel算子对于象素的位置的影响做了加权,可以降低边缘模糊程度,因此效果更好。

推荐第6篇:数字图像处理实验报告

数字图像处理实验

学生姓名:专业年级:报告

叶圣红 学 号: 20097048

09级电子信息工程二班

实验一 常用MATLAB图像处理命令

一、实验内容

1、读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。

实验结果如右图: 代码如下: Subplot (1,3,1)

i=imread(\'E:\\数字图象处理.jpg\') imshow(i)

title(\'RGB\') Subplot (1,3,2) j=rgb2gray(i) imshow(j) title(\'灰度\') Subplot (1,3,3) k=im2bw(j,0.5) imshow(k) title(\'二值\')

2、对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题。

实验结果如右图: 代码如下: Subplot (3,2,1) i=imread(\'E:\\数字图像处理\\1.jpg\') x=imresize(i,[250,320]) imshow(x) title(\'原图x\') Subplot (3,2,2) j=imread(\'\'E:\\数字图像处理\\17.jpg\') y=imresize(j,[250,320]) imshow(y) title(\'原图y\') Subplot (3,2,3) z=imadd(x,y) imshow(z) title(\'相加结果\');Subplot (3,2,4);z=imsubtract(x,y);imshow(z);title(\'相减结果\') Subplot (3,2,5);z=immultiply(x,y);imshow(z);title(\'相乘结果\') Subplot (3,2,6);z=imdivide(x,y);imshow(z);title(\'相除结果\')

3、对一幅图像进行灰度变化,实现图像变亮、变暗和负片效果,在同一个窗口内分成四个子窗口来分别显示,注上文字标题。

实验结果如右图:

代码如下: Subplot (2,2,1) i=imread(\'E:\\数字图像处理\\12.jpg\') imshow(i) title(\'原图\') Subplot (2,2,2) J = imadjust(i,[],[],3); imshow(J) title(\'变暗\') Subplot (2,2,3) J = imadjust(i,[],[],0.4) imshow(J) title(\'变亮\') Subplot (2,2,4) J=255-i Imshow(J) title(\'变负\')

二、实验总结

分析图像的代数运算结果,分别陈述图像的加、减、乘、除运算可能的应用领域。

解答:图像减运算与图像加运算的原理和用法类似,同样要求两幅图像X、Y的大小类型相同,但是图像减运算imsubtract()有可能导致结果中出现负数,此时系统将负数统一置为零,即为黑色。

乘运算实际上是对两幅原始图像X、Y对应的像素点进行点乘(X.*Y),将结果输出到矩阵Z中,若乘以一个常数,将改变图像的亮度:若常数值大于1,则乘运算后的图像将会变亮;叵常数值小于是,则图像将会会暗。可用来改变图像的灰度级,实现灰度级变换,也可以用来遮住图像的某些部分,其典型应用是用于获得掩膜图像。

除运算操作与乘运算操作互为逆运算,就是对两幅图像的对应像素点进行点(X./Y), imdivide()同样可以通过除以一个常数来改变原始图像的亮度,可用来改变图像的灰度级,其典型运用是比值图像处理。

加法运算的一个重要应用是对同一场景的多幅图像求平均值

减法运算常用于检测变化及运动的物体,图像相减运算又称为图像差分运算,差分运算还可以用于消除图像背景,用于混合图像的分离。

实验二 图像基本操作

一、实验内容

1.调试运行8倍减采样程序,分析程序,对每条语句给出注释,并显示最终执行结果。

1、调试运行8倍减采样程序,分析程序,对每条语句给出注释,并显示最终执行结果。

a=imread(‘e:\\3.jpg’);%读取图片 b=rgb2gray(a);%变为灰度图像

[wid,hei]=size(b);%改变图片大小 quartimg=zeros(wid/2+1,hei/2+1); i1=1; j1=1; for i=1:2:wid

for j=1:2:hei

quartimg(i1,j1)=b(i,j) ;

j1=j1+1;

end

i1=i1+1; j1=1; end figure imshow(uint8(quartimg)) %显示输出图像

2、显示一幅灰度图像a,改变图像亮度使其整体变暗得到图像b,显示两幅图像的直方图

Subplot (1,2,1);a=imread(\'E:\\数字图像处理实验\\数字图像处理\\20.jpg\'); imshow(a);title(\'a\');Subplot (1,2,2);b= imadjust(a,[],[],3);title(\'b\')

显示直方图程序:

Subplot (1,2,1);imhist(a);title(\'a的直方图\') Subplot (1,2,2);imhist(b);title(\'b的直方图\')

3、对图像b进行直方图均衡化,显示结果图像和对应直方图。

Subplot (1,2,1);j=histeq(b);imshow(j); title(\'b均衡化\'); Subplot (1,2,2);imhist(j); title(\'b均衡化后的直方图\') 均衡化的图像和直方图:

4、读入图像c,执行直方图规定化,使图像a的灰度分布与c大致相同,显示变换后图像及对应直方图。

[counts,x]=imhist(c) ;Subplot (2,2,1);imshow(a); title(\'图a\');Subplot (2,2,2);c=imread(\'E:\\数字图像处理\\13.jpg\'); imshow(c);title(\'图c\');Subplot (2,2,3);j=histeq(a,counts); imshow(j);Subplot (2,2,4);imhist(j)

实验三 图像变换

一、实验内容

1、对一幅图像进行缩小,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。i=imread(\'F:\\数字图象处理\\17.jpg\'); y=rgb2gray(i);subplot(2,2,1);imshow(y);title(\'原图\') j=imresize(y,0.5);subplot(2,2,2);imshow(j);title(\'缩小图\') m=fft2(y);subplot(2,2,3);imshow(abs(log(m)),[]);title(\'原图傅里叶变化\') n=fft2(j);subplot(2,2,4);imshow(abs(log(n)),[]);title(\'缩小图傅里叶变化\')

2、对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的对应关系。

i=imread(\'E:\\数字图象处理\\18.jpg\'); j=rgb2gray(i);subplot(2,2,1);imshow(j);title(\'原图\') m=imrotate(j,45,\'bilinear\');subplot(2,2,2); imshow(m);title(\'旋转图\') p=fftshift(fft2(j));subplot(2,2,3); imshow(abs(log(p)),[]);title(\'原图傅里叶变化\') q=fftshift(fft2(m));subplot(2,2,4); imshow(abs(log(q)),[]);title(\'旋转图傅里叶变化\')

实验四 常用图像增强方法

一、实验内容

1、采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波,窗口分别采用3*3,5*5,7*7 subplot(2,2,1);

a=imread(\'E:\\数字图像处理\\24.jpg\'); j=imnoise(a,\'salt & pepper\',0.04); imshow(j);

title(\'椒盐噪声图像\'); subplot(2,2,2); I_Filter1=medfilt2(j,[3 3]);

imshow(I_Filter1); title(\'3X3\'); subplot(2,2,3); I_Filter2=medfilt2(j,[5 5]);

imshow(I_Filter2); title(\'5X5\'); subplot(2,2,4); I_Filter3=medfilt2(j,[7 7]);

imshow(I_Filter3); title(\'7X7\');

2、采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波 subplot(1,2,1);a=imread(\'E:\\数字图像处理\\23.jpg\'); j=imnoise(a,\'salt & pepper\',0.04); imshow(j);title(\'椒盐噪声图像\'); subplot(1,2,2); h=fspecial(\'average\'); m=filter2(h,j); imshow(m); title(\'均值滤波\')

3、采用三种不同算子对图像进行锐化处理。

subplot(1,4,1);i=imread(\'F:\\数字图像处理\\16.jpg\');i1=rgb2gray(i); imshow(i1);title(\'原图像\');subplot(1,4,2);h=fspecial(\'laplacian\'); i2=filter2(h,i1);imshow(i2);title(\'拉式算子\');subplot(1,4,3) h=fspecial(\'prewitt\');i3=filter2(h,i1);imshow(i3); title(\'prewitt算子\')subplot(1,4,4)h=fspecial(\'sobel\'); i4=filter2(h,i1)imshow(i4);title(\'sobel算子\')

二、实验总结

1、比较不同平滑滤波器的处理效果,分析其优缺点

中值滤波比低通滤波消除噪声更有效。因为噪声多为尖峰状干扰,若用低通滤波虽能去除噪声但陡峭的边缘将被模糊。中值滤波能去除点状尖峰干扰而边缘不会变坏。理想低通滤波器平滑处理的概念是清晰的,但在处理过程中会产生较严重的模糊和振铃现象。这种现象正是由于傅里叶变换的性质决定的。

2、比较不同锐化滤波器的处理效果,分析其优缺点

梯度算子: 梯度对应的是一阶导数,梯度算子是一阶导数算子。梯度方向:在图像灰度最大变化率上,反映出图像边缘上的灰度变化。梯度处理经常用于工业检测、辅助人工检测缺陷,或者是更为通用的自动检测的预处理。拉普拉斯微分算子强调图像中灰度的突变,弱化灰度慢变化的区域。这将产生一幅把浅灰色边线、突变点叠加到暗背景中的图像。

实验五 图像恢复和图像分割

一、实验内容

1、产生运动模糊图像,运用维纳滤波进行图像恢复,显示结果。

i=imread(\'F:\\car.jpg\'); I1=rbg2gray(i);I= im2double(I1); subplot(1,3,1) imshow(I);title(‘原图像’) LEN = 21; THETA = 11;

PSF = fspecial(\'motion\', LEN, THETA);

blurred = imfilter(I, PSF, \'conv\', \'circular\'); subplot(1,3,2);imshow(blurred); title(\'模拟运动模糊图像\') wnr2=deconvwnr(blurred,PSF); subplot(1,3,3); imshow(wnr2); title(\'维纳滤波恢复后图像\')

2、采用三种不同算子检测图像边缘,显示结果

i = imread(\'F:\\car.jpg\'); I=rgb2gray(i); subplot(2,2,1);imshow(I);title(\'原图像\') BW1 = edge(I,\'prewitt\'); subplot(2,2,2);imshow(BW1); title(\'prewit算子边缘检测\') BW2=edge(I,\'zerocro\'); subplot(2,2,3);imshow(BW2);title(\'zerocro算子边缘检测\') BW3=edge(I,\'log\'); subplot(2,2,4);imshow(BW3);title(\'log算子边缘检测\')

3、对二值图像分别进行方形模板3*3和5*5的膨胀和腐蚀操作,显示结果。

i= imread(\'F:\\16.jpg\'); I=im2bw(i,0.5); subplot(2,3,1);imshow(I);title(\'二值图像\') se=strel(\'square\',3);se1= strel(\'square\',5); I1 = imdilate(I,se);subplot(2,3,2);imshow(I1);title(\'3*3膨胀图像\') I2 = imdilate(I,se1);subplot(2,3,3);imshow(I2);title(\'5*5膨胀图像\') subplot(2,3,4);imshow(I);title(\'二值图像\') erodedBW=imerode(I,se);subplot(2,3,5);imshow(erodedBW);title(\'3*3腐蚀图像\') erodedBW1=imerode(I,se1);subplot(2,3,6);imshow(erodedBW1);title(\'5*5腐蚀图像\')

实验六 图像处理实际应用

一、实验内容

1、调试运行下列程序,分析程序,对每条语句给出注释,并显示最终执行结果。总结算法思想及优缺点

总结:对于特定位置的车牌识别算法非常高效,但对于含有噪声等其他因素的车牌分割处理,相对来说算法还有待完善。

三、实验内容

调试运行下列程序,分析程序,对每条语句给出注释,并显示最终执行结果。总结算法思想及优缺点.I=imread(\'Car.jpg\');%读取图片

[y,x,z]=size(I);% 返回I各维的尺寸,并存储在变量y、x、z中 myI=double(I); %换成双精度数值

%%%%%%%%%%% RGB to HSI %%%%%%%% %begin横向扫描

tic

%计算tic与toc之间程序的运行时间

%%%%%%%% Y 方向 %%%%%%%%%% 分割字符按行积累量

Blue_y=zeros(y,1); %产生y*1的全0矩阵 for i=1:y

%给定i的范围

for j=1:x

:x%给定j的范围

if((myI(i,j,1)=51))&&((myI(i,j,3)=119))) % 蓝色RGB的灰度范围

Blue_y(i,1)= Blue_y(i,1)+1;

%蓝色像素点统计

end

end

end [temp MaxY]=max(Blue_y);

% Y方向车牌区域确定

%temp为向量white_y的元素中的最大值,MaxY为该值的索引( 在向量中的位置)

PY1=MaxY;

%y矩阵的最大元素

while ((Blue_y(PY1,1)>=5)&&(PY1>1))

确定蓝色RGB Blue_y所在位置

PY1=PY1-1;

%对车牌区域的修正,向上调整 end

PY2=MaxY;

while ((Blue_y(PY2,1)>=5)&&(PY2

PY2=PY2+1; end IY=I(PY1:PY2,:,:); %IY为原始图像I中截取的纵坐标在PY1:PY2之间的部分 %end横向扫描

%begin纵向扫描

%%%%%%%% X 方向 %%%%%%%%%%

Blue_x=zeros(1,x);

%产生y*1的全0矩阵

for j=1:x

for i=PY1:PY2

if((myI(i,j,1)=51))&&((myI(i,j,3)=119)))

Blue_x(1,j)= Blue_x(1,j)+1; % Blue_x 的矩阵加一

end

end

end

PX1=1; while ((Blue_x(1,PX1)

PX1=PX1+1; %对车牌区域的修正向下调整 end

PX2=x; while ((Blue_x(1,PX2)PX1)) %确定蓝色RGB Blue_x的位置

PX2=PX2-1; %对车牌区域的修正向下调整 End %end纵向扫描

PX1=PX1-2; % 对车牌区域的修正 PX2=PX2+2;

Plate=I(PY1:PY2,PX1-2:PX2,:); t=toc % 读取计时

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure,imshow(I);% 原始图像\'

figure,plot(Blue_y);grid %创建图像窗口,绘制Blue_y图像,画出网格线\' figure,plot(Blue_x);grid%创建图像窗口,绘制Blue_x图像,画出网格线\'figure,imshow(Plate);

% 车牌截取结果\'

推荐第7篇:遥感数字图像处理实验报告

遥感数字图像处理

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

推荐第8篇:数字图像处理 实验报告(完整版)

数字图像处理

实验一 MATLAB数字图像处理初步

一、显示图像

1.利用imread( )函数读取一幅图像,假设其名为lily.tif,存入一个数组中; 2.利用whos 命令提取该读入图像flower.tif的基本信息; 3.利用imshow()函数来显示这幅图像; 实验结果如下图:

源代码:

>>I=imread(\'lily.tif\') >>whos I >>imshow(I)

二、压缩图像

4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;

5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为lily.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。

6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flily.bmp。 7.用imread()读入图像Sunset.jpg和Winter.jpg; 8.用imfinfo()获取图像Sunset.jpg和Winter.jpg的大小;

9.用figure,imshow()分别将Sunset.jpg和Winter.jpg显示出来,观察两幅图像的质量。 其中9的实验结果如下图:

源代码:

4~6(接上面两个)

>>I=imread(\'lily.tif\')

>>imfinfo \'lily.tif\';

>>imwrite(I,\'lily.jpg\',\'quality\',20);

>>imwrite(I,\'lily.bmp\'); 7~9

>>I=imread(\'Sunset.jpg\');

>>J=imread(\'Winter.jpg\')

>>imfinfo \'Sunset.jpg\'

>>imfinfo \'Winter.jpg\'

>>figure(1),imshow(\'Sunset.jpg\')

>>figure(2),imshow(\'Winter.jpg\')

三、二值化图像

10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。 实验结果如下图:

源代码:

>>I=imread(\'lily.tif\') >>gg=im2bw(I,0.4); F>>igure, imshow(gg)

原始图像:

四、思考题

(1) 简述MatLab软件的特点。

答:①高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;

②具有完备的图形处理功能,实现计算结果和编程的可视化;

③友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;

④功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。

(2) MatLab软件可以支持哪些图像文件格式?

JPEG、JPEG、PCX、TIFF、PNG、GIF、HDF、XWD等等。 (3) 说明函数imread 的用途格式以及各种格式所得到图像的性质。

imread函数用于读入各种图像文件,其一般的用法为

[X,MAP]=imread(‘filename’,‘fmt’) 其中,X,MAP分别为读出的图像数据和颜色表数据,fmt为图像的格式,filename为读取的图像文件(可以加上文件的路径)。

(4) 为什么用I = imread(‘lena.bmp’) 命令得到的图像I 不可以进行算术运算?

Matlab系统默认的算术运算时针对双精度类型(double)的数据,而上述命令产生的矩阵的数据类型是无符号8位,直接 进行运算会溢出。

实验二 图像的代数运算

一.图像的加法运算

在MATLAB中,如果要进行两幅图像的加法,或者给一幅图像加上一个常数,可以调用imadd函数来实现。imadd函数将某一幅输入图像的每一个像素值与另一幅图像相应的像素值相加,返回相应的像素值之和作为输出图像。imadd函数的调用格式如下:

Z = imadd(X,Y)

其中,X和Y表示需要相加的两幅图像,返回值Z表示得到的加法操作结果。 实验结果如下图:

源代码:

I = imread(‘Sunset.jpg’); J = imread(‘Bluehills.jpg’); K = imadd(I,J);

imshow(K);(两幅图尺寸大小一致) 原始图像:

给图像的每一个像素加上一个常数可以使图像的亮度增加。效果如下:

源代码

>>RGB = imread(‘cameraman.tif’); >>RGB2 = imadd(RGB,50); >>subplot(1,2,1);imshow(RGB); >>subplot(1,2,2);imshow(RGB2);

二、图像的减法运算

在MATLAB中,使用imsubtract函数可以将一幅图像从另一幅图像中减去,或者从一幅图像中减去一个常数。imsubtract函数将一幅输入图像的像素值从另一幅输入图像相应的像素值中减去,再将这个结果作为输出图像相应的像素值。imsubtract函数的调用格式如下:

Z = imsubtract(X,Y);

其中,Z是X-Y操作的结果。 实验结果如下图:

源代码

>>rice = imread(\'cameraman.tif\') >>background = imopen(rice, strel(\'disk\',15)) >>rice2 = imsubtract(rice, background) >>subplot(1,2,1);imshow(rice); >>subplot(1,2,2);imshow(rice2);

三、图像的乘法运算

在MATLAB中,使用immultiply函数实现两幅图像的乘法。immultiply函数将两幅图像相应的像素值进行元素对元素的乘法操作(MATLAB点乘),并将乘法的运算结果作为输出图形相应的像素值。immulitply函数的调用格式如下:

Z = immulitply(X,Y) 其中,Z=X*Y。 实验结果如下图:

源代码

I>>= imread(\'zhaowei.bmp\') >>J = immultiply(I,1.2) >>subplot(1,2,1);imshow(I) >>subplot(1,2,2);imshow(J)

四、图像的除法运算

在MATLAB中使用imdivide函数进行两幅图像的除法。imdivide函数对两幅输入图像的所有相应像素执行元素对元素的除法操作(点除),并将得到的结果作为输出图像的相应像素值。imdivide函数的调用格式如下:

Z = imdivide(X,Y) 其中,Z=X/Y。 实验结果如下图:

源代码

>>Rice = imread(\'cameraman.tif\'); >>I = double(Rice); >>J= I * 0.43 + 90 >>Rice2 = uint8(J) >>Ip = imdivide(Rice, Rice2) >>Imshow(Ip, [])

原图像

五、思考题

由图像算术运算的运算结果,思考图像减法运算在什么场合上发挥优势?

答:使用背景减法进行运动目标检测可以提取出完整的目标图像.可将所得标用于进一步的图像处理工作中。

除去人身体在环境中运动产生的动态区域外.背景减法对其它的动态场景的变化、干扰等特别敏感背景图像获取的理想情况是在场景没有运动因素,最简单背景获取方法是当场景中任何目标时采集一幅图像作为背景图像,但这种固定背景图像的方法.只适合应于外界条件较好的场。

实验三 图像增强—空域滤波

一、实验内容与步骤

a) 调入并显示原始图像Sample2-1.jpg 。

b) 利用imnoise 命令在图像Sample2-1.jpg 上加入高斯(gauian) 噪声

c)利用预定义函数fspecial 命令产生平均(average)滤波器

111191111

d)分别采用3x3和5x5的模板,分别用平均滤波器以及中值滤波器,对加入噪声的图像进行处理并观察不同噪声水平下,上述滤波器处理的结果;

e)选择不同大小的模板,对加入某一固定噪声水平噪声的图像进行处理,观察上述滤波器处理的结果。

f)利用imnoise 命令在图像Sample2-1.jpg 上加入椒盐噪声(salt & pepper) g)重复c)~ e)的步骤

h)输出全部结果并进行讨论。

二、实验结果与源代码

源代码

>>I=imread(\'cameraman.tif\'); J = imnoise(I,\'gau\',0.02); J = imnoise(I,\'salt & pepper\',0.02); ave1=fspecial(\'average\',3); ave2=fspecial(\'average\',5); K = filter2(ave1,J)/255; L = filter2(ave2,J)/255; M = medfilt2(J,[3 3]); N = medfilt2(J,[4 4]); imshow(I); figure,imshow(J); figure,imshow(K); figure,imshow(L); figure,imshow(M); figure,imshow(N);

三、思考题/问答题

(1) 简述高斯噪声和椒盐噪声的特点。

高斯噪声是指噪声的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。 高斯白噪声包括热噪声和散粒噪声。而椒盐噪声是指椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声往往由图像切割引起。

(2) 结合实验内容,定性评价平均滤波器/中值滤波器对高斯噪声和椒盐噪声的去噪效果?

通过实验可以看出,中值滤波对椒盐噪声的消噪处理效果比较好,但是对高斯噪声的消噪处理效果不是很理想

(3) 结合实验内容,定性评价滤波窗口对去噪效果的影响?

对比实验结果可以发现:发现对于椒盐噪声,中值滤波效果更好。对于高斯噪声,选用5*5窗口滤波效果好于3*3窗口滤波,但图像模糊程度加重了。

实验四 图像分割

一、实验内容与步骤

(1)使用Roberts 算子的图像分割实验

调入并显示图像room.tif中图像;使用Roberts 算子对图像进行边缘检测处理; Roberts 算子为一对模板:

相应的矩阵为:rh = [0 1;-1 0]; rv = [1 0;0 -1];这里的rh 为水平Roberts 算子,rv为垂直Roberts 算子。分别显示处理后的水平边界和垂直边界检测结果;用“欧几里德距离”和“街区距离”方式计算梯度的模,并显示检测结果;对于检测结果进行二值化处理,并显示处理结果;

(2)使用Prewitt 算子的图像分割实验

使用Prewitt 算子进行内容(1)中的全部步骤。 (3)使用Sobel 算子的图像分割实验

使用Sobel 算子进行内容(1)中的全部步骤。 (4)使用LoG (拉普拉斯-高斯)算子的图像分割实验

使用LoG (拉普拉斯-高斯)算子进行内容(1)中的全部步骤。提示1:处理后可以直接显示处理结果,无须另外计算梯度的模。提示2:注意调节噪声的强度以及LoG (拉普拉斯-高斯)算子的参数,观察处理结果。

二、实验结果与源程序

实验结果如下图:

源程序>>f=imread(\'cameraman.tif\'); [gv,t1]=edge(f,\'sobel\',\'vertical\'); imshow(gv) [gb,t2]=edge(f,\'sobel\',\'horizontal\'); figure,imshow(gb) w45=[-2 -1 0;-1 0 1;0 1 2]; g45=imfilter(double(f),w45,\'replicate\'); T=0.3*max(abs(g45(:))); g45=g45>=T; figure,imshow(g45);

三、思考题/问答题

1、评价一下Roberts 算子、Prewitt 算子、Sobel 算子对于噪声条件下边界检测的性能。

Roberts 算子边缘定位精度较高,但易丢失一部分边缘,同时由于没经过图像平滑计算,因此不能抑制噪声。该算子对具有陡峭的低噪声图像响应最好。

Sobel算子很容易在空间上实现,对噪声具有平滑作用,受噪声影响较小,可提供较为精确的边缘方向信息,但同时也会检测出许多伪边缘,检测到的边缘宽度较粗,边缘位置定位精度不高。

Prewitt 算子与Sobel 算子使用方法一样,都是对图像进行差分和滤波运算,差别只在于使用的模板不一

样,Prewitt 算子比Sobel 算子运算略微简单。

2、为什么LoG梯度检测算子的处理结果不需要象Prewitt 等算子那样进行幅度组合? LOG 算子是根据图像的信噪比来求出检测边缘的最优滤波器。该方法首先采用高斯函数对图像进行低通平滑滤波,然后采用Laplacia 算子进行高通滤波,根据二阶导数的过零点来检测图像的边缘。因而不需要象Prewitt 等算子那样进行幅度组合。

3、实验中所使用的四种算子所得到的边界有什么异同?

Roberts 算子检测出的图像轮廓边缘很细,连续性较差,边缘信息有一定丢失,出现的噪点比较多。

Sobel 和Prewitt 两个算子检测出的边缘效果几乎一致,比Roberts 算子的检测结果要好,边缘较为连续,对噪声不敏感,但是线条稍粗,出现了一些伪边缘。

二阶LOG 算子检测出来的图像边缘更加连续,边缘也比较细小。但是由于二阶算子的特性,对噪声比较敏感。当σ的值越小,平滑的程度就越小,于是会出现零星的假边缘;而σ的值越大,平滑的程度也越大,但是部分真实的边缘会丢失,出现边缘间断现象

实验五 形态学运算

一、实验内容与步骤

1.调入并显示图像Plane2.jpg;

2.选取合适的阈值,得到二值化图像Plane2-2.jpg;3.设置结构元素;

4.对得到的二值图像Plane2-2.jpg进行腐蚀运算;5.对得到的二值图像Plane2-2.jpg进行膨胀运算; 6.对得到的二值图像Plane2-2.jpg进行开运算; 7.对得到的二值图像Plane2-2.jpg进行闭运算; 8.将两种处理方法的结果作比较;

二、实验结果与源程序

实验结果如下图:

源程序

I=imread(\'Sunset.jpg\'); level = graythresh(I);

%得到合适的阈值 bw = im2bw(I,level);

%二值化

SE = strel(\'square\',3);

%设置膨胀结构元素 BW1 = imdilate(bw,SE);

%膨胀 SE1 = strel(\'arbitrary\',eye(5));

%设置腐蚀结构元素 BW2 = imerode(bw,SE1);

%腐蚀 BW3 = bwmorph(bw, \'open\');

%开运算 BW4 = bwmorph(bw, \'close\');

%闭运算 imshow(I); figure,imshow(bw); figure,imshow(BW1); figure,imshow(BW2); figure,imshow(BW3); figure,imshow(BW4);

三、思考题/问答题

1.结合实验内容,评价腐蚀运算与膨胀运算的效果。

腐蚀是一种消除边界点,它使边界向内部收缩,消除小且无意义的物体。膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。可以用来填补物体中的空洞。

2.结合实验内容,评价开运算与闭运算的效果。

先腐蚀后膨胀的过程称为开运算。实验中,开运算能够去除孤立的小点,毛刺和小桥(即连通两块区域的小点),而总的位置和形状不变。

先膨胀后腐蚀称为闭运算。实验中,闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变。

3.腐蚀、膨胀、开、闭运算的适用条件是什么?

由于噪声的影响,图象在阈值化后所得到边界往往是很不平滑的,物体区域具有一些噪声孔,背景区域上散布着一些小的噪声物体。连续的开和闭运算可以有效地改善这种情况。有时需要经过多次腐蚀之后再加上相同次数的膨胀,才可以产生比较好的效果。

推荐第9篇:昆明理工大学(数字图像处理)实验报告

昆明理工大学(数字图像处理)实验报告

实验名称

图像的基本变换 实验时间 2014 年 3 月 20 日 专业班级

学 号 姓 名

成 绩 教师评语:

一、实验目的与要求

1.熟悉及掌握在MATLAB中能够处理哪些格式图像。

2.熟练掌握在MATLAB中如何读取图像。

3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。

4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。 5.图像间如何转化

二、实验原理及知识点

1、数字图像的表示和类别

一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。

图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。

术语‘空间域’指的是图像平面本身,在空间与内处理图像的方法是直接对图像的像素进行处理。空间域处理方法分为两种:灰度级变换、空间滤波。空间域技术直接对像素进行操作其表达式为

g(x,y)=T[f(x,y)] 其中f(x,y)为输入图像,g(x,y)为输出图像,T是对图像f进行处理的操作符,定义在点(x,y)的指定领域内。

定义点(x,y)的空间邻近区域的主要方法是,使用中心位于(x,y)的正方形或长方形区域,。此区域的中心从原点(如左上角)开始逐像素点移动,在移动的同时,该区域会包含不同的领域。T应用于每个位置(x,y),以便在该位置得到输出图像g。在计算(x,y)处的g值时,只使用该领域的像素。

灰度变换T的最简单形式是使用领域大小为1×1,此时,(x,y)处的g值仅由f在该点处的亮度决定,T也变为一个亮度或灰度级变化函数。当处理单设(灰度)图像时,这两个术语可以互换。由于亮度变换函数仅取决于亮度的值,而与(x,y)无关,所以亮度函数通常可写做如下所示的简单形式:

s=T(r) 其中,r表示图像f中相应点(x,y)的亮度,s表示图像g中相应点(x,y)的亮度。

1.图像的线性变换g(x,y)=2*I(x,y)

I=imread(\'D:\\picture1.jpg\'); imshow (I); [m,n]=size(I); for x=1:m; for y=1:n;

g(x,y)=2*I(x,y); end end

imshow(g);

图像的线性变换:g(x,y)=I(x,y)

I=imread(\'D:\\picture1.jpg\'); imshow (I); [m,n]=size(I); for x=1:m; for y=1:n;

g(x,y)=I(x,y); end end imshow(g);

3.图像的非线性变换k1=40*log(k+1);

I=imread(\'D:\\picture1.jpg\'); imshow (I);

I1=rgb2gray(I); k=im2double(I1); k1=40*log(k+1); H=uint8(k1); imshow(H);

4.图像的非线性变换k1=40*exp(k+1);I=imread(\'D:\\picture1.jpg\'); subplot(311) imshow (I);

I1=rgb2gray(I); subplot(312) imshow(I1)

k=im2double(I1); k1=40*exp(k+1); H=uint8(k1); subplot(313) imshow(H);

5.图像的分段线性变换

function Z=imadjust_sec(X,a,b,c,d) [m,n]=size(X); X1=im2double(X); for i=1:m for j=1:n

if(X1(i,j)

Z(i,j)=c*X1(i,j)/a;

end

if(X1(i,j)>=a&&X1(i,j)

Z(i,j)=(d-c)*(X1(i,j)-a)/(b-a)+c;

end if(X1(i,j)>=b)

Z(i,j)=(1-d)*(X1(i,j)-b)/(1-b)+d;

end end end

X=imread(\'D:\\picture6.jpg\');

Z=imadjust_sec(X,0.3,0.5,0.2,0.6); imshow(X),figure,imshow(Z);

推荐第10篇:中南大学数字图像处理实验报告

实 验 报 告

实验名称 课程名称

图像变换及频域滤波

数字图像处理

姓名

班级

学号

日期

地点

实验一 图像变换及频域滤波

一.实验目的

(1)编写快速傅里叶变换算法程序,验证二维傅里叶变换的平移性和旋转不变。; (2)实现图像频域滤波,加深对频域图像增强的理解。 二.实验环境及开发工具

Windws XP、MATALAB7.0、Visual C++、Visual Basic 三.实验方法

1.验证二维傅里叶变换的平移性和旋转不变性;

a.要验证证其平移特性,就先建立一个二维图象,然后再对其平移,通过观察两者的频谱图来观察平移特性,为了方便起见,我们选择特殊情况来分析,令u0=v0=N/2,使f2(x,y)(1)xyf1(x,y)F(u-N/2,v-N/2),达到将原始F(U,V)四周频谱移到中心的效果,及达到频谱中心化。

b.验证旋转不变性可以通过将原始数组的通过移动45度,然后再比较旋转后与旋转前的频谱,得出频谱旋转不变性的结论。 具体步骤:

1)产生如图1所示图像f1(x,y)(128×128大小,暗处=0,亮处=255) 2)同屏显示原图f1和FFT(f1)的幅度谱图。

3)若令f2(x,y)(1)xyf1(x,y),重复以上过程,比较二者幅度谱的异同。 4)将f2(x,y)顺时针旋转45度得到f3(x,y),显示FFT(f3)的幅度谱,并与FFT(f2)的幅度谱进行比较。

图1实验图象f1(x, y)

2.实现图像频域滤波,加深对频域图像增强的理解。频率域中进行增强是相当直观的,主要步骤有: 1)计算需要增强的图象的傅立叶变换; 2)将其与一个(根据需要设计的)转移的函数相乘; 3)再将结果反傅立叶变换以得到增强的图象.为了直观的展示频域增强,可以通过下面任务来展现: 对如图2所示的数字图像lena.img(256×256大小、256级灰度)进行频域的理想低通、高通滤波,同屏显示原图、幅度谱图和低通、高通滤波的结果图。

四.实验分析

1.验证二维傅里叶变换的平移性和旋转不变性 1)建立一个二维数组并要求该数组能够显示成图1.

a=zeros(128,128) for y=54:74 for x=34:94 a(x,y)=1; end end

然后再用显示图象的函数显示即可, 在此我们用imshow(a)语句。 为了得到幅度谱图,可以地数组a进行快速傅立叶变换,然后再用

图2 实验图象lena.img Mesh语句便可得到其幅度谱.2)观察其平移特性。

根据实验方法中的分析,构造一个新的数组存入平移后的原数组,通过在嵌套中加入语句b(x,y)=(-1).^(x+y).*a(x,y);即可,然后再用类似上面的方法画出图象和幅度谱.3)验证其旋转不变性。

首先将所得图画旋转45度,这需要通过将数组先相应的旋转,这个旋转有两种方式: (1)根据旋转后的图象算出旋转后的数组形式,通过点与点之间的变换来实现,需要分区间来画图和构建新的数组.然后用imshow来显示. (2)直接用IMROTATE(A,ANGLE,METHOD)语句,其中A表示数组,ANGLE表示旋转角度,METHOD表示旋转方向.我们令t=imrotate(a,315,\'nearest\',\'crop\')令可将数组a逆时针旋转135度,即相当于顺时针旋转45度。

然后比较旋转前后两幅图的差别以及其频率谱和幅度谱的异同。最后可以得结论。

2.实现图像频域滤波

1)读出图片,并生成图片的数组.首先要将lena.img与MATLAB程序文档放在一个目录下面,然后再用语句a=fopen(\'lena.img\',\'r\'); b=fread(a,[256,256],\'uchar\'); 打开图片并获得组成该图片的数组.然后用imshow(b),便可得到lena的人头图片.其次与上面任务一样,对图片数组进行快速傅立叶变换,然后用mesh()语句画出他的幅度谱图, 2)进行频域增强的低通滤波部分。

频域法的过程是: f(x,y)g(x,y).理想低通滤波的转移函数需满足以下条件: 正变换----F(u,v)---

修正H(u,v)---G(u,v)---

反变换H(u,v) H(u,v)=1; 当D(u,v) Do时; 其中Do是一个非负整数, D(u,v)是反映点(u,v)到频率平面原点的距离。当小于Do的频率可以完全不受影响的通过滤波器,而大于Do的则完全不能通过滤波器,该Do可以形象的表示成截断频率。

在低通滤波时,分别令Do等于88,24,11,5时,可得到低通滤波后的结果图象,通过观察其图象与幅度谱图来理解低通滤波的特性.3)进行频域增强的高通滤波部分。

一个2---D理想高通滤波器的转移函数满足下列条件 H(u,v) H(u,v)=0; 当D(u,v) Do时; 所得到的结果恰好与低通滤波相反, 当大于Do的频率可以完全不受影响的通过滤波器,而小于Do的则完全不能通过滤波器。

在高通滤波时,分别令Do等于2,8,24时,分别得到高通滤波后的结果图像,通过观察其图象与幅度谱图来理解高通滤波的特性。 关于此部分主要的函数语句是: (1) m=abs(b); m0=15*log(m+1.001); surf(m0); 求出数组之后将其进行fft2得到m,然后求出其绝对值,为了避免其数值过大,求其对数,且为了避免出现0和1的情况,可以在m的基础上加上1.001,最后用surf()函数显示出3----D效果.(2) r=24;

for x=1:256 for y=1:256

if (x-128).^2+(y-128).^2

end

end

通过对r数值的改变,和if条件的变化来实现不同的低通和高通情况下的滤波.五.实验结果及结论

1.验证二维傅里叶变换的平移性和旋转不变性;

1.1 产生的图像f1(x,y)与fft2(f1)幅度谱的程序如下:

clear all; close all; a=zeros(128,128) for y=54:74 for x=34:94 a(x,y)=1; end end figure(1) a1=fft2(a); subplot(1,2,1); imshow(a); subplot(1,2,2); a2=abs(a1); mesh(a2); for x=1:128 for y=1:128

b(x,y)=(-1).^(x+y).*a(x,y); end end figure(2) b1=fft2(b); subplot(1,2,1);

imshow(b); subplot(1,2,2); b2=abs(b1); mesh(b2);

figure(3)

t=imrotate(a,315,\'nearest\',\'crop\') t1=fft2(t); subplot(1,2,1); imshow(t); subplot(1,2,2); t2=abs(t1); surf(t2);

结果如图

1.2 令f2(x,y)(1)xyf1(x,y),则图像f2与FFT(f2)的幅度谱图如下:

结果分析:对比两图可以得到,1.2得的图就是将1.1得的图的频谱往中心移.即称为频谱中心化,将能量集中的4个角往中心靠拢。

1.3若将f2(x,y)顺时针旋转45°得到f3(x,y),则f3及FFT(f3)的幅度谱图如下

结果分析:将1.3得的图与1.1得的图比较可知,将原图移动旋转45度以后,幅度谱图仍然没的改变,图象能量依然集中在4个角。 2.实现图像频域滤波

2.1 对数字图像lena.img 进行频域的理想低通,同屏显示原图、幅度谱图和低通滤波的结果图。其中,取理想低通滤波的半径R分别为8

8、

24、11和5。

程序代码如下(取r=8时)

clear all; close all;

a=fopen(\'C:\\Users\\lenovo\\Desktop\\lena.img\',\'r\'); b=fread(a,[256,256],\'uchar\'); fclose(a); figure(1) subplot(1,2,1) imshow(b,[0,255]); b=fft2(b) m=abs(b); subplot(1,2,2) m0=15*log(m+1.001) surf(m) q=b;

t=fftshift(q) r=8; for x=1:256 for y=1:256

if (x-128).^2+(y-128).^2>r.^2; t(x,y)=0;

end

end end h2=abs(t);

h02=15*log(1.001+h2) figure(2)

imshow(h02,[0,255]); t=ifftshift(t); z=ifft2(t); figure(3); subplot(1,2,1) imshow(z,[0,255]); n=fft2(z); subplot(1,2,2); n=15*log(1.001+abs(n)); surf(n); 结果如下:

原图像及其频谱图

R=88时的理想低通滤波结果图和滤波频谱图

RR=24时的理想低通滤波结果图和滤波幅度谱图

R=11时的理想低通滤波结果图和滤波频谱图

R=5时的理想低通滤波结果图和滤波频谱图

当 R=5 时,滤波后的图像很模糊,无法分辨;

当 R=11 时,滤波后的图像比较模糊,但基本能分辨出人脸的形状; 当 R=24 时,滤波后的图像有些模糊,能分辨出脸上的器官轮廓,但由于理想低通滤波器在频域的锐截止特性,滤波后的图像有较明显的振铃现象;

当 R=88 时,滤波后的图像比较清晰,但高频分量损失后,图像边沿与文字变的有些模糊,在图像的边框附近仍有振铃现象。

2.2 对数字图像lena.img 进行频域的理想高通,同屏显示原图、幅度谱图和高通滤波的结果图。其中,取理想高通滤波的半径R 分别为

2、8 和24:

原图像及其频谱图

R=2时的理想高通滤波结果图和滤波频谱图

R=8时的理想高通滤波结果图和滤波频谱图

R=24时的理想高通滤波结果图和滤波频谱图

注:对理想高通滤波后的图像用直接灰度变换方法作了灰度范围的扩展。

当 R=2 时,滤波后的图像无直流分量,但灰度的变化部分基本上都保留了; 当 R=8时,滤波后的图像在文字和图像边缘部分的信息仍然保留; 当 R=24 时,滤波后的图像只剩下文字和白条边缘等信号突变的部分。

六、实验心得

、熟悉了MATLAB7.0的使用

、验证了二维傅里叶变换的平移性和旋转不变性。

、实现了对图像的频域滤波,掌握了频域图像增强,了解了低通滤波对图像的影响。

实 验 报 告

实验名称 课程名称

空间域图像增强 数字图像处理

姓名

成 马 力

班级

学电子信息1101

0909110108

日期 2013.11.29-- 2013.10.7

地点

综合实验楼四楼

实验二 空间域图像增强

一、实验目的

1、了解空间域图像增强的各种方法(点处理、掩模处理);

2、通过编写程序掌握采用直方图均衡化进行图像增强的方法;

3、使用邻域平均法编写程序实现图像增强,进一步掌握掩模法及其改进(加门限法)消除噪声的原理;

二、实验环境及开发工具

Windws2000/XP、MATLAB 6.x、Visual C++、Visual Basic或其它

三、实验方法

对如图所示的两幅128×1

28、256级灰度的数字图像fing_128.img和cell_128.img进行如下处理:

指纹图fing_128.img 显微医学图像(1)对原图像进行直方图均衡化处理,同屏显示处理前后图像及其直方图,比 较异同,并回答为什么数字图像均衡化后其直方图并非完全均匀分布。 (2)对原图像加入点噪声,用4-邻域平均法平滑加噪声图像(图像四周边界不处理,下同),同屏显示原图像、加噪声图像和处理后的图像。

①不加门限; ②加门限T11(其中f(m,n)2f(i,j)) f(m,n),2Nij

四、实验结果及分析

1、直方图均衡化处理 程序如下:

clear all; close all;

fid=fopen(\'C:\\Users\\lenovo\\Desktop\\fing_128.img\',\'r\');

f=fread(fid,[128,128],\'uchar\'); subplot(2,1,1); imshow(f,[0,255]); q=zeros(1,256); for x=1:128 for y=1:128

q(f(x,y)+1)=q(f(x,y)+1)+1; end end

s=q./(128*128); X=0:255; subplot(2,1,2); bar(X,s\'); figure;

t=zeros(1,256); t(1)=s(1); for i=2:256

t(i)=t(i-1)+s(i); end

subplot(2,1,1); bar(X,t\');

t0=floor(255*t+0.5); subplot(2,1,2); bar(X,t0\'); figure;

t1=zeros(1,256); for i=1:256

t1(t0(i)+1)=s(i)+t1(t0(i)+1); end

subplot(2,1,1); bar(X,t1\'); f1=zeros(128,128) for x=1:128 for y=1:128

f1(x,y)=t0(f(x,y)+1); end end

subplot(2,1,2); imshow(f1,[0,255]); 运行结果:

(1)、指纹均衡化处理

(2)、细胞的均衡化处理

2、对原图像加入点噪声

程序代码 不加门限:

clear all; close all; fid=fopen(\'C:\\Users\\lenovo\\Desktop\\fing_128.img\',\'r\');

f=fread(fid,[128,128],\'uchar\'); subplot(2,2,1); imshow(f,[0,255]); for x=1:128 for y=1:128 if x==y f(x,y)=255; elseif x+y==100 f(x,y)=0; end end end

subplot(2,2,2); imshow(f,[0,255]); f0=f; for x=2:127 for y=2:127

f0(x,y)=(f((x-1),y)+f((x+1),y)+f(x,(y-1))+f(x,(y+1)))./4;

end end

subplot(2,2,3); imshow(f0,[0,255]); t=fft2(f); T=t(1,1)/128;

f1=f; for x=2:127 for y=2:127

h=(f((x-1),y)+f((x+1),y)+f(x,(y-1))+f(x,(y+1)))./4;

if abs(f(x,y)-h)>T f1(x,y)=h; else

f1(x,y)=f(x,y); end end end

subplot(2,2,4); imshow(f1,[0,255]); 运行结果:

加门限:

clear all; close all;

fid=fopen(\'C:\\Users\\lenovo\\Desktop\\fing_128.img\',\'r\');

fg=fread(fid,[128,128],\'uchar\');

subplot(2,2,1); imshow(fg,[0,255]); a=randn(128,128); f=a.*20+fg; subplot(2,2,2); imshow(f,[0,255]); f0=f; for x=2:127 for y=2:127

f0(x,y)=(f((x-1),y)+f((x+1),y)+f(x,(y-1))+f(x,(y+1)))./4;

end end

subplot(2,2,3); imshow(f0,[0,255]); t=fft2(f); T=t(1,1)/128; f1=f; for x=2:127 for y=2:127

h=(f((x-1),y)+f((x+1),y)+f(x,(y-1))+f(x,(y+1)))./4;

if abs(f(x,y)-h)>T f1(x,y)=h; else

f1(x,y)=f(x,y); end

end end

subplot(2,2,4); imshow(f1,[0,255]); 运行结果:

(2) 细胞加入噪声及去噪

3、结果分析

(1)直方图均衡化处理后图像的对比度增强,变得相对清晰,达到了图像增强的效果。

(2)去噪的同时图像的某些细节变得模糊。

五、实验心得

1、通过本次试验了解了空间域图像增强的各种方法,如点处理、掩模处理等。

2、学会并掌握了编写采用直方图均衡化进行图像增强的方法。

实 验 报 告

实验名称 课程名称

图像边缘检测 数字图像处理

姓名

成 马 力

班级

学电子信息1101

0909110108

日期

地2013.11.19

综合实验楼四楼

实验三

图像边缘检测

一、实验目的

(1)了解并掌握使用微分算子进行图像边缘检测的基本原理;

(2)编写程序使用Laplacian算子(二阶导数算子)实现图像锐化,进一步理解图像锐化的实质;

(3)掌握使用不同梯度算子(一阶导数算子)进行图像边缘检测的原理、方法,根据实验结果分析各种算子的工作效果;

(4)总结实验过程(实验报告,左侧装订):方案、编程、调试、结果、分析、结论。

二、实验环境

操作系统:Windws2000/XP所用软件: MATLAB

6、Visual C++、Visual Basic或其它

三、实验内容及步骤

对256×256大小、256级灰度的数字图像lena.img(如图5.1所示)进行如下处理:

(1)对原图像进行锐化处理,显示处理前、后图像:

用Laplacian算子进行锐化,分1和2两种情况,各按如下不同情况给出处理结果,并回答提出的问题:

2g(m,n)f(m,n)f 1①

图1 实验图象lena.img ② g2(m,n)4f(m,n)[f(m1,n)f(m1,n)f(m,n1)f(m,n1)] 问题:(1)f(m,n)和g1(m,n)、g2(m,n)之间有何关系?g2(m,n)代表图像中的哪些信息?由此得出图像锐化的实质是什么?

(2)分别利用Roberts、Prewitt和Sobel边缘检测算子,对原图像进行边缘检测,显示处理前、后图像。

四、实验结果与分析 程序代码:

clear all; close all; fid=fopen(\'C:\\Users\\lenovo\\Desktop\\lena.img\',\'r\'); f=fread(fid,[256,256],\'uchar\'); subplot(2,2,1); imshow(f,[0,255]); g1=f;g2=f; a=1; for x=2:255 for y=2:255

g1(x,y)=f(x,y)-(f((x-1),y)+f((x+1),y)+f(x,(y-1))+f(x,(y+1))-f(x,y).*4).*a;

g2(x,y)=f(x,y).*4*a-(f((x-1),y)+f((x+1),y)+f(x,(y-1))+f(x,(y+1))).*a; end end subplot(2,2,2); imshow(g1,[0,255]); subplot(2,2,3); imshow(g2,[0,255]); 运行结果

a=1时原图、g1和g2的图像

a=2时原图、g1和g2的图像

利用Roberts、Prewitt和Sobel算子对lena.img进行边缘检测 程序代码:

clear all; close all; fid=fopen(\'C:\\Users\\lenovo\\Desktop\\lena.img\',\'r\'); f=fread(fid,[256,256],\'uchar\'); GR=f; GP=f; GS=f; for x=2:255 for y=2:255 GRx(x,y)=f(x,y)-f(x+1,y+1); GRy(x,y)=f(x,y+1)-f(x+1,y); GR(x,y)=sqrt((GRx(x,y)).^2+(GRy(x,y)).^2);

GPx(x,y)=(f(x-1,y+1)+f(x,y+1)+f(x+1,y+1))/3-(f(x-1,y-1)+f(x,y-1)+f(x+1,y-1))/3;

GPy(x,y)=(f(x-1,y-1)+f(x-1,y)+f(x-1,y+1))/3-(f(x+1,y-1)+f(x+1,y)+f(x+1,y+1))/3; GP(x,y)=sqrt((GPx(x,y)).^2+(GPy(x,y)).^2);

GSx(x,y)=(f(x-1,y+1)+2*f(x,y+1)+f(x+1,y+1))/3-(f(x-1,y-1)+2*f(x,y-1)+f(x+1,y-1))/3;

GSy(x,y)=(f(x-1,y-1)+2*f(x-1,y)+f(x-1,y+1))/3-(f(x+1,y-1)+2*f(x+1,y)+f(x+1,y+1))/3; GS(x,y)=sqrt((GSx(x,y)).^2+(GSy(x,y)).^2); end end subplot(2,2,1); imshow(f,[0,255]);title(\'ԭͼÏñ\'); subplot(2,2,2); imshow(GR,[0,255]);title(\'Roberts\'); subplot(2,2,3); imshow(GP,[0,255]);title(\'Prewitt\'); subplot(2,2,4); imshow(GS,[0,255]);title(\'Sobel\'); 运行结果:

a=2时原图、g1和g2的图像 分析:

g1(m,n)和g2(m,n)是f(m,n)的两个分量;g2(m,n)代表图像中的低频信息;因此得出图像锐化的实质是对原图像进行变换,保留高频成分。

五、实验结论

1、通过本实验了解了并掌握了使用微分算子进行图像边缘检测的基本原理;

2、学会使用Laplacian算子(二阶导数算子)实现图像锐化的程序编写。

3、掌握了使用不同梯度算子(一阶导数算子)进行图像边缘检测的原理、方法。

六、参考文献

[1] R.C.Gonzalez & R.E Woods.Digital Image Proceing(2E).Prentice Hall PTR,2002 中译本:阮秋琦等译.数字图像处理(第二版).北京:电子工业出版社,2005.3 [2] 冈萨雷斯.数字图像处理(MATLAB 版).北京:电子工业出版社,2005.9 [3] K.R.Castleman.数字图像处理.朱志刚等译.北京:电子工业出版社,1998.9 [4] 章毓晋.图象工程(上册)—图象处理和分析.北京:清华大学出版社,2003.7 [5] 何斌.Visual C++数字图像处理(第二版).北京:人民邮电出版社,2002.1

第11篇:数字图像处理——彩色图像实验报告

6.3实验步骤

(1)对彩色图像的表达和显示

* * * * * * * * * * * *显示彩色立方体* * * * * * * * * * * * *

rgbcube(0,0,10);

%从正面观察彩色立方体

rgbcube(10,0,10); %从侧面观察彩色立方 rgbcube(10,10,10); %从对角线观察彩色立方体

%* * * * * * * * * *索引图像的显示和转换* * * * * * * * * f=imread(\'D:\\Picture\\Fig0604(a)(iris).tif\'); figure,imshow(f);

%f是RGB真彩图像

%rgb图像转换成8色索引图像,不采用抖动方式

[X1,map1]=rgb2ind(f,8,\'nodither\'); figure,imshow(X1,map1);

%采用抖动方式转换到8色索引图像

[X2,map2]=rgb2ind(f,8,\'dither\'); figure,imshow(X2,map2); %显示效果要好一些 g=rgb2gray(f);

%f转换为灰度图像

g1=dither(g);

%将灰色图像经过抖动处理,转换打二值图像figure,imshow(g);

%显示灰度图像

figure,imshow(g1);

%显示抖动处理后的二值图像

程序运行结果:

*

彩色立方体原图

不采用抖动方式转换到8色索引图像采用抖动方式转换到8色索引图像

灰度图像抖动处理后的二值图像

(2)彩色空间转换

f=imread(\'D:\\Picture\\Fig0604(a)(iris).tif\'); figure,imshow(f);

%转换到NTSC彩色空间

%f是RGB真彩图像

ntsc_image=rgb2ntsc(f);

figure,imshow(ntsc_image(:,:,1));%显示亮度信息 figure,imshow(ntsc_image(:,:,2));%显示色差信息 figure,imshow(ntsc_image(:,:,3));%显示色差信息

%转换到HIS彩色空间

hsi_image=rgb2hsi(f);

figure,imshow(hsi_image(:,:,1));%显示色度信息 figure,imshow(hsi_image(:,:,2)); %显示饱和度信息 figure,imshow(hsi_image(:,:,3));%显示亮度信息

程序运行结果:

原图

转换到NTSC彩色空间

显示亮度信息显示色差信息显示色差信息

转换到HIS彩色空间

显示色差信息显示饱和度信显示亮度信息

(3)彩色变换

f=imread(\'D:\\Picture\\Fig0614(a)(Chalk Original).tif\');

G=ice(\'image\',f);

%打开ice窗口对图像进行调整

%在窗口中执行以下操作:

%a)得到图像的补色

%b)拖动映射曲线,对图像显示效果进行修改

%c)在颜色通道中选中某一颜色,然后对映射曲线进行修改

程序运行结果(1):

全彩色图片ICE窗口

它的补色ICE窗口

拖动映射曲线,图像的显示效果

ICE窗口

f2=imread(\'D:\\Picture\\ JLK Magenta.tif\'); figure,imshow(f2); %在CMYK彩色空间内打开图像 选择Red

ICE窗口

g2=ice(\'image\',f2,\'space\',\'CMYK\');

%f2的图像色彩偏红,拖动映射曲线,

%调整映射参数,使图像的色彩看起来比较正常。

程序运行结果(2)

原图

在CMYK彩色空间内打开图像

调整映射参数后

ICE窗口

(4)彩色空间滤波

%* * * * * * * * * * * * * * * * * * * * 彩色图像平滑 * * * * * * * * * * * * * * * * * * * * * *

fc=imread(\'D:\\Picture\\Fig0604(a)(iris).tif\'); figure,imshow(fc); h=rgb2hsi(fc);

H=h(:,:,1);

S=h(:,:,2);

I=h(:,:,3);

%转换到HIS彩色空间

%色度分量

%饱和度分量

%亮度分量

%25×25的方形平滑算子 w=fspecial(\'average\',25);

I_filtered=imfilter(I,w,\'replicate\'); %对亮度分量进行平滑操作 H1=cat(3,H,S,I_filtered); %将H、S、I三个分量重新组合起来f=hsi2rgb(H1);

f=min(f,1);

%转换到RGB彩色空间

%f的值控制在[0,1]之间

figure,imshow(f);

%彩色图像平滑处理 %* * * **** * * * * * * * * * * * * 彩色图像锐化 * * * * * * * * * * * * * * * * * * * * * *

fb=imread(\'D:\\Picture\\Fig0604(a)(iris).tif\'); lapmask=[1 1 1;1 -8 1;1 1 1]; %拉普拉斯算子 g=imfilter(fb,lapmask,\'replicate\');%拉普拉斯算子处理 figure,imshow(g);

%图像锐化后与原图像相减

fen=imsubtract(fb,g);

figure,imshow(fen); %显示差值图像

程序运行结果:

原图彩色图像平滑处理

拉普拉斯算子处理

锐化处理

(5)彩色图像分割

%* * * * * * * * * * * * * * * * * 彩色边缘检测* * * * * * * * * * * *

close all;clear;clc;

f=imread(\'iris.tif\'); %f如图6-4所示

%直接计算彩色边缘VG,并得到对单独彩色平面的二维梯度求和形成的梯度PPG

[VG,A,PPG]=colorgrad(f);

figure,imshow(VG,[ ]);

%显示彩色梯度图像 figure,imshow(A,[ ]);

%显示彩色梯度对应的角度图像

figure,imshow(PPG,[ ]);

%显示分量梯度图像

g=VG-PPG;

%计算两种梯度方法得到的梯度之差 figure,imshow(g,[ ]);

程序运行结果:

%显示差值图像

彩色梯度图像 彩色梯度对应的角度图像

分量梯度图像两种梯度差值图像

%* * * * * * * * * * * * * * * * * 彩色图像分割 * * * * * * * * * * * * * * * * * * * * * * * * *

f=imread(\'jupitermoon.tif\'); %f如图6-4所示 mask=roipoly(f);

%取得选定区域图像的红色分量

%手工选定图中红色区域

R=immultiply(mask,f(:,:,1));

%取得选定区域图像的绿色分量

G=immultiply(mask,f(:,:,2)); %取得选定区域图像的蓝色分量

B=immultiply(mask,f(:,:,3));

g=cat(3,R,G,B);

%取得选定区域的RGB图像 figure,imshow(g);

%显示取得选定区域

[M,N,K]=size(g);

%选定区域的大小

I=reshape(g,M*N,3);

%对g中的像素进行重排,按列序拉成一行 idx=find(mask);

%找到mask中的像素在重排后的图像g中位置 I=double(I(idx,1:3));

%转换到double类型 [C,m]=covmatrix(I);

%计算协方差矩阵C主对角线上的元素,即方差 %>>sd=sqrt(d)%求得这些元素的平方根,即均方差

均方差

%用欧式距离对图像进行彩色分割,阈值为25

E25=colorseg(\'euclidean\',f,25,m); E251=f; E251(E25==0)=0 figure,imshow(E251,[]);

%用马氏距离对图像进行彩色分割,阈值为25 M25=colorseg(\'mahalanobis\',f,25,m,C); figure , imshow(M25 , [ ]); 程序运行结果:

原图选定区域

欧氏距离彩色分割马氏距离彩色分割

6.4 思考题

(1)请将图6-1所示的彩色图像转换到灰度图像,并根据灰度值对此灰度图像进行索引化,手工指定索引表中的RGB值,并把此索引图像显示出来。

程序代码如下

%思路:把原图想转换为128位索引图

close all;clear;clc; %将f从灰度图像转换为索引图像,x是索引图像; %map是索引矩阵,R,G,B的值都相等

f=imread(\'D:\\Picture\\RGB_iris.tif\'); figure,imshow(f);

%f是RGB图像 f1=rgb2gray(f);

%将f转换成灰度图像 figure,imshow(f1); [x,map]=gray2ind(f1,128);

figure,imshow(x); %将map中的值做下面改变则R,G,B的值不相等,产生彩色

%把灰度图像转化成128位的索引图

map(1,:)=0.5; map(: ,1)=0.5; map(2,:)=0.4; map(1,1)=0; figure,imshow(f1,map);

程序运行结果:

原RGB图像

灰度图像

索引图 修改索引表后的图像

(2)6.3节的(4)是将图像转换到HIS空间后再对亮度分量进行平滑操作,试直接对原图像的RGB三个分量分别进行平滑操作,并计算两种操作方法的图像差值。

程序代码如下:

f=imread(\'D:\\Picture\\RGB_iris.tif\'); figure,imshow(f); %直接对原图像的RGB三个分量分别进行平滑操作 H=f(:,:,1);

S=f(:,:,2);

I=f(:,:,3);

%色度分量

%饱和度分量

%亮度分量

%25×25的方形平滑算子 w=fspecial(\'average\',25);

H_filtered=imfilter(H,w,\'replicate\');

%对色度分量进行平滑操作 S_filtered=imfilter(S,w,\'replicate\');

%对饱和度分量进行平滑操作 I_filtered=imfilter(I,w,\'replicate\');

%对亮度分量进行平滑操作 %将H、S、I三个分量重新组合起来

Ha=cat(3,H_filtered,S_filtered,I_filtered); Ha=im2double(Ha);

%转化成double类型 figure,imshow(Ha); %转换到HIS彩色空间 h=rgb2hsi(f);

%转换到HIS彩色空间

H=h(:,:,1);

S=h(:,:,2);

I=h(:,:,3);

%色度分量

%饱和度分量 %亮度分量 %25×25的方形平滑算子 w=fspecial(\'average\',25);

I_filtered=imfilter(I,w,\'replicate\'); %对亮度分量进行平滑操作 %将H、S、I三个分量重新组合起来 H1=cat(3,H,S,I_filtered); fb=hsi2rgb(H1);

%转换到RGB彩色空间 fb=min(fb,1);

figure,imshow(fb);

%f的值控制在[0,1]之间

%彩色图像平滑处理

fen=imsubtract(Ha,fb); figure,imshow(fen); 程序运行结果:

%计算两中方式处理后图像的差值

原图

直接对RGB三分量进行平滑操作转换到HIS空间对亮度进行平滑操作

差值图像

试验中的问题和心得体会:

本次实验是彩色图像处理。

(1)通过这个实验我了解了RGB图像以及索引图像在MATLAB中的存储和询问方式

(2)了解RGB空间到其他彩色空间的转换方式和转换方法 (3)知道了一些彩色图像的空间滤波方法 (4)了解在RGB向量空间中检测彩色边缘的方法 (5)了解在RGB向量空间中对图像进行分割的方法

遇到的问题:在做思考题(2)的时候,计算两种平滑处理的得到图像的差值的中程序出现了问题,经过看出错信息,认真检查程序后,发现是因为直接平滑处理的图像是unit8类型的,而转换到HIS空间后,得到的图像是double类型,二者的类型不同,导致使用imsubtract函数的时候出现了问题。感觉做matlab的实验和平时编写C代码的时候有很多地方是相同的,都会经历:编码,debug,正确这三个过程,这个过程本身就具有挑战性和趣味性。

第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(\"..\\image\\book\\beach.jpg\",1); if(!inputImage.empty()) {

cvNamedWindow(\"test\");

imshow(\"test\",inputImage);

waitKey(); } else

{

cout

getchar(); } }

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

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

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

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

理解mat数据结构

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

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

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

void image1Pixel() {

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

Mat image=imread(\"..\\image\\book\\beach.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

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(\"..\\image\\book\\beach.jpg\",1); if(!inputImage.empty()) { double durationa,durationb,durationc; double cacStart,cacEnd; Mat image=imread(\"..\\image\\book\\beach.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

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

}

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

for(int j = 0 ;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

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(\"..\\image\\book\\beach.jpg\",0); for(int i=0;i(i); for(int j=0;j

count[data[j]]++; } } for(int i=0;i(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(\"..\\image\\book\\beach.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

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(\"..\\image\\book\\beach.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

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(\"..\\image\\book\\beach.jpg\",1);

if(!inputImage.empty()) {

cvNamedWindow(\"test\");

imshow(\"test\",inputImage);

waitKey(); } else

{

cout

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

for (int i=0;i

count[i]=0;

hist[i]=0;

sumHist[i]=0;

grayHist[i]=0; }

Mat image=imread(\"..\\image\\book\\beach.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

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

sumHist[i]=sumHist[i-1]+hist[i]; for(int i=0;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; }

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

第13篇:数字图像处理图像变换实验报告

数字图象处理实验指导书

实验一 图象变换实验

实 验

实验名称:图像处理姓名:刘强

班级:电信

学号:

报 告

1102

1404110128

数字图象处理实验指导书

实验一 图象变换实验

实验一 图像变换实验——图像点运算、几何变换及正交变换

一、实验条件

PC机 数字图像处理实验教学软件

大量样图

二、实验目的

1、学习使用“数字图像处理实验教学软件系统”,能够进行图像处理方面的简单操作;

2、熟悉图像点运算、几何变换及正交变换的基本原理,了解编程实现的具体步骤;

3、观察图像的灰度直方图,明确直方图的作用和意义;

4、观察图像点运算和几何变换的结果,比较不同参数条件下的变换效果;

5、观察图像正交变换的结果,明确图像的空间频率分布情况。

三、实验原理

1、图像灰度直方图、点运算和几何变换的基本原理及编程实现步骤

图像灰度直方图是数字图像处理中一个最简单、最有用的工具,它描述了一幅图像的灰度分布情况,为图像的相关处理操作提供了基本信息。

图像点运算是一种简单而重要的处理技术,它能让用户改变图像数据占据的灰度范围。点运算可以看作是“从象素到象素”的复制操作,而这种复制操作是通过灰度变换函数实现的。如果输入图像为A(x,y),输出图像为B(x,y),则点运算可以表示为:

B(x,y)=f[A(x,y)] 其中f(x)被称为灰度变换(Gray Scale Transformation,GST)函数,它描述了输入灰度值和输出灰度值之间的转换关系。一旦灰度变换函数确定,该点运算就完全确定下来了。另外,点运算处理将改变图像的灰度直方图分布。点运算又被称为对比度增强、对比度拉伸或灰度变换。点运算一般包括灰度的线性变换、阈值变换、窗口变换、灰度拉伸和均衡等。

图像几何变换是图像的一种基本变换,通常包括图像镜像变换、图像转置、图像平移、图像缩放和图像旋转等,其理论基础主要是一些矩阵运算,详细原理可以参考有关书籍。

实验系统提供了图像灰度直方图、点运算和几何变换相关内容的文字说明,用户在操作过程中可以参考。下面以图像点运算中的阈值变换为例给出编程实现的程序流程图,如下:

数字图象处理实验指导书

实验一 图象变换实验

2、图像正交变换的基本原理及编程实现步骤 数字图像的处理方法主要有空域法和频域法,点运算和几何变换属于空域法。频域法是将图像变换到频域后再进行处理,一般采用的变换方式是线性的正交变换(酉变换),主要包括傅立叶变换、离散余弦变换、沃尔什变换、霍特林变换和小波变换等。正交变换被广泛应用于图像特征提取、图像增强、图像复原、图像压缩和图像识别等领域。

正交变换实验的重点是快速傅立叶变换(FFT),其原理过于复杂,可以参考有关书籍,这里不再赘述。至于FFT的编程实现,系统采用的方法是:首先编制一个一维FFT程序模块,然后调用该模块对图像数据的列进行一维FFT,再对行进行一维FFT,最后计算并显示幅度谱。程序流程图如下:

四、实验内容

图像灰度直方图

点运算:图像反色、灰度线性变换、阈值变换、窗口变换、灰度拉伸和灰度

数字图象处理实验指导书

实验一 图象变换实验

均衡

几何变换:图像镜像变换、图像转置、图像平移、图像缩放和图像旋转 正交变换:傅立叶变换、离散余弦变换、沃尔什变换、霍特林变换和小波正反变换

注意:

1、所有实验项目均针对8位BMP灰度图像进行处理,其它格式(如JPG)的图像可以利用系统提供的图像格式转换工具进行转换,再进行处理;

2、本次实验的重点是图像的灰度直方图和点运算,几何变换和正交变换只作一般性了解。

五、实验步骤

以图像灰度阈值变换为例说明实验的具体步骤,其它实验项目的步骤与此类似。

1、打开计算机,在系统桌面上双击“数字图像处理实验教学软件系统”的可执行文件“图象处理”的图标,进入实验系统;

2、执行文件→打开,在OPEN对话框中选择待处理的图像,按【OK】后系统显示出图像;

3、执行查看→图像基本信息,将显示图像基本信息对话框,如图所示;

数字图象处理实验指导书

实验一 图象变换实验

4、执行查看→灰度直方图,查看图像的灰度直方图,如图所示;

5、执行图像变换→正交变换→傅立叶变换,查看图像的频率域分布情况,如图所示;

数字图象处理实验指导书

实验一 图象变换实验

6、执行图像变换→正交变换→小波变换,查看图像经过小波变换的效果,如图所示;

7、执行图像变换→点运算→阈值变换,修改阈值变换对话框中的阈值参数,如图所示;

数字图象处理实验指导书

实验一 图象变换实验

8、设置完阈值参数后按【OK】,系统显示阈值变换后的图像,与原图像进行比较,观察阈值变换的效果,如图所示;

9、重复步骤4,查看阈值变换后图像的直方图分布情况;

数字图象处理实验指导书

实验一 图象变换实验

10、重复步骤5,查看阈值变换后图像的频率域分布情况;

11、执行文件→保存或另存为,保存处理后的图像;

12、执行文件→重新加载,重新加载原始图像,但要注意先前对图像的处理将会丢失;注意:

13、在执行步骤2时可能会出现有些图像文件不能打开的情况,如图所示,此时可以先利用图像格式转换工具将图像文件转换为8位BMP图像,再利用系统进行处理。步骤14和15是使用图像格式转换工具的方法;

14、在桌面上双击图像格式转换工具Jpg2bmp的图标,进入转换工具界面,如图所示;

15、按照界面提示,把JPG格式的图像文件转换成8位BMP图像。

数字图象处理实验指导书

实验一 图象变换实验

步骤13示意图

步骤14示意图

六、思考题

1、图像灰度线性变换、阈值变换、窗口变换、灰度拉伸和灰度均衡之间有何区别?

灰度线性变换就是将图像的像素值通过指定的线性函数进行变换,以此增强或者减弱图像的灰度。

灰度的阈值变换可以让一幅图像变成黑白二值图。

灰度的窗口变换也是一种常见的点运算。它的操作和阈值变换类似。从实现方法上可以看作是灰度折线变换的特列。窗口灰度变换处理结合了双固定阈值法,与其不同之处在于窗口内的灰度值保持不变。

灰度拉伸又叫做对比度拉伸,它与线性变换有些类似,不同之处在于灰度拉伸使用的是分段线性变换,所以它最大的优势是变换函数可以由用户任意合成。

灰度均衡是增强图像的有效方法之一。灰度均衡同样属于改进图像的方法,灰度均衡的图像具有较大的信息量。从变换后图像的直方图来看,灰度分布更加均匀。

2、利用图像镜像和旋转变换可以实现图像转置吗?如果可以,应该怎样实现?

可以。进行一次镜像变换,顺(逆)时针旋转两次,再以与第一次相反的方向镜像变换。

数字图象处理实验指导书

实验一 图象变换实验

实验二 图像增强及复原实验

七、实验条件

PC机 数字图像处理实验教学软件

大量样图

八、实验目的

1、熟练使用“数字图像处理实验教学软件系统”;

2、熟悉图像增强及复原的基本原理,了解编程实现的具体步骤;

3、观察图像中值滤波、平滑、锐化和伪彩色编码的结果,比较不同参数条件下的图像增强效果;

4、观察图像退化和复原的结果,比较不同复原方法的复原效果。

九、实验原理

1、图像增强和复原的基本原理

对降质图像的改善处理通常有两类方法:图像增强和图像复原。

图像增强不考虑图像降质的原因,只将图像中感兴趣的特征有选择地进行突出,并衰减图像的次要信息,改善后的图像不一定逼近原始图像,只是增强了图像某些方面的可读性,如突出了目标轮廓,衰减了各种噪声等。图像增强可以用空域法和频域法分别实现,空域法主要是在空间域中对图像象素灰度值直接进行运算处理,一般包括中值滤波、模板平滑和梯度锐化等,空域法可以用下式来描述:

g(x,y)=f(x,y)*h(x,y) 其中f(x,y)是处理前图像,g(x,y)表示处理后图像,h(x,y)为空间运算函数。图像增强的频域法是在图像的频率域中对图像的变换值进行某种运算处理,然后变换回空间域,系统涉及的各种滤波器属于频域法增强,这是一种间接处理方法,可以用下面的过程模型来描述:

其中:F(u,v)=[ f(x,y)],G(u,v)= F(u,v)H(u,v),g(x,y)=1[ G(u,v)],和1分别表示频域正变换和反变换。实验系统提供了图像增强相关内容的文字说明,用户在操作过程中可以参考。

图像复原是针对图像降质的原因,设法去补偿降质因素,使改善后的图像尽可能逼近原始图像,提高了图像质量的逼真度。关于图像复原的详细原理可以参考相关书籍,这里不再赘述。本系统提供了图像的噪声退化、卷积退化和运动模糊退化操作,并提供了相应的逆滤波复原、维纳复原和运动模糊复原操作。本次

数字图象处理实验指导书

实验一 图象变换实验

实验中图像复原只作一般性了解。

2、编程实现步骤

下面以图像增强中的中值滤波操作为例给出编程实现的程序流程图,如下:

十、实验内容

图像增强:中值滤波、图像模板平滑、理想低通滤波器平滑、巴特沃斯低通滤波器平滑、梯度锐化、拉普拉斯锐化、理想高通滤波器锐化、巴特沃斯高通滤波器锐化和伪彩色编码

图像复原:图像的噪声退化、卷积退化、卷积加噪声退化、运动模糊退化、逆滤波复原、维纳复原和运动模糊复原

注意:

3、所有实验项目均针对8位BMP灰度图像进行处理;

4、本次实验的重点是图像增强中的中值滤波和模板平滑,图像复原只作一般性了解。

十一、实验步骤

以图像中值滤波操作为例说明实验的具体步骤,其它实验项目的步骤与此类似。

11、打开计算机,在系统桌面上双击“数字图像处理实验教学软件系统”的可执行文件“图象处理”的图标,进入实验系统;

12、执行文件→打开,在OPEN对话框中选择待处理的图像,按【OK】后系统显示出图像;

数字图象处理实验指导书

实验一 图象变换实验

13、执行查看→图像基本信息,将显示图像基本信息对话框,如图所示;

14、执行查看→灰度直方图,查看图像的灰度直方图,如图所示;

数字图象处理实验指导书

实验一 图象变换实验

15、执行图像变换→正交变换→傅立叶变换,查看图像的频率域分布情况,如图所示;

16、执行图像增强→中值滤波,选择或自定义对话框中的滤波器参数,如图所示;

数字图象处理实验指导书

实验一 图象变换实验

17、设置完滤波器参数后按【OK】,系统显示中值滤波后的图像,与原图像进行比较,观察中值滤波的效果,如图所示;

18、

重复步骤4,查看中值滤波后图像的直方图分布情况;

数字图象处理实验指导书

实验一 图象变换实验

19、重复步骤5,查看中值滤波后图像的频率域分布情况;

10、执行文件→保存或另存为,保存处理后的图像;

11、执行文件→重新加载,重新加载原始图像,但要注意先前对图像的处理将会丢失。

数字图象处理实验指导书

实验一 图象变换实验

十二、

思考题

1、图像中值滤波和模板平滑之间有何区别?

图像平滑处理就是用平滑模板对图像进行处理,以减少图像的噪声。而中值滤波是一种非线性的信号处理方法。

2、图像增强和图像复原之间有何区别?

图像增强:利用一定的技术手段,不用考虑图像是否失真(即原 始图像在变换后可能会失真)而且不用分析图像降质的原因。针对给定图像的应用场合,有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。

图像复原:针对质量降低或者失真的图像,恢复图像原始的内容或者质量。图像复原的过程包含对图像退化模型的分析,再对退化的图像进行复原。图像退化是由于成像系统受各种因素的影响,导致了图像质量的降低,称之为图像退化。这些因素包括传感器噪声、摄像机聚焦不佳、物体与摄像机之间的相对移动、随机大气湍流、光学系统的象差、成像光源和射线的散射等。 图像复原大致可以分为两种方法:

一种方法适用于缺乏图像先验知识的情况,此时可对退化过程建立模型进行描述,进而寻找一种去除或消弱其影响的过程,是一种估计方法;

另一种方法是针对原始图像有足够的先验知识的情况,对原始图像建立一个数学模型并根据它对退化图像进行拟合,能够获得更好的复原效果。

3、图像维纳复原为什么比逆滤波复原效果好?

维纳滤波复原的原理可表示为

对于维纳滤波,由上式可知,当

时,由于存在 项,所以数字图象处理实验指导书

实验一 图象变换实验

不会出现被0除的情形,同时分子中含有项,在处,。当时,,此时维纳滤波就变成 了逆滤波;当时,,表明维纳滤波避免了逆滤波中 出现的对噪声过多的放大作用,也就是说图像维纳复原比逆滤波复原效果好。

第14篇:数字图像处理

中南大学

数字图像处理实验 实验名称:空间滤波和频域滤波

班级:电子信息0802班

姓名:李哲 学号:0909080609 实验日期:2010年12月22日

目录

一,实验目的„„„„„„„„„„„„„„„„„„„„„„„3 二,给图像添加噪声„„„„„„„„„„„„„„„„„„„„4 三,对被噪声污染的图像进行中值滤波和均值滤波„„„„„„„5 四,对图像进行空间域的锐化„„„„„„„„„„„„„„„„6 五,MATLAB以外函数空间滤波和图像锐化„„„„„„„„„„7 六,自带函数傅立叶变换和反变换„„„„„„„„„„„„„„8 七,低通滤波器程序„„„„„„„„„„„„„„„„„„„„9 八,心得体会 „„„„„„„„„„„„„„„„„„„„„„10 九,参考文献 „„„„„„„„„„„„„„„„„„„„„„10

一、实验目的 1,空间滤波:

图像平滑主要目的是减少噪声。噪声有很多种类,不同的噪声有不同的抑制措施。本实验要求用平滑线性滤波和中值滤波2种最典型、最常用的处理算法进行程序设计,学习如何对已被噪声污染的图像进行“净化”。通过平滑处理,对结果图像加以比较,得出自己的实验结论。学习如何用锐化处理技术来加强图像的目标边界和图像细节,对图像进行梯度算子、拉普拉斯算子,使图像的某些特征(如边缘、轮廓等)得以进一步的增强及突出。本实验锐化处理主要在空间域中进行 2,频域滤波:

掌握傅里叶变换的基本性质; 掌握傅里叶正变换和反变换; 通过实验了解二维频谱的分布特点; 掌握怎样利用傅立叶变换进行频域滤波

利用MATLAB程序数字图像的傅立叶变换并且进行频域滤波

二, 给图像添加椒盐噪声或者高斯噪声: 原理:利用MATLAB自带函数添加噪声 程序代码:A=imread(\'onion.png\'); I=rgb2gray(A); imshow(I); J = imnoise(I,\'salt & pepper\',0.05); figure,imshow(J),title(\'椒盐噪声\');%添加椒盐噪声 K = imnoise(I,\'gauian\',0,0.03);

figure,imshow(K),title(\'高斯噪声\');%添加高斯噪声

三, 对被噪声污染的图像进行中值滤波和均值滤波: 原理:自带函数进行中值滤波和均值滤波 源程序:A=imread(\'onion.png\'); I=rgb2gray(A); J = imnoise(I,\'salt & pepper\',0.05); k2=medfilt2(J,[5 5]); k3=medfilt2(J,[7 7]); imshow(J),title(\'原图\'); figure,imshow(k2),title(\'中值滤波5*5模板\'); figure,imshow(k3),title(\'中值滤波7*7模板\');

四, 对图像进行空间域的锐化: 原理:自带函数进行空间锐化。 源程序:I=imread(\'coins.png\'); subplot(121),imshow(I),title(\'原图像\'); H=fspecial(\'sobel\'); I2=filter2(H ,I); subplot(122),imshow(I2),title(\'sobel算子锐化图像\');

五, MATLAB以外函数空间滤波和图像锐化:

源程序:I = imread(\'eight.tif\'); J = imnoise(I,\'salt & pepper\',0.02); K = medfilt2(J); imshow(J);title(\'噪声干扰图像\') figure, imshow(K);title(\'medfilt2滤波图像\') X=J;a=2;b=2; k=floor(a*b/2)+1; [M,N]=size(X); uint8 Y=zeros(M,N); funBox=zeros(a,b); temp=zeros(a*b);

for i=1:M-a

for j=1:N-b

funBox=X(i:i+a,j:j+b);

temp=funBox(:);

tempSort=sort(temp);

Y(i,j)=tempSort(k);

end; end; figure, imshow(Y);title(\'滤波图像\')

六,利用Matlab的图像处理工具箱中提供的函数实现图像的傅立叶变换和反变换: 源程序:

A=imread(\'onion.png\'); f=rgb2gray(A); subplot(131),imshow(f),title(\'原图\'); F=fft2(f);% 快速傅立叶变换

subplot(132),imshow(F),title(\'傅里叶变换\') Fabs=abs(F);% 求幅频绝对值 Fc=fftshift(Fabs);% 中心移位 SFc=log(1+Fc);% 对数变换

iFc1=ifftshift(Fc);% 中心移位的逆变换,绝对值 iF2=ifft2(iFc1);% 快速傅立叶变换的逆变换

subplot(133),imshow(iF2),title(\'快速傅立叶变换的逆变换\')

七,低通滤波器程序:

I=imread(\'testpat1.png\'); subplot(221),imshow(I);title(\'原始图像\') J1=imnoise(I,\'gauian\',0.02);% 叠加高斯白噪声

subplot(222),imshow(J1);title(\'添加高斯白噪声的图像\') f=double(J1);

% 数据类型转换 g=fft2(f);

% 傅立叶变换 g=fftshift(g);

[M,N]=size(g); nn=2;

% 二阶巴特沃斯(Butterworth)低通滤波器 d0=50;

% 设置截止频率 m=fix(M/2); n=fix(N/2); for i=1:M for j=1:N

d=sqrt((i-m)^2+(j-n)^2);

h=1/(1+0.414*(d/d0)^(2*nn)); % 计算低通滤波器传递函数

result(i,j)=h*g(i,j); end end result=ifftshift(result); J2=ifft2(result); J3=uint8(real(J2)); subplot(223),imshow(J3); title(\'低通滤波后图像\')

心得体会

1, 进一步熟悉了Matlab软件、编程以及图像处理工具箱 2, 学会利用自带函数对图像做简单的处理,例如:均值化等。。 3, 熟练了一些基本函数的运用,例如fspecial,imfilter等。 4,

加深了对MATLAB编程的理解。

5,

对于试验中的出现的一些问题,懂得怎样去处理。 6,

通过实际操作,增强了自己的动手能力,把理论用于实践。

参考文献:数字图像处理第二版

MATLAB教程

第15篇:《数字图像处理》

实验五 图像的几何变换

一.实验目的及要求

掌握图像几何变换的基本原理,熟练掌握数字图像的缩放、旋转、平移、镜像和转置的基本原理及其MATLAB编程实现方法。

二、实验内容

(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。

1.图像缩放 clear all, close all I = imread(\'cameraman.tif\'); Scale = 1.35;

% 将图像放大1.35倍

J1 = imresize(I, Scale, \'nearest\');

% using the nearest neighbor interpolation J2 = imresize(I, Scale, \'bilinear\');

% using the bilinear interpolation imshow(I), title(\'Original Image\'); figure, imshow(J1), title(\'Resized Image-- using the nearest neighbor interpolation \'); figure, imshow(J2), title(\'Resized Image-- using the bilinear interpolation \'); help imresize

% 查看imresize使用帮助

1.95倍

I = imread(\'cameraman.tif\'); Scale = 1.96;

% 将图像放大1.96倍

J1 = imresize(I, Scale, \'nearest\');

% using the nearest neighbor interpolation J2 = imresize(I, Scale, \'bilinear\');

% using the bilinear interpolation imshow(I), title(\'Original Image\'); figure, imshow(J1), title(\'Resized Image-- using the nearest neighbor interpolation \'); figure, imshow(J2), title(\'Resized Image-- using the bilinear interpolation \');

3

说明:

注意观察不同插值方法的图像表现; 改变图像缩放因子Scale,重做上述实验。 2.图像旋转

clear all, close all I = imread(\'cameraman.tif\'); Theta = 45;

% 将图像逆时针旋转45。

J1 = imrotate(I, Theta, \'nearest\');

% using the nearest neighbor interpolation Theta = -45;

% 将图像顺时针旋转45。

J2 = imrotate(I, Theta, \'bilinear\', \'crop\'); % using bilinear interpolation and crops the output image imshow(I), title(\'Original Image\'); figure, imshow(J1), title(\'Rotated Image-- using the nearest neighbor interpolation \'); figure, imshow(J2), title(\' Rotated Image-- using the bilinear interpolation \'); % 查看imrotate使用帮助

5 help imrotate %-------

图像旋转30顺时针逆时针

clear all, close all I = imread(\'cameraman.tif\'); Theta = 30;

% 将图像逆时针旋转30。

J1 = imrotate(I, Theta, \'nearest\');

% using the nearest neighbor interpolation Theta = -30;

% 将图像顺时针旋转30。

J2 = imrotate(I, Theta, \'bilinear\', \'crop\'); % using bilinear interpolation and crops the output image imshow(I), title(\'Original Image\'); figure, imshow(J1), title(\'Rotated Image-- using the nearest neighbor interpolation \'); figure, imshow(J2), title(\' Rotated Image-- using the bilinear interpolation \'); 7

8 说明:

注意观察不同插值方法和输出图像后处理方法的图像表现; 改变旋转角度大小和方向,重做上述实验。

3.图像水平镜象

clear all, close all I = imread(\'cameraman.tif\'); I1 = flipdim(I,2);

I2 = flipdim(I,1); figure(1), subplot(1,2,1), imshow(I); subplot(1,2,2), imshow(I1); figure(2), subplot(2,1,1), imshow(I); subplot(2,1,2), imshow(I2); %----

(二)用MATLAB编程实现以下图像几何变换(参考自编讲义相关章节)

10 1.图像扭曲变换 2.球面变换

三、实验设备

1.PIII以上微机; 2.MATLAB6.5;

四、预习与思考

1.预习实验内容,阅读教材熟悉实验原理;

2.查阅资料,熟悉实验中涉及的有关MATLAB函数;

3.利用课余时间,采用MATLAB底层函数编程实现实验内容

(二)中的图像平移、图像转置等几何变换。

五、实验报告要求

1.简述试验的目的和试验原理;

2.叙述各段程序功能,改变有关函数的参数,分析比较实验结果; 3.打印出所编写的实验程序。 4.写出本实验的心得体会及意见。

实验六

数字图像处理应用

一.实验目的及要求

1.利用MATLAB提供的图像处理函数实现图像中物体属性的测量; 2.训练综合运用MATLAB图像处理函数的能力; 3.了解数字图像处理基本应用。

二、实验内容

以大米粒特性测量为例,综合应用课程中图像分割、形态学滤波、图像增强、图像特征提取等图像处理方法,实现大米粒特性自动测量。 实验过程简述:

1. 读取和显示图像 2. 估计图像背景 3. 获取背景均匀的图像 4. 图像增强 5. 图像二值化分割 6. 区域标记及为彩色处理

7. 测量图像中的区域特性(面积、质心等)

8.统计大米粒的特性分布规律。

(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结

11 果。熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。

% Read and Display an Image clear, close all,close all; I = imread(\'rice.png\');

figure, imshow(I)

% Use Morphological Opening to Estimate the Background

background = imopen(I,strel(\'disk\',15));

figure, imshow(background);

%Display the Background Approximation as a Surface

figure, surf(double(background(1:8:end,1:8:end))),zlim([0 255]); set(gca,\'ydir\',\'reverse\'); % Subtract the Background Image from the Original Image I2 = imsubtract(I,background); figure, imshow(I2) % Adjust the Image Contrast I3 = imadjust(I2, stretchlim(I2), [0 1]); figure, imshow(I3); % Apply Thresholding to the Image level = graythresh(I3); bw = im2bw(I3,level); figure, imshow(bw) % Determine the Number of Objects in the Image [labeled,numObjects] = bwlabel(bw,4);

% Label components.numObjects % Examine the Label Matrix RGB_label = label2rgb(labeled, @spring, \'c\', \'shuffle\'); figure, imshow(RGB_label); % Measure Object Properties in the Image graindata = regionprops(labeled,\'basic\') allgrains = [graindata.Area]; % Compute Statistical Properties of Objects in the Image max(allgrains); biggrain = find(allgrains==695) mean(allgrains); figure, hist(allgrains,20); 12

(详见MATLAB IPT的 帮助文档demo中的Correcting Nonuniform Illumination)

(二)查看MATLAB IPT 帮助文档,研究其它应用演示

三、实验设备

16 1.PIII以上微机; 2.MATLAB6.5;

四、预习与思考

1.预习实验内容,阅读教材熟悉实验原理; 2.查阅资料,熟悉实验中涉及的有关函数。

3.利用课余时间,采用MATLAB函数编程实现实验内容

(二)。

五、实验报告要求

1.简述试验的目的和试验原理;

2.叙述各段程序功能,改变有关函数的参数,分析比较实验结果; 3.打印出所编写的实验程序。 4.写出本实验的心得体会及意见。

第16篇:大连理工大学数字图像处理 实验报告4[全文]

大连理工大学实验报告

学院(系):

电信学部

专业:

电子信息工程

班级:

电子1102

名:

陈柯锦

学号:

201181442

组:

___

实验时间:

实验室:

实验台:

实验名称 基于边缘直方图的图像检索

一、实验目的和要求

掌握用matlab进行图像检索的方法。

二、实验原理和内容

通常情况下,人类可以在只用图像的轮廓而不借助图像的颜色以及纹理信息的情况下就可以对一幅图像中的物体进行分类和识别。因而,研究图像轮廓信息的表达方式是十分必要的。

1.EHD描述子

边缘直方图(EHD)描述子是MPEG-7标准中提出的一种边缘描述子,它具有描述图像亮度变化的方向和频率的能力。其具体算法原理如下。

(1)对图像分块

当给定一张图像时,不重叠地将其分成4*4的子图,且每一子图继续分成若干不重叠的方形子块。在这一过程中,不论图像的大小,均将每一子图划分成数量一定的子块。这样做的目的是去除图像的大小(即分辨率)对特征的影响。通常情况下,每一子图中子块的数量是2的倍数,因而在某些情况下可能要舍弃边缘的像素点以满足条件。 (2) 判断每一子块是否包含边缘

当给定图像子块之后,若要判断该子块中是否包含边缘特征,一种简单的办法是对图像在空域利用滤波器进行滤波。在EHD特征中,统计以下五种形式的边缘特征:垂直(0°)、水平(90°)、45毒角、135°角以及非方向性边缘。如图1所示。

(3) 统计边缘信息

通过以上步骤,可以判断出图像子块中是否包含边缘信息,下面要对这些边缘信息做以统计。在前面提到了在EHD描述子中将图像划分成4×4的16个子图,在这里对每一子图统计5个方向上各自包含的子块的个数,从而构成一个5维的向量。接着,对该向量进行归一化,即对向量的每一维均除以该子图中子块的数量。从而,一张图像便可以由一个80维的向量表示。到这里,EHD特征的基本生成过程已经完毕。

三、主要仪器设备

装有MATLAB的电脑。

四、实验步骤

完成基于EHD的图像检索。

五、实验数据记录和处理

程序:

clc,clear all fv=[1 -1 1 -1]; fh=[1 1 -1 -1]; fd45=[sqrt(2) 0 0 -sqrt(2)]; fd135=[0 sqrt(2) -sqrt(2) 0]; fnd=[2 -2 -2 2]; fv_th=30; fh_th=30; fd45_th=30; fd135_th=30; fnd_th=30; % cd(\'d:\\MATLAB7\\work\\pictures\'); % apath=dir; % name=apath(3,1).name; %以下对目标图片进行特征分析 mypic=imread(\'55.jpg\'); mypic=double(rgb2gray(mypic)); [a,b]=size(mypic);; a=floor(a/4); b=floor(b/4); for i=0:3

for j=0:3

mypic_part=mypic(i*a+1:i*a+a,j*b+1:j*b+b);

m1=sum(sum(mypic_part(1:floor(a/2),1:floor(b/2))))/(a*b/4);

m2=sum(sum(mypic_part(1:floor(a/2),floor(b/2)+1:b)))/(a*b/4);

m3=sum(sum(mypic_part(floor(a/2)+1:a,1:floor(b/2))))/(a*b/4);

m4=sum(sum(mypic_part(floor(a/2)+1:a,floor(b/2)+1:b)))/(a*b/4);

mypic_mat(4*i+j+1,1)=([m1 m2 m3 m4]*fv\')>fv_th;

mypic_mat(4*i+j+1,2)=([m1 m2 m3 m4]*fh\')>fh_th;

mypic_mat(4*i+j+1,3)=([m1 m2 m3 m4]*fd45\')>fd45_th;

mypic_mat(4*i+j+1,4)=([m1 m2 m3 m4]*fd135\')>fd135_th;

mypic_mat(4*i+j+1,5)=([m1 m2 m3 m4]*fnd\')>fnd_th;

end end mypic_mat=double(mypic_mat); %以上对目标图片特征提取完毕 %以下对库中图片分别进行计算 cd(\'d:\\MATLAB7\\work\\pictures\'); apath=dir; for k=3:62

name=apath(k,1).name;

pic=imread(name);

pic=double(rgb2gray(pic));

[a,b]=size(pic);;

a=floor(a/4);

b=floor(b/4);

for i=0:3

for j=0:3

pic_part=pic(i*a+1:i*a+a,j*b+1:j*b+b);

m1=sum(sum(pic_part(1:floor(a/2),1:floor(b/2))))/(a*b/4);

m2=sum(sum(pic_part(1:floor(a/2),floor(b/2)+1:b)))/(a*b/4);

m3=sum(sum(pic_part(floor(a/2)+1:a,1:floor(b/2))))/(a*b/4);

m4=sum(sum(pic_part(floor(a/2)+1:a,floor(b/2)+1:b)))/(a*b/4);

pic_mat(4*i+j+1,1)=([m1 m2 m3 m4]*fv\')>fv_th;

pic_mat(4*i+j+1,2)=([m1 m2 m3 m4]*fh\')>fh_th;

pic_mat(4*i+j+1,3)=([m1 m2 m3 m4]*fd45\')>fd45_th;

pic_mat(4*i+j+1,4)=([m1 m2 m3 m4]*fd135\')>fd135_th;

pic_mat(4*i+j+1,5)=([m1 m2 m3 m4]*fnd\')>fnd_th;

end

end

pic_mat=double(pic_mat);

result(k-2)=sqrt(sum(sum((mypic_mat-pic_mat).^2))); end %以上对库中所有图片特征提取结束 min1=find(result==min(result))+2; if(length(min1)>1) min1=min1(1);end result(min1-2)=100000; min2=find(result==min(result))+2; if(length(min2)>1) min2=min2(1);end result(min2-2)=100000; min3=find(result==min(result))+2; if(length(min3)>1) min3=min3(1);end subplot(2,2,1) imshow(uint8(mypic)) title(\'待检索图像\') cd(\'d:\\MATLAB7\\work\\pictures\'); apath=dir; subplot(2,2,2) imshow(imread(apath(min1,1).name)) title(\'最相近图像\') subplot(2,2,3) imshow(imread(apath(min2,1).name)) title(\'第二相近的图像\') subplot(2,2,4) imshow(imread(apath(min3,1).name)) title(\'第三相近的图像\')

六、实验结果

模板图像最相近图像

第二匹配图像第三匹配图像

第17篇:数字图像处理课程设计

1.前言

数字图像处理技术是20世纪60年代开始发展起来的一门新兴学科。近40年来,由于大规模集成电路和计算机技术的迅速发展,离散数学的创立及理论上的不断突破,以及军事、医学和工业等方面应用需求的不断增长,数字图像处理的理论和方法发展迅速,图像处理技术不断完善,不仅在理论研究上取得了很大的进展,而且其应用领域也日益扩大。随着科技的进步以及人类需求的多样化发展,多学科的交叉、融合已成为现代科学发展的突出特色和重要途径。因此,数字图像处理学科正逐步向其他学科领域渗透,并为其他学科的研究和发展提供基础性支持。

众所周知,人类正在实践的21世纪是一个信息时代。今天的社会,信息技术已经全面服务于社会生产和生活的方方面面,人们所做工作的相当一部分就是对信息的处理和传输,其中图像是人类获取信息、表达信息和传递信息的重要手段,是人类感知和认识世界的基础。有关研究表明,日常生活中人们所接受的各种信息中图像信息占总信息量的80%左右,从这一角度看,“百闻不如一见”正是图像处理重要性的形象表达和经验总结。因此,数字图像处理技术无论是对于21世纪的科学理论研究,还是工程应用都将具有重要的影响。国内外许多有识之士指出,从某种意义上讲,数字图像处理是实现智能计算机、智能机器人或多媒体通信系统的基础,未来计算机及智能机器人的发展与进步将在一定程度上依赖于机器视觉信息处理理论和技术的突破。虽然相对于经典学科,数字图像处理还很年轻,但日趋成熟的数字图像处理技术已经在很多方面得到深入而广泛的应用,一定程度上改变了人类的生活,给人们的日常生活、学习、工作带来极大的方便。例如,Internet上的视频广播、现代卫星或遥感照片的合成和处理、工业产品的自动检测、各种医学影像和图像的处理、远程医疗诊断及手术以及视频会议、视频电话等都采用了图像处理技术实现实时信息交互。

在信息化的今天,信息技术已经全面服务于社会的生产和生活的各个方面。信息是抽象的,它依附在各种媒体所表示的数据中,其中,图像信息是人类赖以获取信息的最重要来源之一。随着计算机技术的迅猛发展,图像和图形技术不断融合,产生了各种图像处理、CAD软件。这些软件被广泛应用于计算机科学、1 工程学、统计学、物理学、信息科学、化学、生物学、医学乃至社会科学等领域,取得了令人瞩目的成就。

MATLAB自1984年由美国MathWorks公司推向市场以来,经历了二十多年的发展,现已成为国际公认的最优秀的科技应用软件。MATLAB既是一种直观高效的计算机语言,同时又是一个科学计算平台,它为数据分析和数据可视化算法和应用程序开发提供了最核心的数学和高级图形工具。根据它提供的500多个数学和工程函数,工程技术人员和科学工作者可以在它的集成环境中交互或编程以完成各自的计算。

正是由于MATLAB的各种优势和特点,以及其版本的不断更新和功能的不断完善和强大,特别是它在图形处理上的优越性,本次课程设计就是利用MATLAB图像处理工具箱函数来进行图像增强。

2 2.设计的内容

本次课程设计我做的题目是“基于matlab图像增强的比较及其理论分析”,图像增强所包含的主要内容如下图:

灰度变换

均衡化点运算直方图修正法规定化 空间域局部统计法 图像平滑 局部运算图像锐化 图像增强高通滤波

频率域低通滤波同态滤波增强 假彩色增强

彩色增强伪彩色增强 彩色变换及应用 图像的代数运算

图像增强是采用一系列技术去改善图像的视觉效果,或将图像转换成一种更适合于人或机器进行分析和处理的形式。例如采用一系列技术有选择的突出某些感兴趣的信息,同时抑制一些不需要的信息,提高图像的使用价值。鉴于以上理论知识,我先在网上下载一幅灰度图片,然后对其依次进行如下操作: 1.将该图片导入MATLAB工作平台;

2.利用MATLAB图像处理工具箱提供的模拟噪声生成函数imnoise,分别对该图片模拟加入高斯噪声和椒盐噪声;

3.利用MATLAB软件对加入噪声的该图片进行中值滤波和均值滤波处理;4.记录处理后生成的图样,比较分析哪种方法增强效果最佳。

3 3.流程图

4 4.总体方案设计及原理

4.1验证图片是否为灰度图片

本次课设要求是对灰度图片进行处理,因此必须保证是灰度图片,在MATLAB中能实现对图片属性的查看。在MATLAB命令输入窗中,调用函数info=imfinfo(‘FILENAME.FMT’)。如查看我用的图片属性,在命令窗口输入info=imfinfo(\'植物大战僵尸.JPG\'),得到如下结果: info =

Filename: \'植物大战僵尸.JPG\'

FileModDate: \'22-Jun-2009 14:23:46\'

FileSize: 177051

Format: \'jpg\'

FormatVersion: \'\'

Width: 601

Height: 812

BitDepth: 8

ColorType: \'grayscale\'

FormatSignature: \'\'

NumberOfSamples: 1

CodingMethod: \'Huffman\'

CodingProce: \'Sequential\'

Comment: {} 在

ColorType: \'grayscale\'

属性行如此显示,则说明以刘亦菲.JPG命名的文件为灰度图像。

4.2导入图片到MATLAB工作平台

首先在MATLAB命令窗口中将其执行路径更改到要处理的灰度图片的路径,然后读取图像。函数imread可以从任何MATLAB支持的图像文件格式中,以任意位深度读取一幅图像。格式为:

[X,MAP]=imread(‘FILENAME.FMT’),其中:

FILENAME-为需要读入的图像文件名称,FMT-为图像格式。

5 4.3对图片模拟加入高斯噪声和椒盐噪声

Matlab图像处理工具箱提供了模拟噪声生成的函数imnoise,格式为: J=imnoise(I,type) J=imnoise(I,type,parameters) 其中:

I为输入图像,J为叠加噪声后的图像。type为噪声类型,parameters为各噪声相应的参数。常用的噪声类型如下: J=imnoise(I,\'gauian\',M,V) 均值M,方差为V的高斯噪声。M、V的缺省值为0、0.01; J=imnoise(I,\'salt & pepper\',D) 噪声浓度为D的椒盐噪声。D的缺省值为0.05; J=imnoise(I,\'speckle\',V) 方差为V的乘法性噪声。V的缺省值为0.04。

4.4显示原图片和加入噪声的图片

本次用到的MATLAB的图像显示函数为imshow,格式为: imshow(I,n) 其中:

I-为图片的代码,n-为显示灰度级为n的图像,n缺省为256。

4.5中值滤波处理

MATLAB图像处理工具箱中,提供了medfilt2和ordfilt2函数,用于实现中值滤波。

medfilt2格式为:

B=medfilt2(A,[m n])其中:

A为输入图像,B为输出图像,[m n]为窗口大小,缺省为[3 3]。 ordfilt2的格式为:

Y=ordfilt2(X,order,domain) 其中:

X为输入图像,Y为输出图像,order为滤波器输出顺序值,domain为滤波窗口矩阵。

Y=ordfilt2(X,5,ones(3,3)) %中值滤波Y=medfilt2(X,[3 3]) Y=ordfilt2(X,1,ones(3,3)) %最小滤波 Y=ordfilt2(X,9,ones(3,3)) %最大滤波

6 4.6均值滤波处理

MATLAB图像处理工具箱提供了filter2和fspecial函数用于对图像进行均值滤波。

(1) filter2用于对图像作卷积滤波,格式为: B=filter2(h,A,shape) 其中:

A为输入图像,h为滤波算子,B为输出图像,shape为指定滤波计算范围: shape=\'full\'时,作边界补0 shape=\'same\'时,返回的图像B与输入的图像A大小相同 shape=\'valid\'时,补考虑边界补0,只计算有效输出部分。 (2) fspecial用于产生预定义的滤波算子,格式为: h=fspecial(type,para) 其中:

参数type指定算子类型,para为指定相应的参数。 type=\'average\',表示为均值滤波器,para默认为3 4.7源代码

I=imread(\'植物大战僵尸.JPG\');

%读取图片

J1=imnoise(I,\'gauian\',0,0.04); %加入高斯噪声,均值为0方差为0.04

J2=imnoise(I,\'salt & pepper\',0.09); %加入椒盐噪声,噪声浓度为0.09 K1 = medfilt2(J1);

%对图片J1进行中值滤波 K2 = medfilt2(J2);

%对图片J2进行中值滤波 K3 = filter2(fspecial(\'average\',1),J1); %对图片J1进行均值滤波 K4 = filter2(fspecial(\'average\',1),J2); %对图片J2进行均值滤波 Pause

%程序执行暂停 figure(1) subplot(1,3,1)

%子图方式显示 imshow(I)

%显示图片I title(\'原始图片\')

%给图片加入标题 subplot(1,3,2) imshow(J1) title(\'高斯噪声\') subplot(1,3,3) imshow(J2) title(\'椒盐噪声\') pause figure(2) subplot(2,2,1) imshow(I) title(\'原始图片\')

7 subplot(2,2,2) imshow(J1) title(\'高斯噪声\') subplot(2,2,3) imshow(K1) title(\'中值滤波\') subplot(2,2,4) imshow(K3) title(\'均值滤波\') pause figure(3) subplot(2,2,1) imshow(I) title(\'原始图片\') subplot(2,2,2) imshow(J2) title(\'椒盐噪声\') subplot(2,2,3) imshow(K2) title(\'中值滤波\') subplot(2,2,4) imshow(K4) title(\'均值滤波\') 4.8结果显示

在MATLAB命令窗口中输入上述代码,按下回车键,就可以显示结果,如下面三幅图所示

10 5.结果分析

5.1均值滤波

均值滤波是最简单的均值滤波,均值简单的平滑了一幅图像的局部变化,在模糊了图像的同时减少了噪声,但在滤波过程中会丢失图像细节,如第5幅和第6幅图像所示,当该图像的参数shape=\'full\'时,作边界补0,因此后两幅看起来就是“空白”,几乎丢失了图像的全部细节。如果对图像干扰的某一噪声具有这样的特点:对图像中任意相邻两点的干扰是互不相关的。那么,若某一象素中含有噪声,而其它周围的邻点却不一定有噪声。因此,和邻近各点相比,该点的灰度值将有显著的不同。

这样就可以从图像中取一子区域(称为邻域),其内含若干象素,要处理的象素位于邻域的中心。然后求出邻域中各象素(不包含要处理的象素点)的灰度平均值:

g(m,n)1f(m1,n)f(m1,n)f(m,n1)f(m,n1) 4由于图像中相邻象素之间有很强的相关性,如果该点(m,n)无噪声,则其灰度应和邻域平均值基本相等,反之,两者有明显差别。

这是用邻域平均值代替该点的灰度值,可以在一定程度上消除噪声。

5.2中值滤波

中值滤波的应用非常广泛,因为对于很多种随机噪声,它都有良好的去噪能力,且在相同尺寸下比线性平滑滤波引起的模糊更少。中值滤波尤其对单极或双极脉冲噪声非常有效。

最大值滤波对发现图像中的最亮点非常有用。同样,因为“胡椒”噪声是非常低的值,作为子图像区域的最大值选择结果,他可以通过这种滤波消除;最小值滤波对发现图像中的最暗点非常有用。同样,作为最小值操作的结果,它可以用来消除“盐”噪声。对于高斯和均匀随机分布这类噪声有最好的效果。 设有一序列:

fif1,f2,...,fn

有n个值,在序列中任取m个连续值:

fiv,fiv1,...,fi1,fi,fi1,...,fiv1,fiv

11 m为奇数

3、

5、7等: m2v1

将这m个值从小到大排序,取中间值作为滤波器输出,表示为:

fi\'medfiv,...,fi,...,fiv,i1,2,...,n。 例如:fi为

...0 3 4 4 5 3 2 0 1 4 3 0 ...取m为3时的中值滤波:

...0 3 4 4 4 3 2 1 1 3 3 0 ...取m为3时的平滑滤波:

...0 7/3 11/3 4 11/3 3 2 4/3 5/3 7/3 ...中值滤波不影响阶跃函数和斜波函数,周期小于m/2的脉冲将抑制,三角函数顶部变平。因此可以消除噪声

通过观察第2幅图可以看出,经medfilt2函数处理椒盐噪声后的图像几乎复原了原始图像,其效果比相同条件下的高斯噪声处理要好很多。综合分析上述各幅图像我们可以得出结论:在处理椒盐噪声的问题上,中值滤波比均值滤波更优越;在处理高斯噪声的问题上,均值滤波比中值滤波效果稍微好一点。

12 6.心得体会

经过一个多星期的关于数字图像处理的课程设计,在老师和同学的帮助下,我基本上完成了这次任务,通过这次课程设计我收获颇多,概而言之,大约以下几点:

一、温故而知新。课程设计发端之始,思绪全无,举步维艰,对于理论知识学习不够扎实的我深感“书到用时方恨少”,于是想起圣人之言“温故而知新”,便重拾教材与实验手册,对知识系统而全面进行了梳理,遇到难处先是苦思冥想再向同学请教,终于熟练掌握了基本理论知识,而且领悟诸多平时学习难以理解掌握的较难知识,学会了如何思考的思维方式,找到了设计的灵感。

二、理论联系实际。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,值得一提的是刚开始在滤波问题上我被卡住了,我以为是下载的MATLAB软件没有这个库函数,卸载后装上另一款,结果还是不能解决,请教了很多同学才发现要处理的图片根本不是灰度图片,重新换了张图片就成功了。这毕竟是第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

总的来说,这次设计的关于图像处理的课程设计还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,更加强了团队合作的意识,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。最后,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

参考文献

[1] R.C.Gonzalez, R.E.Woods, S.L.Eddins,数字图像处理(MATLAB版)阮秋琦 等译, 北京:电子工业出版社,2007.10.[2]孙祥 徐流美 吴清编著,MATLAB7.0基础教程 北京:清华大学出版社,2005.5.[3] 吴国平主编,数字图像处理原理 北京:电子工业出版社,2007.9 [4] 王慧琴主编,数字图像处理 北京:高等教育出版社,2006.5 [5] 霍宏涛主编,数字图像处理 北京:清华大学出版社,2002.9

第18篇:数字图像处理课程设计

数字图像处理课程设计

1.课设目的 ..............................................................................................................................................1 2.背景与基本原理 ...................................................................................................................................1 2.1背景 ................................................................................................................................................1 2.2基本原理 ........................................................................................................................................1 2.2.1基本概念 .................................................................................................................................1 2.2.2基本策略: .............................................................................................................................2 2.2.3边缘检测 .................................................................................................................................3 2.2.4导数和噪声 .............................................................................................................................4 2.2.5高斯拉普拉斯(LOG) .........................................................................................................4 2.2.6边缘连接和边缘检测 .............................................................................................................4 3.源代码 ...................................................................................................................................................5 3.1对于只有车牌无车身的图像: ....................................................................................................5 3.2对于有车身和车牌连接的图像 ....................................................................................................5 4.处理结果 ...............................................................................................................................................6 4.1对于只有车牌无车身的图像: ....................................................................................................6 4.2对于有车身和车牌连接的图像 ....................................................................................................8 5.心得体会 ...............................................................................................................................................9 6.参考文献 ...............................................................................................................................................9

数字图像处理课程设计

1.课设目的

1) 加强对数字图像处理的理解 2) 了解图像分割的基本原理和应用

2.背景与基本原理

2.1背景

数字图像处理(Digital Image Proceing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。

图像分割是一种重要的图像技术,在理论研究和实际应用中都得到了人们的广泛重视。图像分割的方法和种类有很多,有些分割运算可直接应用于任何图像,而另一些只能适用于特殊类别的图像。有些算法需要先对图像进行粗分割,因为他们需要从图像中提取出来的信息。许多不同种类的图像或景物都可作为待分割的图像数据,不同类型的图像,已经有相对应的分割方法对其分割,同时,某些分割方法也只是适合于某些特殊类型的图像分割。分割结果的好坏需要根据具体的场合及要求衡量。在本报告中是对车辆牌照中的文字和数字部分进行处理。

2.2基本原理

2.2.1基本概念

图像分割(Image Segmentation)是指将图像中具有特殊涵义的不同区域区分开来,这些区域是互相不交叉的,每一个区域都满足特定区域的一致性。图像分割是图像识别和图像理解的基本前提步骤

数字图像处理课程设计

2.2.2基本策略:

(1)间断检测

数字图像中三种基本类型的灰度级间断: 点、线、边。寻找间断的最一般的方法是:模板检测。图像中任一点的模板响应为:

Rw1z1w2z2w9z9wizii19(2)点检测

用模板检测孤立点:

如果∣R∣≥T,则称在模板中心位置已经检测到一个点。 例:

1) R= (-1 * 8 * 8 + 128 * 8)/9=106 2) 可以设置阈值T = 64 3) 若R=0,则说明检测点与周围点像素值相同

4) 若R >T,则说明检测点与周围点像素值非常的不同,为孤立点

(3)线检测

通过比较典型模板的计算值,确定一个点是否在某个方向的线上设计其它模板: 1) 模板系数之和为0 2) 感兴趣的方向系数值较大

数字图像处理课程设计

2.2.3边缘检测

边缘是位于两个区域的边界线上的连续像素集合,一般而言,当人们看到有边缘物体时,首先感觉到的便是边缘,灰度或结构等信息的突变处称为边缘。边缘上的这种变化可以通过微分算子进行检测:

(1)一阶导数:通过梯度来计算----梯度锐化法:

Rw1z1w2z2w9z9wizii19

梯度是一个矢量,其大小为:

f(x,y)2f(x,y)2G[f(x,y)]()()

xy

对于数字图像可以用差分来近似微分。其差分形式为:

ffff(x,y1)f(x,y)xff(x1,y)f(x,y)yyx

G[f(x,y)]{[f(x,y)f(x1,y)]2[f(x,yf(x,y1)]2}12

G[f(x,y)]|f(x,y)f(x1,y)||f(x,yf(x,y1)|

梯度大小与相邻像素的灰度差成正比: 灰度变化大则梯度值很大, 灰度变化平缓则梯度值小, 灰度无变化则梯度值为0.

(2)二阶导数:通过拉普拉斯算子来计算

定义:一个二元图像函数f(x,y)的拉普拉斯变换定义为:

2f2ff22xy[f(x1,y)f(x1,y)f(x,y1)f(x,y1)]4f(x,y) 2可以用多种方式表示为数字形式。对于一个3*3的区域,经验上推荐最多的形式是

2f4Z5(Z2Z4Z6Z8)

拉普拉斯锐化前、

(a) 原图像灰度;

(b) 拉普拉斯锐化后图像的灰度

(a)(b)3

数字图像处理课程设计

2.2.4导数和噪声

基于微分的边缘检测器,其基本依据是图像的边缘对应了一阶导数的极大值,而二阶导数则过零点。但是,假如图像受到噪声的影响:

f(x,y)s(x,y)n(x,y)。

噪声的幅值往往很小,但频率往往很高,比如设:

n(x,y)asin(x)

那么一阶导数和二阶导数分别为:

n(x)2n(x)2acos(x)asin(x)2x

x

2.2.5高斯拉普拉斯(LOG)

高斯拉普拉斯(Laplacian of Gauian,LOG,或Mexican hat,墨西哥草帽)滤波器使用了Gauian来进行噪声去除并使用 Laplacian来进行边缘检测

2.2.6边缘连接和边缘检测

局部处理,确定边缘像素相似性的两个主要性质是: (1)用于生成边缘像素的梯度算子的响应强度

f(x,y)f(x0,y0)EE是非负门限

(2)梯度向量的方向

(x,y)(x0,y0)A

A是非负门限

数字图像处理课程设计

3.源代码

3.1对于只有车牌无车身的图像:

%预备处理

clc; %擦去一一页命令窗口,光标回屏幕左上角 clear all;

%图像的读入和初步处理 im=imread(\'1.png\'); im1=rgb2gray(im);%江源彩色图像转换成灰度色图 im1=medfilt2(im1,[3 3]); %用中值滤波的图像去噪

%对图像进一步处理,得到有用信息

BW = edge(im1,\'sobel\'); %用edge函数获得灰度图像的边缘

[imx,imy]=size(BW);%对于边缘获取信息,用size函数,获取数组的行数于列数。对于size函数中的两个输出

%数,size函数将数组的行数返回到第一个输出变量imx,将数组的列数返回到第二个输出变 %量imy

msk=[0 0 0 0 0; 0 1 1 1 0; 0 1 1 1 0; 0 1 1 1 0; 0 0 0 0 0;]; B=conv2(double(BW),double(msk)); %用二维卷积运算函数conv2平滑图像,减少连接数量

L = bwlabel(B,8);% 计算连通,调用函数返回一个和B大小相同的L矩阵,包括标记了B中每个连通区域的类别标值 mx=max(max(L))% 将有连通的MX。给予L一个1和mx之间的值或者在循环中可以提取所有连接组件

% 从储存阵列中提取图像 figure,imshow(im); figure,imshow(im1); figure,imshow(B);

3.2对于有车身和车牌连接的图像

%预备处理

clc; %擦去一一页命令窗口,光标回屏幕左上角 clear all;

%图像的读入和初步处理 im=imread(\'2.jpg\'); im1=rgb2gray(im);%江源彩色图像转换成灰度色图 im1=medfilt2(im1,[3 3]); %用中值滤波的图像去噪

数字图像处理课程设计

%对图像进一步处理,得到有用信息

BW = edge(im1,\'sobel\'); %用edge函数获得灰度图像的边缘

[imx,imy]=size(BW);%对于边缘获取信息,用size函数,获取数组的行数于列数。对于size函数中的两个输出参

%数,size函数将数组的行数返回到第一个输出变量imx,将数组的列数返回到第二个输出变 %量imy

msk=[0 0 0 0 0; 0 1 1 1 0; 0 1 1 1 0; 0 1 1 1 0; 0 0 0 0 0;]; B=conv2(double(BW),double(msk)); %用二维卷积运算函数conv2平滑图像,减少连接数量

L = bwlabel(B,8);% 计算连通,调用函数返回一个和B大小相同的L矩阵,包括标记了B中每个连通区域的类别标值 mx=max(max(L))% 将有连通的MX。给予L一个1和mx之间的值或者在循环中可以提取所有连接组件

% 对于车牌与车身连接的图像,给予17,,19,19,22,27,28至L用于提取完全车牌 [r,c] = find(L==17);%用find函数查询非零元素的行和列

rc = [r c]; [sx sy]=size(rc); n1=zeros(imx,imy);%创建名为n1的imx行,imy列的零矩阵

for i=1:sx x1=rc(i,1); y1=rc(i,2); n1(x1,y1)=255; end

% 从储存阵列中提取图像 figure,imshow(im); figure,imshow(im1); figure,imshow(B); figure,imshow(n1,[]);

4.处理结果

4.1对于只有车牌无车身的图像:

原图像

数字图像处理课程设计

处理后:

数字图像处理课程设计

总结:能够对图像基本信息进行简单分离。

4.2对于有车身和车牌连接的图像

原图像

处理后

数字图像处理课程设计

总结:能够对图像进行分离,但是对于车身与车牌信息分离不理想,有待进一步改进。

5.心得体会

在这次数字图像处理的课程设计过程中,首先加深了我对于数字图像处理这门课程的认识,通过对相关知识的进一步了解和掌握,清楚的认识到这门课程在实际应用的广泛性。

通过Matlab编程的过程之中,进一步掌握了Matlab的使用,明白了这个软件作为许多应用方向工具的强大之处,通过对一些小错误的改造还认识到了以往自己没有注意到的一些小的细节问题。

6.参考文献

1.数字图像处理 第二版 冈萨雷斯(Rafael C.Gonzalez)

2003-03-01 2.Matlab2007-help

第19篇:数字图像处理心得体会

数字图像处理心得体会

名:

号:

201203284

级:

计科11202

号:

31

系:

计算机科学学院

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

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

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

由于数字图像处理的方便性和灵活性,因此数字图像处理技术已经成为了图像处理领域中的主流。数字图像处理技术主要涉及到的关键技术有:图像的采集与数字化、图像的编码、图像的增强、图像恢复、图像分割、图像分析等。 图像的采集与数字化:就是通过量化和取样将一个自然图像转换为计算机能够处理的数字形式。 图像编码:图像编码的目的主要是来压缩图像的信息量,以便能够满足存储和传输的要求。 图像的增强:图像的增强其主要目的是使图像变得清晰或者将其变换为机器能够很容易分析的形式,图像增强方法一般有:直方图处理、灰度等级、伪彩色处理、边缘锐化、干扰抵制。 图像的恢复:图像恢复的目的是减少或除去在获得图像的过程中因为各种原因而产生的退化,可能是由于光学系统的离焦或像差、被摄物与摄像系统两者之间的相对运动、光学或电子系统的噪声与介于被摄像物跟摄像系统之间的大气湍流等等。

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

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

2.数字图像处理的特点

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

1) 数字图像处理的信息大多是二维信息,处理信息量很大。因此对计算机的计算速度、存储容量等要求较高。 2) 数字图像处理占用的频带较宽。与语言信息相比,占用的频带要大几个数量级。所以在成

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

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

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

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

3.数字图像处理的优点

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

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

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

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

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

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

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

一部分均包含丰富的内容。 4.数字图像处理的应用领域

图像是人类获取和交换信息的主要来源,因此,图像处理的应用领域必然涉及到人类生活和工作的方方面面,随着人类活动范围的不断扩大,图像处理的应用领域也将随之不断扩大。 航天和航空技术:在飞机遥感和卫星遥感技术中用配备有高级计算机的图像处理系统来判读分析,既节省人力又加快了速度,还可以从照片中提取人工所不能发现的大量有用情报。 生物医学工程:除了CT技术之外,还有对医用显微图像的处理分析,如红细胞、白细胞分类,染色体分析,癌细胞识别等。

通信工程:当前通信的主要发展方向是声音、文字、图像和数据结合的多媒体通信。在一定意义上讲,编码压缩是这些技术成败的关键。除了已应用较广泛的熵编码、DPCM编码、变换编码外,目前国内外正在大力开发研究新的编码方法,如分行编码、自适应网络编码、小波变换图像压缩编码等。 工业和工程领域:图像处理技术有着广泛的应用,如自动装配线中检测零件的质量并对零件进行分类,印刷电路板疵病检查,弹性力学照片的应力分析,流体力学图片的阻力和升力分析,邮政信件的自动分拣,在一些有毒、放射性环境内识别工件及物体的形状和排列状态,先进的设计和制造技术中采用工业视觉等等。

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

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

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

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

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

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

数字图像是我们生活中接触最多的图像各类,它伴随人们的生活、学习、工作,并在军事、医学、和工业方面发挥着极大的作用,可谓随处可见,尤其在生活方面作为学生的我们会在外出旅游、生活、工作中拆下许多数字相片,现在已进入信息化时代,图像作为信息的重要载体在信息传输方面有着声音、文字等信息载体不可替代的作用,并且近年来图像处理领域,数字图像处理技术取得了飞速发展,作为计算机类专业的大学生更加有必要对数字图像处理技术有一定的掌握,而大多人对于数字图像的知识却不全面,甚至一些基础知识也很模糊,比如各类繁多的各种图像格式之间的特点,不同的情况该用何种图像格式,还有关于图像的一些基本术语也不甚了解,尤为重要的是对于一些由于拍摄问题导致的令人不甚满意的照片该如何处理,或者如何对一些照片进行处理实现特殊的表现效果。所以对于数字图像处理这门课大家有着极大兴趣,在选课时几乎所有人都选了这门课。其中有的同学由于简单的学习过PHOTOSHOP软件,因此对于数字图像处理已经有了一些基础,更加想利用这门课的学习加深自己数字图像处理的理解并提高在数字图像处理方面的能力。

通过一学期的课程学习我们虽说还没有完全掌握数字图像处理技术,但也收获了不少,对于数字图像方面的知识有了深入的了解,更加理解了数字图像的本质,即是一些数字矩阵,但灰度图像和彩色图像的矩阵形式是不同的。对于一些耳熟能详的数字图像相关术语有了明确的认识,比如常见的:像素(衡量图像的大小)、分辨率(衡量图像的清晰程度)、位图(放大后会失真)、矢量图(经过放大不会失真)等大家都能叫上口却知识模糊的名词。也了解图像处理技术中一些常用处理技术的实质,比如锐化处理是使模糊的图像变清晰,增强图像的边缘等细节。而平滑处理是的目的是消除噪声,模糊图像,在提取大目标之前去除小的细节或弥合目标间的缝隙。对常提的RGB图像和灰度图像有了明确的理解,这对大家以后应用PHOTOSHOP等图像处理软件对图像进行处理打下了坚实的基础。更重要的是学习到了数字图像处理的思想。通过学习也是对C++编程应用的很好的实践与复习。

当然通过这些课程学习还是远远不够的,也有许多同学收获甚微,我总结了下大家后期的学习态度与前期的学习热情相差很大的原因。刚开始大家是有很高的热情学习这门课的,可是随着课程的逐渐深入学习,大家渐渐发现课程讲授内容与自己起初想学的实用图像处理技术是有很大的差别的,大家更着眼于如何利用一些软件、技术去处理图像而得到满意的效果,或者进行一些图像的创意设计,可是课程的内容更偏重于如何通过编程实现实现如何对图像进行一些类似于锐化、边缘提取、模糊、去除噪声等基础功能的实现,这其中涉及很多算法、函数,需要扎实的数学基础和编程基础,并且需要利用大量时间在课下编写代码,实现并进行调试,然而大部分人的编程实践能力以及编程能力还有待提高,尤其是对于矩阵进行操作的编程尤为是个考验,并且后半学期课程任务较重,加上队里的事务也很多,时间不是很充裕,这对于需要大量实践的数字图像处理课程就是个很大的问题。

在老师授课方面建议可以在课上多进行具体操作,这样可以提起大家学习的兴趣,也可以让大家在课下积极准备,然后在上课由学员进行演示,还可以加入一些数字图像处理的经典范例,加深同学们的学习热情。

第20篇:数字图像处理教学大纲

1 课程的基本描述

课程名称: 数字图像处理 课程性质: 专业方向课

(英文名称)Digital image proceing 适用专业: 电子信息工程专业

教材选用: 冈萨雷斯(阮秋琦译).数字图像处理(第三版).电子工业出版社, 总 学 时: 56学时 实验学时: 12学时 学

分: 3.5学分

理论学时: 44学时 课程设计: 1周 开课学期: 第6学期

前导课程: 信号与系统、数字信号处理、信息论与编码 后续课程:

2 教学定位

2.1 能力培养目标

通过本课程的学习,培养学生的理解能力、逻辑思维能力、分析能力,以及算法设计与程序实现能力。一方面使学生掌握数字图象处理的基本概念、原理、处理方法与应用。特别是要把学到的数字图象处理的各种方法灵活应用到实际中。另一方面,学习本课程也将使学生对图像处理的程序设计得到训练。

2.2 课程的主要特点

本课程是一门重要的专业方向课,有理论性、设计性与实践性的特点。介绍数字图像处理的基本概念和方法。它是信号与信息处理方向的核心课程。为今后从事数字图像处理提供了必要的知识基础,同时为从事数字图像处理的专业人员提供了必要的技能训练。

2.3 教学定位

通过本课程的学习,使学生达到知识和技能两方面的目标:

1.知识方面:从数字图像处理方法及其实现这两个层面的角度,系统地学习和掌握常用数字图像处理方法及其实现算法。了解图像处理系统涉及的硬件环境。

2.技能方面:系统地学习和掌握针对不同问题采用不同处理算法及其实现方法,使分析问题和解决问题的能力得到提高。

3 知识点与学时分配

掌握程度采用Bloom分类法,即了解、理解和运用,具体含义如下: 了解:能记住学习过的内容。

理解:能领会课程内容的含义,掌握知识的内涵。 运用:能在新的具体情况下应用所学知识解决问题。

3.1数字图像处理的概述

绪论(学时:2学时)

图像、数字图像概念(了解,核心)

数字图像;数字图像处理系统(理解,核心) 发展、应用(了解,核心) 共2学时

3.2图像与视觉基础

图像处理基础与光度学(学时:6学时) 图像处理基础(掌握,核心)

视觉与亮度;颜色模型及转换;成象坐标变换;(了解,核心) 采样与量化;象素间联系;算术和逻辑运算;(理解,核心) 像素之间的联系、距离(理解,核心)

所用的数学工具(了解,核心) 共6学时

3.3图像变换

正交变换方法(学时:8学时) 图像变换(理解,核心) 离散付里叶变换及其性质;(运用,核心) 离散余弦变换;沃尔氏变换;霍特林变换;(理解,核心) 共8学时

3.4图像增强

图像增强方法(学时:8学时) 图像增强(运用,核心) 空域变换(直方灰度变换);空域滤波增强;(运用,核心) 图象频域增强(平滑、锐化);图象局域增强策略;(运用,核心)

2 彩色增强。(理解,核心) 共8学时

3.5图像的恢复与重建

图像复原(学时:6学时)

图像恢复与重建(理解,核心)

图象降质模型;有约束和无约束恢复;(理解,核心) 几何失真校正;图象重建原理。(了解,核心)

共6学时

3.6图像编码

图像编码方法(学时:6学时)

图像压缩(理解,核心)

数据冗余;简单编码方法(变长和Huffman);(运用,核心)

图象压缩国际标准(了解,核心)

共6学时

3.7图像分割

图像分割技术(学时:6学时) 图像分割(运用,核心)

边缘检测方法、图象阈值分割方法(运用,核心) 图象的区域增长、分裂和合并技术(理解,核心)

共6学时

3.10 其它学时

习题课(学时:2学时) 机动(学时:2学时) 实验(学时:12学时)

4 讲授提示及方法

4.1数字图像处理的概述

重点:数字图像处理的基本概念,数字图像处理系统的组成,涉及的领域。 讲授提示与方法:强调数字图像的组成元素—象素的属性。

4.2图像与视觉基础

重点:人类视觉与亮度的关系。颜色模型及转换关系,成象坐标变换关系。图象采样与量化的概念,

4、

8、m连接,欧氏、区域、城区距离的定义。图象象素间的算术和逻辑运算。

难点:象素间的连接、象素距离的度量。

讲授提示与方法:强调象素间的联系,以启发学生对图像目标区域、边界等概念的理解。

4.3图像变换

重点:二维离散付里叶变换及其重要性质、可分离变换、沃尔氏变换、霍特林变换、离散余弦变换。

难点:变换的目的,各种变换的适用范围和特点。 讲授提示与方法:强调图像变换方法的重要性。

4.4图像增强

重点:空域变换方法(直方灰度变换),空域滤波增强原理,图象频域增强原理(平滑、锐化)。图象局域增强策略和彩色增强。

难点:直方图处理,图像的同态滤波。

讲授提示与方法:强调各个图像增强方法的目的是用于改变图像的质量,不同的处理方法着可能针对不同的域(空域、频域)。在处理策略上可采用全局和局部处理方法。

4.5图像的恢复与重建

重点:图象降质模型,有约束和无约束恢复。图象几何失真校正,图象重建原理。 难点:有约束和无约束恢复,图象重建原理。

讲授提示与方法:强调有约束恢复和无约束恢复的不同点。

4 4.6图像编码

重点:图象编码的基本概念(数据冗余)和理论。简单编码方法(变长和Huffman).图象压缩国际标准。

难点:图像压缩的原理和算法。

讲授提示与方法:强调编码效率、压缩比对压缩算法的评价。

4.7图像分割

重点:常用边缘检测方法、图象阈值分割方法,图象的区域增长、分裂和合并技术。 难点:图像分割最优阈值的选取。

讲授提示与方法:强调图像边缘检测方法的方向性, 最优阈值应使象素被误分的概率最小。

5习题与实验设计

5.1 习题设计

由于本课程主要讲授的是图像处理的方法,因此本课程的习题主要以方法的运用为主。通过学习各知识单元的典型方法,本着循序渐进的原则,由浅入深,由单一到综合,使学生能够逐步灵活运用所学的各种方法和技巧,分析和解决实际问题。

通过学生完成作业的情况,了解学生的知识理解和掌握情况,以及学生的算法设计的思维方式,针对存在的问题作进一步的讲解和启发,使学生对所学知识能够达到融会贯通。

5.2 实验设计

针对课程特点及教学目标,阐明实验涵盖的内容、实验类型、学时分配、以及每项实验要达到的目标。实验共12学时。 实验一

二维DFT、DCT 1 实验目的及意义

(1)掌握DFT、DCT变换原理,了解它们变化的特点;

(2)掌握DFT、DCT的编程实现;

2 实验步骤

(1) 编写相应的DFT、DCT图像变换程序;

(2) 启动CCS,运行程序,查看结果并分析; 实验类型:综合 (2学时)

5

实验二

灰度图像处理 (2学时) 1 实验目的及意义

(1)学习灰度图像反色处理技术;

(2)学时灰度图像二值化处理;

2 实验步骤

(1) 编写相应的图像处理程序;

(2) 运行程序,查看结果并分析;

实验类型:综合 (2学时)

实验三

图像的增强及图像的二维滤波 1 实验目的及意义

(1) 熟练掌握利用直方图实现图像增强的原理;

(2) 熟练掌握平均滤波和中值滤波对不同噪声的适应能力;

2 实验步骤

(1) 分别编写相应的图像处理程序。

(2) 比较利用直方图实现图像增强的结果。

(3) 比较平均滤波和中值滤波对不同噪声的处理结果以及模板大小对处理结果的影响。 实验类型:综合 (2学时)

实验四

图像平滑 1 实验目的及意义

(1) 培养学生理解图像平滑的原理 (2) 掌握图像处理的基本方法 2 实验步骤

(1)编写相应的图像平滑处理程序 (2)启动CCS,编译运行 (3)观察结果并分析 实验类型:综合 (2学时)

实验五

图像锐化 1 实验目的及意义

(1) 培养学生理解图像平锐化的原理

(2) 掌握图像处理的基本方法 2 实验步骤

(1)编写相应的图像锐化处理程序

6 (2)启动CCS,编译运行 (3)观察结果并分析 实验类型:综合 (2学时)

实验六

图像的边缘检测 1 实验目的及意义

(1)熟练掌握图像边缘检测的基本原理; (2)熟练掌握图像二值化的方法。 2 实验步骤

(1)编写图像边缘检测程序;

(2)比较不同阈值对图像二值化结果的影响。 实验类型:综合(2学时)

6 考核与成绩记载

6.1 考核的方式及成绩的评定

考核成绩的构成:平时成绩20%、期末成绩80% 1.平时成绩的构成:平时作业、上课出勤15%、实验成绩5% (1)平时作业完成的获得基础分6分,然后按较好、良好、优秀分别加

2、

3、4分。(2) 实验成绩根据实验出勤情况及实验报告完成情况。 (3) 上课三分之一旷课者,不允许参加期末考试。 2.期末考试为闭卷笔试。

6.2 考题的设计

考试题大体上可以分为三种类型,重点考察学生对基本概念、基本方法、基本技术的掌握和综合应用。

1. 概念题型

基本形式有以下几种:选择、判断、填空、简答题。约占40%。 2. 应用题型

根据学过的算法按要求给出结果,回答问题,约占40%。 3. 综合题型

综合运用能力的考核。约占20%。

数字图像处理实验报告
《数字图像处理实验报告.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
相关专题
点击下载本文文档