数字图像处理课程设计报告华工物院.docx

上传人:b****5 文档编号:11661572 上传时间:2023-03-29 格式:DOCX 页数:20 大小:493.89KB
下载 相关 举报
数字图像处理课程设计报告华工物院.docx_第1页
第1页 / 共20页
数字图像处理课程设计报告华工物院.docx_第2页
第2页 / 共20页
数字图像处理课程设计报告华工物院.docx_第3页
第3页 / 共20页
数字图像处理课程设计报告华工物院.docx_第4页
第4页 / 共20页
数字图像处理课程设计报告华工物院.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

数字图像处理课程设计报告华工物院.docx

《数字图像处理课程设计报告华工物院.docx》由会员分享,可在线阅读,更多相关《数字图像处理课程设计报告华工物院.docx(20页珍藏版)》请在冰豆网上搜索。

数字图像处理课程设计报告华工物院.docx

数字图像处理课程设计报告华工物院

摘要

1课程设计的任务与要求

1.1课程设计的任务

1.2课程设计的要求

1.3课程设计的分析

2设计理论基础知识

2.1数字图像处理基础知识

2.1.1数字图像表示

2.1.2数字图像处理技术

2.2MATLAB设计基础知识

2.2.1MATLAB处理的图像类型和文件格式

2.2.2图像文件的读取

2.2.3图像数据类型和图像类型转换

2.2.4图像显示

3对girl+noise图像中值滤波设计

3.1中值滤波基础

3.2girl+noise图像中值滤波的MATLAB设计

3.2.1图像的读取及转换

3.2.2利用冒泡算法求出邻域内的中值

3.2.3图像的输出

3.3MATLAB函数实现

3.4中值滤波算法的改进

4对plane0图像边缘检测设计

4.1边缘检测基础

4.2边缘检测模板

4.2.1一阶微分算子(梯度算子)

4.2.2二阶微分算子(Laplacian算子)

4.3Laplacian算子边缘检测的MATLAB设计

4.4输出图像评价及改进

5对car0.bmp和Image0.tif的图像增强设计

5.1灰度级基础

5.1.1线性灰度变换

5.1.2分段线性灰度变换

5.1.3非线性灰度变换

5.1.4直方图基础

5.2Image0.tif图像增强的MATLAB设计

5.2.1图像的读取及转换

5.2.2原图像直方图的绘制

5.2.3灰度值变换

5.2.4灰度变换后图像的直方图的绘制

5.2.5灰度变换图像增强对比

5.2.6直方图对比

5.3car0.bmp图像增强的MATLAB设计

5.3.1原图像的显示

5.3.2原图像直方图绘制与分析

5.3.3直方图均衡化处理及显示

5.3.4直方图均衡化后的图像显示

 

6结论

 

摘要

通过一定的算法,用数字计算机或其他数字硬件对图像进行相应的分析处理,以提高图像的质量来满足人眼或其他设备的需求,即称为数字图像处理,也称为计算机图像处理。

MATLAB作为一种面向科学与工程计算的高级语言,拥有着强大的数据分析和处理能力、灵活的程序语言、丰富的图像处理函数与高质量的图形界面以及与其他程序语言便捷的接口功能,使其在数字图像处理方面有着极大的灵活性、扩展性和包容性。

此文中介绍了一些基础的数字图像处理技术,主要分析了图像增强中的灰度级变换,直方图处理和空域滤波,图像分割中的图像锐化边缘检测问题,以MATLAB为平台,给出了具体程序,仿真结果。

关键词:

MATLAB;图像增强;空域滤波;边缘检测

 

1课程设计的任务与要求

 

1.1课程设计的任务

对四X图片,分别设计四个程序,实现图像增强或图像复原

1.2课程设计的要求

研究Matlab5.x以上版本对图像的读取、显示与输出方法,给出概要说明。

(1)利用MATLAB编写一段M程序,计算所给图像(car0.bmp,Image0.tif)的直方图,并利用灰度线性变换增强该图像。

