本科毕业设计 计算机图像亮度分析副本.docx
《本科毕业设计 计算机图像亮度分析副本.docx》由会员分享,可在线阅读,更多相关《本科毕业设计 计算机图像亮度分析副本.docx(27页珍藏版)》请在冰点文库上搜索。
本科毕业设计计算机图像亮度分析副本
帝国XX学院本科毕业设计(论文)
图像亮度分析模块的设计与实现
学院(系):
机电信息工程学院
专业:
自动化
学生姓名:
贝克汉姆
学号:
XXX
指导教师:
王ASBV
评阅教师:
谢XX
完成日期:
2011年6月3日
帝国AV学院
摘要
数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能。
数字图像处理技术已经在各个领域上都有了比较广泛的应用。
图像处理的信息量很大,对处理速度的要求也比较高。
MATLAB强大的运算和图形展示功能,使图像处理变得更加的简单和直观。
本文介绍了如何利用MATLAB图像处理工具箱进行数字图像处理,并通过一些例子来说明利用MATLAB图像处理工具箱进行图像处理的方法。
本次设计来源于工业生产实际,目的在于学习和掌握常用的数字图像处理原理及方法,能够运用相关软件对数字图像进行初步分析与处理。
在通过对指定的图像进行常规的信息获取、图形类型转换、图像叠加、亮度增强的基础上,然后进行关于图像的亮度分析以及图像亮度的三维图分析,以达到本次设计的目的。
关键词:
MATLAB;数字图像处理;图像亮度分析
Abstract
Digitalimageprocessingisanemergingtechnology,withthedevelopmentofcomputerhardware,real-timedigitalimageprocessinghasbecomepossible.Digitalimageprocessingtechnologyhasbeenhavingarelativelywiderangeofapplicationsinvariousareas.Imageprocessinghasalargeamountofinformation,sotheprocessingspeedrequirementsarealsorelativelyhigh.Matlab’spowerfulcomputingandgraphicsdisplaycapabilitiesmakeimageprocessingbecomesmoresimpleandintuitive.
ThisarticledescribeshowtouseMatlabimageprocessingtoolboxfordigitalimageprocessingandillustratingtheuseofMatlabimageprocessingtoolboxforimageprocessingthroughsomeexamples.
Thisdesigncomesfromtheactualindustrialproduction,aimedatlearningandmasteringcommonprinciplesandmethodsofdigitalimageprocessingandbeingabletousesoftwarefordigitalimageanalysisandpreliminaryprocessing.Specifiedintheimageonregularaccesstoinformation,graphicsconversion,imageoverlay,onthebasisofenhancedbrightness,andthenthebrightnessontheimageanalysisandthree-dimensionalmapofimagebrightnesstoachievethepurposeofthisdesign.
KeyWords:
Matlab;DigitalImageProcessing;AnalysisOfImageBrightness
目录
摘要I
AbstractII
1.绪论1
1.1数字图像处理原理和常用方法1
1.2图像的基本属性2
1.3MATLAB简介3
1.4数字图像处理的目的4
2.图像选择以及变换5
2.1原始图像读入5
2.2图像转换:
7
2.2.1图像转换为灰度图像7
2.2.2图像转换为二值图像:
8
3.亮度增强10
3.1图像代数运算10
3.2利用加法运算实现亮度增强10
4.图像亮度分析14
5.三维亮度图分析………………………………………………………………………….19
结论…………………………………………………………………………………….....21
参考文献……………………………………………………………………………………...22
附录A源程序………………………………………………………………………………..23
致谢…………………………………………………………………………………….....26
1.绪论
1.1数字图像处理原理和常用方法
数字图像处理是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。
图像处理最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。
数字图像处理作为一门学科大约形成于20世纪60年代初期。
早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。
图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。
常用方法:
(1)图像变换:
由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。
因此,往往采用各种图像变换的方法,如傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理(如傅立叶变换可在频域中进行数字滤波处理)。
目前新兴研究的小波变换在时域和频域中都具有良好的局部化特性,它在图像处理中也有着广泛而有效的应用。
(2)图像编码压缩:
图像编码压缩技术可减少描述图像的数据量(即比特数),以便节省图像传输、处理时间和减少所占用的存储器容量。
压缩可以在不失真的前提下获得,也可以在允许的失真条件下进行。
编码是压缩技术中最重要的方法,它在图像处理技术中是发展最早且比较成熟的技术。
(3)图像增强和复原:
图像增强和复原的目的是为了提高图像的质量,如去除噪声,提高图像的清晰度等。
图像增强不考虑图像降质的原因,突出图像中所感兴趣的部分。
如强化图像高频分量,可使图像中物体轮廓清晰,细节明显;如强化低频分量可减少图像中噪声影响。
图像复原要求对图像降质的原因有一定的了解,一般讲应根据降质过程建立“降质模型”,再采用某种滤波方法,恢复或重建原来的图像。
(4)图像分割:
图像分割是数字图像处理中的关键技术之一。
图像分割是将图像中有意义的特征部分提取出来,其有意义的特征有图像中的边缘、区域等,这是进一步进行图像识别、分析和理解的基础。
虽然目前已研究出不少边缘提取、区域分割的方法,但还没有一种普遍适用于各种图像的有效方法。
因此,对图像分割的研究还在不断深入之中,是目前图像处理中研究的热点之一。
(5)图像描述:
图像描述是图像识别和理解的必要前提。
作为最简单的二值图像可采用其几何特性描述物体的特性,一般图像的描述方法采用二维形状描述,它有边界描述和区域描述两类方法。
对于特殊的纹理图像可采用二维纹理特征描述。
随着图像处理研究的深入发展,已经开始进行三维物体描述的研究,提出了体积描述、表面描述、广义圆柱体描述等方法。
(6)图像分类(识别):
图像分类(识别)属于模式识别的范畴,其主要内容是图像经过某些预处理(增强、复原、压缩)后,进行图像分割和特征提取,从而进行判决分类。
图像分类常采用经典的模式识别方法,有统计模式分类和句法(结构)模式分类,近年来新发展起来的模糊模式识别和人工神经网络模式分类在图像识别中也越来越受到重视。
1.2图像的基本属性
(1)亮度:
也称为灰度,它是颜色的明暗变化,常用0%~100%(由黑到白)表示。
(2)对比度:
是画面黑与白的比值,也就是从黑到白的渐变层次。
比值越大,从黑到白的渐变层次就越多,从而色彩表现越丰富。
(3)直方图:
表示图像中具有每种灰度级的象素的个数,反映图像中每种灰度出现的频率。
图像在计算机中的存储形式,就像是有很多点组成一个矩阵,这些点按照行列整齐排列,每个点上的值就是图像的灰度值,直方图就是每种灰度在这个点矩阵中出现的次数。
(4)图像分辨率:
指组成一幅图像的像素密度的度量方法,通常使用单位打印长度上的图像像素的数目多少,即用每英寸多少点表示。
对同样大小的一幅图,如果组成该图的图像像素数目越多,则说明图像的分辨率越高,看起来就越逼真。
相反,图像显得越粗糙。
在同样大小的面积上,图像的分辨率越高,则组成图像的像素点越多,像素点越小,图像的清晰度越高。
此外还包括其他一些属性。
1.3MATLAB简介
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematical、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的语言特点:
(1)语言简洁紧凑,使用方便灵活,库函数极其丰富。
运算符丰富。
(2)MATLAB既具有结构化的控制语句,又有面向对象编程的特性。
(3)程序限制不严格,程序设计自由度大。
(4)MATLAB的图形功能强大。
(5)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。
(6)由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为释执行,所以速度较慢。
MATLAB系统主要由以下五部分构成:
(1)MATLAB语言
(2)MATLAB工作环境
(3)图形处理
(4)MATLAB数学函数库
(5)MATLAB应用编程人员接口
图1.1Matlab用户界面
1.4数字图像处理的目的
一般而言对图像进行加工和分析主要有以下三方面的目的:
(1)提高图像的视感质量,以达到赏心悦目的目的。
如去除图像中的噪声,改变图像中的亮度和颜色,增强图像中的某些成分与抑制某些成分,对图像进行几何变换等,从而改善图像的质量,以达到或真实的、或清晰的、或色彩丰富的、或意想不到的艺术效果。
(2)提取图像中所包含的某些特征或特殊信息以便于计算机进行分析,例如常用做模式识别和计算机视觉的预处理等。
这些特征包含很多方面,如频域特性、灰度、颜色特性、边界区域特。
(3)对图像数据进行变换、编码和压缩,以便于图像的存储和传输。
2.图像选择以及变换
2.1原始图像读入
图像选择方面,原始图片如下图所示:
图2.1环栅图像
MATLAB为用户提供了专门的函数以从图像格式的文件中读写图像数据。
这次采用的是imread函数来实现图像文件的读取操作,采用的格式如下:
A=imread(‘filename.fmt’)
该语句用于读取字符串“filename”对应的灰度图像或彩色图像,“fmt”指定了文件的格式。
采用imfinfo函数查询图像文件的信息。
其语句格式如下:
Info=imfinfo(‘filename.fmt’)
该语句可以在命令窗口会显示出文件的基本信息。
采用imshow函数进行图像的显示,采用的格式如下:
A=imread(‘filename.fmt’);imshow(A);
当这种显示方式要求被显示的图像要么在当前目录下或MATLAB的目录下。
图像读入与显示和变化的源代码如下:
%第一步,获取图像,并显示各种基本信息
clear;
closeall;
RGB=imread('E:
/dota670.bmp');%RGB:
原始图像,真彩色;
Info=imfinfo('E:
/dota670.bmp')
figure
imshow(RGB)
程序运行结果如图2.1所示
命令窗口中,显示如下:
info=
Filename:
'24.bmp'
FileModDate:
'04-Nov-200511:
17:
46'
FileSize:
921654
Format:
'bmp'
FormatVersion:
'Version3(MicrosoftWindows3.x)'
Width:
640
Height:
480
BitDepth:
24
ColorType:
'truecolor'
FormatSignature:
'BM'
NumColormapEntries:
0
Colormap:
[]
RedMask:
[]
GreenMask:
[]
BlueMask:
[]
ImageDataOffset:
54
BitmapHeaderSize:
40
NumPlanes:
1
CompressionType:
'none'
BitmapSize:
921600
HorzResolution:
0
VertResolution:
0
NumColorsUsed:
0
NumImportantColors:
0
2.2图像转换:
2.2.1图像转换为灰度图像
在后期的处理中,有部分程序需要用到灰阶图片,因此提前将图片进行转换,得到灰阶图片。
采用rgb2gray函数进行真彩色图像与灰阶强度图像的转变其格式调用如下:
A=rgb2gry(‘filename.fmt’);
得到的图像可以进行统计与处理。
程序源代码如下:
I=rgb2gray(RGB);%I:
灰度图像
figure
imshow(I)
程序运行结果如下图所示:
图2.3灰度图像
2.2.2图像转换为二值图像:
im2bw函数:
功能:
将灰度图像、索引色图像和真彩色图像转化成二值图像。
格式:
BW=im2bw(I,level)
BW=im2bw(X,map,level)
BW=im2bw(RGB,level)
level是一个归一化阈值,取值在[0,1]。
例:
真彩色转换为二值图像
I=imread('24.bmp');
X=im2bw(I,0.2);
imshow(I);
figure,imshow(X);
图像仍然使用上图,运行结果如下:
图2.4二值图像
3.亮度增强
3.1图像代数运算
我们可以利用图像的代数运算中的加法运算实现图像亮度增强的目的。
代数运算是指对两幅输入图象进行点对点的加、减、乘或除计算而得到输出图象的运算。
点运算是像素的逐点运算,它将输入图像映射为输出图像,输出图像每个像素点的灰度值仅由对应的输入像素点的灰度值决定。
点运算不会改变图像内像素点之间的空间关系。
设输入图像为A(x,y),输出图像为B(x,y),则点运算可表示为:
B(x,y)=f[A(x,y)]。
点运算完全由灰度映射函数f决定。
根据f的不同可以将图像的点运算分为线性点运算和非线性点运算两种。
3.2利用加法运算实现亮度增强
数字图像的代数运算包括加减乘除,他们是分别通过函数imadd,imsubtract,immultiply,imdivide。
现在以加法为例,数字图像加法运算的主要应用之一是增强图像亮度,此外还有很多其他用途。
图像的加法:
格式如下:
Z=imadd(X,Y);其中Z=X+Y。
这是加法运算的功能之一,即是把两幅图片叠加成一幅。
利用下面的语句可以实现把这两幅图片叠加:
》I=imread(‘24.bmp’);
》J=imreda(‘4.bmp’);
》K=imadd(I,J);
》imshow(K)
但是这样以后发现出现错误提示,原因是这两幅图片的大小不一致,所以翻书查找修改图片大小的函数imresize,只要利用这个语句就能实现改变图片大小,24.bmp的大小是640X480,4.bmp的大小是598X404,所以使用下面语句:
》Y=imresize(I,[598404]);
就把24.bmp的大小调整成4.bmp的大小了,然后就可以叠加了,完整程序如下:
》I=imread(‘24.bmp’);
》J=imreda(‘4.bmp’);
》Y=imresize(I,[598404]);
》K=imadd(Y,J);
》imshow(K)
运行后显示如下图:
图3.1叠加图像
在其中使用的另一幅RGB图像为:
图3.2叠加图像之一
下面利用加法运算实现图像的亮度增强,其实语句很简单:
【例】增加RGB图像的亮度
I=imread('24.bmp');
J=imadd(I,100);
imshow(J);结果如下:
图3.3亮度增强
4图像亮度分析
亮度:
也称为灰度,它是颜色的明暗变化,常用0%~100%(由黑到白)表示。
可以用下面的函数来分析图像亮度,准确的说是在图像上某一条线上的亮度。
%five-valuemeanfilterforgrayimageaandplottheresultsinred
functionldfx(imag,pan_d)
b=imread(imag);
a=rgb2gray(b);
imshow(a);
holdon;
[xlenth,ylenth]=size(a);
[xini,yini]=ginput
(1);
xinit=round(xini);
yinit=round(yini);
fori=pan_d+1:
ylenth-pan_d
stemp=0;
forii=i-pan_d:
i+pan_d
forjj=yinit-pan_d:
yinit+pan_d
stemp=stemp+double(a(jj,ii));
end
end
yy(i-pan_d)=stemp;
y(i-pan_d)=255-(stemp/((pan_d+pan_d+1)^2));
end
yy/((pan_d+pan_d+1)^2);
ymin=min(yy);
ymax=max(yy);
yuzhi_1=(ymin+(ymax-ymin)*(39/40))/((pan_d+pan_d+1)^2);
yuzhi_2=(ymin+(ymax-ymin)*(36/40))/((pan_d+pan_d+1)^2);
yuzhi_3=(ymin+(ymax-ymin)*(33/40))/((pan_d+pan_d+1)^2);
yuzhi_4=(ymin+(ymax-ymin)*(30/40))/((pan_d+pan_d+1)^2);
yuzhi_5=(ymin+(ymax-ymin)*(25/40))/((pan_d+pan_d+1)^2);
yuzhi_6=(ymin+(ymax-ymin)*(20/40))/((pan_d+pan_d+1)^2);
yuzhi_7=(ymin+(ymax-ymin)*(10/40))/((pan_d+pan_d+1)^2);
yuzhi_8=(ymin+(ymax-ymin)*(10/80))/((pan_d+pan_d+1)^2);
x=pan_d+1:
ylenth-pan_d;
plot(x,y,'r');
plot(x,yinit,'g');
plot(x,255-yuzhi_1,'c');
plot(x,255-yuzhi_2,'y');
plot(x,255-yuzhi_3,'m');
plot(x,255-yuzhi_4,'b');
plot(x,255-yuzhi_5,'r');
plot(x,255-yuzhi_6,'k');
plot(x,255-yuzhi_7,'m');
plot(x,255-yuzhi_8,'y');
要对图像进行分析,首先要把它转化为灰度图像,利用前面提到的rgb2gray函数,然后保持等待处理。
。
运行后如下所示:
图4.1环栅亮度分析
图4.2十字线亮度分析
可以看到在函数中选择希望了解的图像,运行后的结果显示该图形整体和局部的亮度对比情况,在环栅图像中其亮度情况是明暗相间的,并且从外向里的趋势是逐渐增强的,所以在一条线上的亮度分布是波浪形状且逐渐上升的,到达中心时为最亮,波浪也是最高的。
而在下面的十字线图像中除了十字线本身之外其余几乎是黑色的,所以亮度变化不明显,红色检测线也是波动很少,等到达十字线上时亮度陡然增强,红色检测线也是几乎90度上升,越过十字线之后又陡然90度下降,从这条线上可以非常直观清楚的看到图像的亮度变化情况。
5.三维亮度图分析
首先给出函数如下:
functionmeshshow(imgs)
imagemesh=imread(imgs);
kkk=imfinfo(imgs);
ifkkk.BitDepth==8
imggray=imagemesh;
else
imggray=rgb2gray(imagemesh);
end
xyz=size(imagemesh);
xxmesh=[1:
xyz
(2)];
yymesh=[1:
xyz
(1)];
imgdbl=im2double(imggray);
mesh(xxmesh,yymesh,imgdbl)
rotate3don
该函数首先利用imread读入图像且同时获得图像信息,mesh函数用来绘制图像的亮度的三维效果图,可以很清楚的看到图像亮度分布情况。
用它来处理4.bmp图像效果如下:
图5.1亮度三维图
可以看到在原图像越亮的地方,对应生成的三维图高度越高,颜色也比较深,同理,原图像越暗的地方,对应生成的三维图高度越低,颜色也比较浅。
结论
本次毕业设计经历诸多困难终于完成了,我从中学到了平时上课学不到的东西。
首先是关于毕业设计本身内容的。
现在数字图像处理已经应用到了日常生活,工业生产,科研教育等各个领域中。
Matlab简洁的语言风格为我们学习和研究图像处理提供了很多便利,在设计中使用的函数语句一般都很容易理解和掌握。
经过这次毕业设计,我认为编程的关键首先在于掌握基本函数语句,同时要多读经典的程序,吸收别人好的想法。
然后是将困难分解,将目标细化,像工业生产中的流水线一样各个击破,这样能够做到目标明确、思路清晰,更易于完成任务。
还有一