③ 尽管Matlab允许未定义使用数组,但在实际应用中这样经常出错,特别是遇到在double和uint8型之间的转换时。所以最好还是养成用前定义的习惯,防止不必要的错误。
④ 在做完一定量的运算后,一般要用Clear清除内存变量,以防影响后面的程序运行。
1.image函数是matlab提供的最原始的图像显示函数(主要彩色显示图像),程序如下:
二值图像汇总所有的像素值能从0和1两个值中取,因此在matlab中,二值图像使用一个由0和1组成的二维矩阵表示。这两个可取的值分别对应于关闭和打开,关闭表征该像素处于背景,而打开表征该像素处于前景。以这种方式来操作图像可以更容易识别出图像的结果特征。二值化程序如下:
2) 灰度化。变换增强主要使用的是直方图均衡化histeq 和对比度增imadjust;
3) 图像平滑。图像平滑的最大的目的是减少图像噪声。Matlab 提供的图像平滑函数主要有wiener2 、medfilt2 和ordfilt2。wiener2 用于实现线性平滑滤波;medfilt2 用于实现中值滤波;ordfilt2 是二维统计顺序滤波,它是中值滤波的推广;
Matlab是MATrix LABoratory(“矩阵实验室”)的缩写,是由美国MathWorks公司开发的集数值计算、符号计算和图形可视化三大基本功能于一体的,功能强大、简单易操作的语言。是国际公认的优秀数学应用软件之一。时至今日,经过MathWorks公司的逐渐完备,Matlab已发展成为适合多学科,多种工作平台的功能强大的大型软件。在国外的许多高校,Matlab慢慢的变成了线性代数、自动控制理论、数理统计、数字信号处理、动态系统仿真等高级课程的基本数学工具。Matlab的主要特征有:①语言简洁紧凑,使用起来更便捷灵活,库函数机器丰富;②运算符丰富;③具有结构化的控制语句(如for循环,while循环,break语句和if语句);④程序限制不严格,程序设计自由度大;⑤程序的可移植性很好,基本上不做修改就可以再各种各样不同型号的计算机和操作系统上运行;⑥Matlab的图形功能强大;⑦功能强大的工具箱是Matlab的另一特色;⑧缺点是和其他高级程序相比,程序执行速度较慢。它将数值分析、矩阵计算、图形图像处理、信号处理和仿真等诸多强大的功能集成在较容易使用的交互计算机环境之中,为科学研究、工程运用提供了一种功能强、效率高的编程工具[1]。
1. 球墨铸铁金相图像预处理,包括:RGB彩色图像的灰度化、图像灰度拉伸、图像边缘检测、灰度图的二值化等; 直方图均衡化、图像增强、中值滤波等.
2. 图像分割及特征提取。先对定位后的金相图像进行预处理,然后用边缘检测、面积提取法来确定特征区域。
3. 特征分析。对提取出来的特征进行形态分析,并进行球墨大小分级,球化率的计算。主要研究方案如下:
球化级别球化级别说明石墨呈球状少量团絮允许少量团絮状95石墨大部分呈球状余为团状和极少量团絮状9095石墨大部分呈团状余为团絮状允许少量蠕虫状8090石墨呈分散的蠕虫状球状团状团絮状7080石墨呈聚集分布的蠕虫状片状及球状团状团絮状6070石墨呈聚集分布的蠕虫状和片状及球状团状团絮状不规定采集下列abcdef六种球墨铸铁的金相组织图来分析计算它们的球化率评定其球化级别结果如表7
将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理中一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。灰度图像的描述
图像分割一般都会采用的方法有边缘检测(edge detection)、边界跟踪(edge tracing)、区域生长(region growing)、区域分离和聚合等。图像分割算法一般基于图像灰度值的不连续性或其相似性。不连续性是基于图像灰度的不连续变化分割图像,如针对图像的边缘有边缘检测、边界跟踪等算法。相似性是依据事先制定的准则将图像分割为相似的区域,如阈值分割、区域生长等。
图像分割其实也是对图像进行二值化。分割的目的是从图像中将研究对象—球墨铸铁中的石墨形态提取出来,通过增强有用信息、抑制无用信息,改善图像的视觉效果,提高球墨铸铁图像的可分辨性,使球墨铸铁图像更利于机器分析。图像二值化是对图像灰度取阈值θ, 用θ将图像数据分成两大部分:大于θ的像素群和小于θ的像素群,若输入图像为f ( x, y ) , 输出图像为f’( x,y) ,则:
colorbar函数用显示图像的颜色条。 通常,颜色映象进行过调节,把数据从最小扩展到最大,也就是说整个颜色映象都用于绘图。有时也许想改变颜色使用的方法。函数caxis代表颜色轴,因为颜色增加了另一个维数,它允许对数据范围的一个子集使用整个颜色映象或者对数据的整个集合只使用当前颜色映象的一部分。[cmin,cmax]=caxis返回映射到颜色映象中第一和最后输入项的最小和最大的数据。它们通常被设成数据的最小值和最大值。比如,函数mesh(peaks) 会画出函数peaks的网格图,并把颜色轴caxis设为[-6.5466,8.0752],即Z的最小值和最大值【4】。这些值之间的数据点,使用从颜色映象中经插值得到的颜色。如:
图像是当光辐射能量照在物体上经过发射或透射,或由发光物体本身发出光的能量,在人的视觉器官或者机器视觉中所呈现出的物体的视觉信息。图像源于自然景物,是其原始的形态
,是连续变换的模拟量。图像每个像素点都有自己的属性,如颜色、灰度等。颜色和灰度是决定一幅图像表现能力的重要的条件。图像的色彩是根据光的色彩决定的,人对图像色彩感觉决定于光谱成分。灰度是像素的亮度,它用于表示图像像素在黑白之间的可区分程度,用等级来度量,级数越多,黑白图像的表现力就越强。图像能够准确的通过其表现形式和生成方式做出不同的划分,按形式分可大致分为:实际图像和抽像图像。 按图像亮度等级分分为:二值图像和灰度图像。 按照光谱分分为:彩色图像和黑白图像。按照图像是否随时间而变换分:静止图像和活动图像。 按照图像所占空间的维数分:二维图像和三维图像等。图像预处理是相对于图像识别、图像理解的一种前期处理。通常图像会出现边缘过于模糊、图像上出现一些不知来源的黑点或白点,图像失真、变形等,因而要进行图像增强,按特定需要突出一幅图像中的某些有用信息;同时,削弱或去除某些不需要的信息,改善图像质量,如改变图像对比度、去除噪声或强调边缘等处理【2】。图像预处理最重要的包含以下内容:
⑤ 一般默认路径在Matlab安装文件下的work文件夹中,程序和资源都放在此,若需要引用新的文件,应事先指明路径。
本设计主要工作内容为研究基于Matlab对球墨铸铁金相图像处理分析、从图像分割、球墨铸铁组织的定位、组织特征的提取及对提取的组织的特征分析等。,选取比较合适的图像处理方法对图像进行二值化,对二值化后的图像进行图像分割和特征提取,最后对
与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。图像的灰度化处理可用两种方法来实现【5】。
第一种方法使求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量。
第二种方法是根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应:Y=0.3R0.59G0.11B,以这个亮度值表达图像的灰度值。灰度化结果如图所示,程序:
4) 图像锐化。图像锐化的目的是使边缘和轮廓线模糊的图像变得清晰,并使其细节清晰。由于锐化会使噪声受到比信号还强的增强,故一般先去除或减轻干扰噪声后才能进行锐化处理。可以用laplacian算子锐化和prewitt 模板锐化【3】。
图像采集方法主要有三种:(1)用数码相机拍摄静态图片,这种方法简单,图像清晰度高,移动性强,可在野外进行;不足的是图像易倾斜、畸变、光照不均出现阴影,增加图像处理难度。(2)用数字摄像机采集动态图像。一般是把数字摄像机(摄像头)固定在支架上,通过图像采集卡把数字影像输入计算机,通过计算机观察动态图像,根据自身的需求采集静态图像。这种方法采集速度和传输速度快,图像较小。通过在不同角度放置光源,来消除阴影,比较具有可塑性,通过支架的调节还能消除图像畸变,因而应用较多。但这种方法同样存在光照不均匀问题,还需要图像尺寸的标准参照。所设计的系统硬件由计算机,数码相机、光源等组成。本论文主要是采用的是第一种方法即用数码相机拍摄静态图片接着进行处理。如图1所示。
(2)、对图像预处理(灰度变换增强、图像平滑处理、图像锐化)得到包含信息量较小和噪声较低的图像;
在采集图片时由于相机的成像效果、拍摄角度、拍摄人员的自身感觉等因素都会影响到后边图像处理的工作和效果,因为颜色和灰度是决定一幅图像表现能力的关键因素;
利用Matlab对球墨铸铁进行金相图像分析时,就是使用图像处理工具包的函数种类很多:图像显示、图像文件输入与输出、几何操作、像素值统计、图像分析与增强、图像滤波、滤波器、图像变换、图像类型转换等。
图像处理在Matlab中的应用是由一系列支持图像处理的操作函数组成,如几何操作、区域操作、块操作、滤波、变换、图像分割、图像边缘提取、图像增强等,为便于应用,在该软件中形成图像处理工具包。图像处理工具包的函数种类很多:图像显示、图像文件输入与输出、几何操作、像素值统计、图像分析与增强、图像滤波、滤波器、图像变换、图像类型转换等。该工具包与其它一样,使用者可以根据需要自行编写函数.其中就有很多的问题出现:
对一幅图像如果整体做处理,不仅浪费时间,而且图像其它部分可能会影响处理效果。因此,可以先通过图像剪切函数imcrop 剪切所关心的、特征明显的一部分图像,然后对这部分图像进行有关地处理。Matlab工具箱中的imread 函数读入图像,支持以下几种图像文件格式:BMP,GIF,TIFF,JPEG,HDF,PCX,XWD,PNG,ICO,CUR,PGM,PPM 和RAS等类型。可利用图像处理工具箱中的imrade( )和imwrite ( )函数来实现,同时可利用imshow ( )函数将该图像显示出来。其程序如下:(如我把图像存在D盘,并面命为“qt.jpg”)