(2)说明中值滤波的算法和优势,编写一段M程序,对所给的图像(girl+noise)进行中值滤波去除噪声。

讨论是否可以改进这一算法。

(3)编写一段M程序,利用Laplacian算子,求所给图像(plane0.tif)的边缘检测图像。

(注:

除图像的读取、显示与输出,其他处理均不能直接调用Matlab函数)

1.3课程设计的分析

图像增强从技术上可以分为两大类:

空间域图像增强和频域图像增强。

空间域图像增强直接对图像的像素进行处理,即改变原始图像中像素的灰度值;而频域图像增强则是通过修改图像的傅里叶变换系数,然后进行傅里叶逆变换,从而达到图像增强。

此次课程设计中,主要是采用空间域图像增强。

基本设计思路是:

图像文件读取,灰度图数据处理,绘制图像输出。

首先要对图像文件进行图像类型分析,确保将图片信息转化为灰度图像输入;其次,对图像的数据类型做相应的转换;然后,通过一定的算法对灰度图做相应的处理;最后,输出处理结果后的灰度图即可。

 

2设计理论基础知识

 

2.1数字图像处理基础知识

2.1.1数字图像表示

一幅图像可以用二维的函数表示,如f(x,y),其中x,y表示二维空间中的一个坐标点的位置,f表示图像在点(x,y)处图像的某种属性,如灰度。

通常,图像的取值f,x,y是连续的,通过取样量化和编码,将函数f(x,y)转换为数字图像,连续图像取样为一个二维阵列f(x,y),该阵列包含有M行N列,其中(x,y)是离散坐标。

因此,通常用灰度值分布I=f(x,y)来表示一幅数字图像,也可用M*N矩阵形式来描述一幅M*N的数字图像。

该矩阵中的每个元素称为图像单元,图像元素或像素。

2.1.2数字图像处理技术

主要包含:

图像获取,图像变换,图像增强,图像复原技术,图像编码技术,图像分割技术。

2.2MATLAB设计基础知识

此次课程设计采用的是MATLAB2013A版本,与大多数Matlab5.x以上版本的软件语言函数的应用上没有太大的差异,这里不做过多的比较。

MATLAB是一个具有高性能计算和可视化功能的科学环境、操作方便、计算精度高,能完成绝大部分科学计算。

其中,MATLAB图像处理工具箱提供了300多个图像相关函数,能方便应用于图像算法分析和数据可视化功能,是进行图像处理的有效工具。

由于此次课程设计要求只涉及到图像的读取、显示与输出,其余的图像处理函数不会做介绍分析,且只对课程设计所能应用到的的读取显示输出函数做介绍。

2.2.1MATLAB处理的图像类型和文件格式

此次课程设计中的四X图片,只包含了两种图像格式,即bmp和tif,都在MATLAB的支持格式X围内。

MATLAB支持5种图像类型,即二值图像、索引图像、灰度图像、RGB图像和多帧图像。

此次课程设计中,对图像的处理完全建立在灰度图像上,即只对图像的灰度值感兴趣,故要先将其他图像类型转换为灰度图像。

灰度图像中矩阵的每一个元素对应于图像的一个像素点,矩阵元素的数据类型可以是uint8、uint16或double型,元素数值代表了像素的灰度值或亮度值。

2.2.2图像文件的读取

在利用MATLAB进行数字图像处理时,需要先读取图像的数据。

MATLAB通常利用imread完成图像的读取,其语法格式为:

A=imread(‘指定图像存储路径及文件名’),

表示将指定的图像数据读取到数字A中。

2.2.3图像数据类型和图像类型转换

课程设计过程中对图像的灰度值进行处理时往往会产生小数,需要将灰度值数据类型转换为双精度double类型,进行灰度处理,然后利用round函数将灰度值进行四舍五入取整,最后输出时,利用uint8函数把灰度值转换为的无符号整形数据(取值X围从0到255),再利用输出函数输出图像即可。

其语法格式为:

I=double(I)

