4 imdivide
Z=imdivide(x,y) 表示图像x/y
第四章 飞机边界的提取与叠加
4.1图像的灰度变换
照片或电子方法得到的图像,常表现出低对比度即整个图像偏亮或偏暗,为此需要对图像中的每一像素的灰度级进行标度变换,扩大图像灰度范围,以达到改善图像质量的目的。这一灰度调整过程可用imadjust( )函数实现。
灰度变换:A=rgb2gray(FILENAME,FMT) ,FILENAME 指定图像文件的完整路径和文件名,FMT为图像文件的格式对应的标准扩展名。 程序代码如下:
%读出一幅图像
A = imread('e:\\feiji.jpg'); figure;imshow(A);
text(size(A,2),size(A,1)+15, ...
'原图 A ', ... %加上图像标题A 'FontSize',20,'HorizontalAlignment','right');
B=rgb2gray(A); %转换成灰度模式 figure;imshow(B);
text(size(B,2),size(B,1)+15, ...
'灰度图 B ', ... %加上图像标题B
运行以上程序得到图1,图2的效果图:
11
图 1 图2
灰度图2显示的是对原图1进行灰度变换够的图像。变换后图像是一幅灰度级均匀分布的图像, 这意味着图像灰度的动态范围得到了增加, 从而可提高图像的对比度。
4.2 图像的二值化
灰度图像的二值化 :利用点运算的阈值理论将灰度图像变为二值图像, 为图像分析提供有利的条件, 它的操作是根据阈值T , 如果图像中某像素的灰度值小于阈值,则该像素的值设置为0 ,否则像素的值设为255 , 按下式对图像处理可以得到二值图像。 程序代码如下:
%读出一幅图像
A = imread('e:\\feiji.jpg'); figure;imshow(A);
text(size(A,2),size(A,1)+15, ...
'原图 A ', ... %加上图像标题A 'FontSize',20,'HorizontalAlignment','right');
B=rgb2gray(A); figure;imshow(B);
text(size(B,2),size(B,1)+15, ...
'灰度图 B ', ... %加上图像标题B
'FontSize',20,'HorizontalAlignment','right');
12
level = graythresh(B); %得到合适的阈值 C= im2bw(B,level); %二值化 figure;imshow(C);
text(size(C,2),size(C,1)+15, ...
'二值化 C ', ... %加上图像标题C
'FontSize',20,'HorizontalAlignment','right');
运行以上程序:
图 3 图 4
图4是是对灰度变换的图3进行二值化处理得到的二值化图像,经过二值化处理的图像,边缘轮廓鲜明,可以达到突出目标、淡化背景的作用,适合于处理简单的目标和逻辑判断。
4.3 图形闭运算
腐蚀和膨胀是依据数学形态学集合论方法发展起来的图像处理方法,起源于岩相对岩石结构的定量描述工作,在数字图像处理和机器视觉领域中得到了广泛的应用,形成了一种独特的数字图像分析方法和理论。数学形态学是图像处理和模式识领域的新方法,其基本思想是:用具有一定形态的结构元素去量度和提取图像中的对应形状,以达到图像分析和识别的目的。优势有以下几点:有效滤除噪声,保留图像中原有信息,算法易于用并行处理方法有效实现,基于数学形
13
态学的边缘信息提取处理优于基于微分运算的边缘提取算法,提取的边缘比较平滑,提取的图像骨架也比较连续,断点少
腐蚀:是一种消除边界点,使边界向内部收缩的过程。可以用来消除小且无意义的物体。
膨胀:是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。可以用来填补物体中的空洞。
闭运算:先膨胀后腐蚀的过程称为闭运算。用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。
程序代码如下:
A = imread('e:\\feiji.jpg'); figure;imshow(A);
text(size(A,2),size(A,1)+15, ...
'原图 A ', ... %加上图像标题A 'FontSize',20,'HorizontalAlignment','right');
B=rgb2gray(A);figure;imshow(B); text(size(B,2),size(B,1)+15, ...
'灰度图 B ', ... %加上图像标题B
'FontSize',20,'HorizontalAlignment','right');
level = graythresh(B); %得到合适的阈值 C= im2bw(B,level); %二值化 figure;imshow(C);
text(size(C,2),size(C,1)+15, ...
'二值化 C ', ... %加上图像标题C
'FontSize',20,'HorizontalAlignment','right');
SE = strel('square',3); %设置膨胀结构元素 D = imdilate(C,SE); %膨胀
SE1 = strel('arbitrary',eye(5)); %设置腐蚀结构元素 E = imerode(C,SE1); %腐蚀 %BW3 = bwmorph(c, 'open'); %开运算 F = bwmorph(C, 'close'); figure;imshow(F); text(size(F,2),size(F,1)+15, ...
'闭运算 F ', ... %加上图像标题F
'FontSize',20,'HorizontalAlignment','right');
14
图 5 图 6 图6是对二值化图5进行闭运算得到的图像,
4.4 图像边界提取 4.4.1边缘检测算子原理
在图像处理中,有一种十分实用的操作叫做边界提取,在提取了图像的边界后,就可以对图像进行进一步的操作如图像分割,特定区域的提取,骨架提取等等。边缘检测是一种重要的区域处理方法,边缘是所要提取目标和背景的分界线,提取出边缘才能将目标和背景区分开来。如果一个像素落在边界上,那么它的邻域将成为一个灰度级变化的带。对这种变化最有用的两个特征是灰度的变化率和方向。MATLAB工具箱提供的edge( )函数可针对sobel算子、prewitt算子、Roberts算子、log算子和canny算子实现检测边缘的功能。基于灰度的图像分割方法也可以用简单的
MATLAB代码实现。为了计算方便起见,通常选择一阶和二阶导数来检测边界,利用求导方法可以很方便地检测到灰度值的不连续效果。
15