I=round(I)

I=uint8(I)

在课程设计中,需要将一个类型的文件转换成灰度图像文件读取,用到了rgb2gray函数,转换过程中,将丢掉色调饱和度信息,只利用照度信息转换,其语法格式为:

I=rgb2gray(RGB),

输入的真彩色图像RGB的数据类型可以使uint8、uint16或double型,输出的灰度图像I的数据类型与输入类型相同。

2.2.4图像显示

课程设计中,将通过一定的算法处理后的灰度图显示出来,用到了比较常用的imshow函数,其语法格式为:

figure,imshow(I),显示灰度图像I,参量I为矩阵,其元素X围为[0,255],所以在图像显示时注意要应用uint8函数对I进行数值转换。

课程设计中,涉及到直方图的绘制,其语法格式为:

figure,bar(0:

255,G),

其中G为存放灰度出现概率的一维向量。

 

3对girl+noise图像中值滤波设计

 

3.1中值滤波基础

中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,将每一像素点的灰度值设置为该点某邻域窗口内所有像素点灰度值的中值。

优点是运算简单,中值滤波在对脉冲干扰及椒盐噪声的抑制效果很好,在滤除噪声的同时能很好的保护图像的边缘信息,使图像较好的复原。

此外,很容易自适应化,从而进一步提高滤波性能。

对于中值滤波法来说,选取合适的窗口形状和窗口尺寸大小是十分重要的。

实际应用中,中值滤波的窗口可以选择线性、十字形、方形、菱形和圆形等,而此次课程设计中选取的是3*3的方形窗口。

通常选取奇数尺寸的窗口,通过不断的实验从小窗口到大窗口,才能选取出最佳的窗口。

3.2girl+noise图像中值滤波的MATLAB设计

3.2.1图像的读取及转换

clearall

RGB=imread('F:

\1design\girl+noise.bmp');

I=rgb2gray(RGB);%将图形转换成灰度图像

3.2.2利用冒泡算法求出邻域内的中值

 

J=uint8(I);%将会度值转换为整形数据

[mn]=size(J);%求图像尺寸

J3=[];%创建用来存放中值滤波后的灰度图J3

fori=2:

m-1

forj=2:

n-1

J1=J(i-1:

i+1,j-1:

j+1);

J1=reshape(J1,1,9);%将3x3中值滤波窗口矩阵转换成1x9矩阵方便排序

forh=1:

9%利用冒泡排序找出中值

forw=h+1:

9

ifJ1(h)>J1(w)

t=J1(w);

J1(w)=J1(h);

J1(h)=t;

end

end

end

J3(i,j)=J1(5);%将每一像素点灰度值设为某点邻域内的中值灰度值

end

end

3.2.3图像的输出

figure

(1),

imshow(I);

title('原始椒盐噪声图像');

figure

(2),

imshow(uint8(J3));

title('中值滤波图像');

如下图,中值滤波实验后的图像很好的符合人眼需求,中值滤波对于椒盐噪声有很好的滤除效果。

 

3.3MATLAB函数实现

MATLAB的图像处理工具箱提供了medfilt2函数用于实现中值滤波,其语法格式为:

B=medfilt2(A);用大小为3*3的窗口对图像A进行中值滤波。

3.4中值滤波算法的改进

中值滤波作为数字图像处理中比较常用的滤波方法,其滤波效果依赖于窗口和数据点,使得它在处理空间密度大的冲击噪声时受到限制,可以通过MATLAB中提供的工具箱对中值滤波算法进行改进,采用自适应中值滤波的方法。

 

4对plane0图像边缘检测设计

 

4.1边缘检测基础

图像的边缘信息是图像最基本也是最重要的图像信息,边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的方法也一直是图像分析与识别领域中十分热门的课题。

边缘,可以说是周围像素有灰度变化的那些像素的集合。

可以大致分为两种,一种是阶跃性边缘,它两边像素的灰度值有显著的不同;另一种是屋顶状边缘,它位于灰度值从增加到减少的变化转折点处。

4.2边缘检测模板

边缘检测的工具主要是边缘检测模板,也叫边缘算子。

图像的边缘是灰度值不连续的结果,这种不连续可以用求导数的方法进行检查,而在数字图像处理中,求导运算即为差分运算,考察图像每个像素某个邻域内灰度的变化利用边缘邻近一阶或二阶导数的规律来检测边缘。

4.2.1一阶微分算子(梯度算子)

梯度对应的是一阶导数(差分)信息,是一阶导数算子。

实际的数字图像是经过空间采集,灰度量化的图像,在求取梯度的时候,用差分代替微分。

而且为了计算简单,梯度的幅度大小通常用各方向差分的绝对值的和来运算。

通常用于检测图像边缘的梯度算子有Robert算子、Prewitt算子和Sobel算子。

4.2.2二阶微分算子(Laplacian算子)

Laplacian算子是一种二阶微分算子,是最简单的各向同性微分算子,具有旋转不变性,用来检测边缘时,其表达式为:

在数字图像处理中,用二阶差分代替二阶微分算子,从而Laplacian算子表达式为:

Laplacian算子对应的模板为:

从Laplacian算子模板形式可以看出,如果在图中一个较暗的区域中出现了一个亮点,那么Laplacian运算就会使这个亮点变得更亮。

Laplacian算子对细线和孤立点检测的效果好,在此次课程设计中,用Laplacian算子进行边缘检测的效果并不是很好,因为孤立点过多,而且Laplacian算子丢失了边缘方向信息,产生双像素的边缘,对噪声有加强的作用。

4.3Laplacian算子边缘检测的MATLAB设计

clearall

I=imread('F:

\1design\plane0.tif');

b=double(I);%将灰度值类型转换为双精度

H=[010;1-41;010];%Laplacian算子模板

T=40;%设定灰度值阈值

[mn]=size(I);%求灰度图像的尺寸大小

f=zeros(m,n);

fori=2:

m-1

forj=2:

n-1

c=[b(i-1,j-1)b(i-1,j)b(i-1,j+1);b(i,j-1)b(i,j)b(i,j+1);b(i+1,j-1)b(i+1,j)b(i+1,j+1)];

d=c.*H;%目标区域和算子点乘

f(i,j)=sum(d(:

));

iff(i,j)

f(i,j)=0;

elsef(i,j)=f(i,j)+150;%大于阈值的灰度值整体提高150

end

end

end

figure

(1);

imshow(I);

title('原始图像');

figure

(2);

imshow(uint8(f));

title('拉普拉斯算子的边缘检测');

 

通过对边缘检测之后的图像的观察分析,发现Laplacian算子的边缘检测效果不是很好,主要体现在:

检测到的边缘由于丢失了方向信息,导致线条不连续,而且线条旁边出现较多的间断亮点,在平坦区域也会出现很多类似噪声的亮点,总之,利用Laplacian算子边缘检测的整体效果不是很好。

4.4输出图像评价及改进

由于Laplacian算子对噪声比较敏感,很少直接用于边缘检测,通常利用的是Log算子,综合考虑对噪声的抑制和边缘的检测。

或者,利用基于算子,根据噪声的特点,采用高斯滤波和取阈值两种方法相结合,从而寻找出Laplacian算子的变形算子。

 

5对car0.bmp和Image0.tif的图像增强设计

 

图像增强不仅可以用来提高图像的视觉效果,还可以说图像边缘检测以及特征提取等技术的基础。

此部分主要介绍用于图像增强的灰度变换方法,包括线性灰度变换、非线性灰度变换与直方图法。

此次课程设计中,采用空域处理法,通过直接对图像像素的处理,即改变原始图像中像素的灰度值,来达到图像增强的目的。

5.1灰度级基础

一般成像系统只具有一定的亮度响应X围,对比度定义为亮度的最大值和最小值的比。

实际情况中,由于成像系统和周围环境的限制,往往导致得到的图片对比度不足或是超出预期X围,使人眼观看图像的视觉效果很差。

此时通过灰度变换,将图像的灰度级整个X围或者其中的某一段灰度级扩展或压缩到目的灰度级动态X围内,从而大大改善人眼的视觉效果。

常用的灰度变换有:

线性灰度变换、分段线性变换和非线性灰度变换。

5.1.1线性灰度变换

假设原图像的灰度X围为[a,b],经过线性变换后输出图像的灰度X围为[c,d],其变换可用式表示:

在实际应用中,通常是把原图像的灰度值X围[a,b]变换到整个灰度X围[0,255],其中[c,d]也可以是记录器件灵敏度较高的灰度X围。

5.1.2分段线性灰度变换

为了凸显某些感兴趣的目标或灰度区间,而抑制不感兴趣的目标或灰度区间,采用分段线性变换。

此变换对于感兴趣的灰度区间进行了扩展,而对不感兴趣的灰度区间进行了压缩。

而对于压缩的部分,在损失可以接受的情况下,可以考虑将需要压缩的灰度区间全部映射为某一特定的灰度值,或者是直接对其灰度值保留不做变化。

分段线性变换,就是线性变换的一种灵活应用。

可以通过调整折线拐点位置和控制分线直线的斜率,实现扩展和压缩,在数字图像增强处理中用途比较广泛。

5.1.3非线性灰度变换

常用的方法有对数变换和指数变换。

对数变换的表达式为:

指数变换的表达式为:

对比两变换的变换曲线可以看出:

对数变换扩展了低灰度区域,压缩了高灰度区域;而指数变换压缩了低灰度区域,扩展了高灰度区域。

两非线性变换效果刚好相反。

5.1.4直方图基础

直方图表示数字图像中每一灰度级与其出现的频数间的统计关系,一般在直角坐标系中表示,横坐标为灰度级,纵坐标为灰度级频数。

数字图像中的直方图可以用离散函数:

表示。

式中,

为第k级灰度,为第k级灰度的像素总和,n为图像像素的总数目,

为第k级灰度的频数。

直方图提供了原始图像的灰度值分布情况,给出了一幅图像所有灰度值得整体描述。

通过直方图可以对原始图像的灰度X围、灰度级分布、整幅图像的平均亮度等进行大致的描述:

如果直方图峰值位置偏向灰度值大的一边,说明图像偏亮;如果峰值位置偏向灰度值小的一边,说明图像偏暗;峰值变化过陡、过窄,则说明图像的灰度值过于集中;而直方图分布较为均匀,动态X围大,怎说明图像的对比度好,图像质量高。

前3种情况都说明图像的反差小、质量差。

此设计中,直方图只是作为一个辅助设置线性变换参数的工具,通过观察直方图的特点,然后反复调整分段线性变换的拐点,来达到图像增强的效果,对于直方图均衡化和直方图规定化没有做介绍。

算法基本流程是:

(1):

观察原始直方图分布;

(2):

设置分段线性变换的拐点与斜率;

(3):

对比原始直方图和变换后的直方图分布,对比观察原始图像和变换后的图像视觉效果;

(4):

重复步骤

(2)(3)直至图像视觉效果符合要求,确定变换所设置的参数;

此算法中过多的依赖人为的观察分析调整,最终图像增强的效果有很大的不可控性。

5.2Image0.tif图像增强的MATLAB设计

5.2.1图像的读取及转换

clearall

RGB=imread('F:

\1design\Image0.tif');

I=rgb2gray(RGB);

5.2.2原图像直方图的绘制

[mn]=size(I);%测量图像尺寸参数

G=zeros(1,256);%创建存放灰度出现概率的向量

b=double(I);%将灰度值类型转换为双精度

fork=0:

255%原图像的直方图的绘制

G(k+1)=length(find(b==k))/(m*n);

end

figure

(1);

bar(0:

255,G);

title('原图像直方图');

xlabel('灰度值');

ylabel('出现频率');

5.2.3灰度值变换

通过对原图像直方图的观察,发现灰度值集中在低灰度区间[0,11]内,较散乱的分布在[11,255]上,说明图像较暗,这从图形的视觉效果也可看出。

对于该图片,采用的是分段灰度变换,为了体现出原图像低灰度的信息,对低灰度[0,11]采用的是对数变换至灰度区间为[0,166],而对散乱分布的灰度区间[11,255],采用的是线性变换至灰度区间为[166,255]。

此设计对低灰度采用对数变换较于

完全采用分段线性变换,能较好的体现出低灰度的信息。

f=zeros(m,n);

fori=1:

m

forj=1:

n

ifb(i,j)<11%对灰度值低于11的采用对数变换

f(i,j)=160*log10(1+b(i,j));

elsef(i,j)=166+(254-166)/(255-11)*(b(i,j)-11);%观察对比原图像直方图和处理过后的直方图来调整灰度值高于11的处理参数

end

f(i,j)=round(f(i,j));%对灰度值四舍五入取整

end

end

5.2.4灰度变换后图像的直方图的绘制

G1=zeros(1,256);

fork=0:

255%预创建存放灰度出现概率的向量

G1(k+1)=length(find(f==k))/(m*n);%计算每个灰度值出现的概率存入G1

end

figure

(2);

bar(0:

255,G1);

title('变换后图像直方图');

xlabel('灰度值');

ylabel('出现频率');

figure(3);

subplot(1,2,1);

imshow(I);

title('原图像');

subplot(1,2,2);

imshow(uint8(f));

title('对数变换后的图像')

 

5.2.5灰度变换图像增强对比

 

5.2.6直方图对比

对比变换前后的直方图,原图像的直方图宽度相对于整个灰度X围来说十分的狭窄,图像质量很差,对比度很低,在MATLAB环境下对低灰度X围进行拉伸,使低灰度的X围扩展至较大的X围,提高了对比度。

5.3car0.bmp图像增强的MATLAB设计

5.3.1原图像的显示

clearall

I=imread('F:

\1design\car0.bmp');

figure

(1);

imshow(I);

title('原图像');

5.3.2原图像直方图绘制与分析

[mn]=size(I);

G=zeros(1,256);%创建存放灰度出现概率的向量

b=double(I);

fork=0:

255%求出原图像的直方图

G(k+1)=length(find(b==k))/(m*n);

end

figure

(2);

bar(0:

255,G);

title('原图像直方图');

xlabel('灰度值');

ylabel('出现频率');

由原图像和直方图可知该图像的特点是图像较暗并且动态X围低。

观察到灰度值只存在于[39,158]X围内。

设计思路是应将狭窄X围的灰度做适当的扩展至整个灰度域上,以提高图像的对比度。

但由于扩展灰度X围得出的图像增强效果并不是很好,这里采用了直方图均衡化,其主要的思路是:

先计算出原图像的直方图;然后计算出直方图的累计分布函数,即该灰度级的频数为小于该灰度级的频数之和;接着计算映射后的灰度级;确定映射关系,将处理后的灰度级赋给原图像;最后绘制图像和直方图。

5.3.3直方图均衡化处理及显示

G1=zeros(1,256);%直方图均衡处理

fori=1:

256

forj=1:

i

G1(i)=G(j)+G1(i);%将频数累加得到新的频数

end

end

G2=round(G1*256);%将新的频数做近似处理

fori=1:

256%均衡化的直方图

G3(i)=sum(G(find(G2==i)));

end

figure(3);

bar(0:

255,G3);

从图可以看出,原直方图作比较,直方图均衡化后,灰度值比较均匀的分布在[0,255]灰度X围内,且频数变化比较平坦。

 

5.3.4直方图均衡化后的图像显示

 

J=I;

fori=0:

255%图像增强处理显示

J(find(I==i))=G2(i+1);

end

figure(4);

imshow(uint8(J));

 

与原图像比较,直方图均衡化处理后的图像,整体亮度

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1