数字图像处理 第6章 图像分割 北邮出版社 2008 10
- 格式:ppt
- 大小:1.76 MB
- 文档页数:69
数字图像处理:图像分割数字图像处理:图像分割前⾔:这个实验分成两部分代码,分别对应1和21. 膨胀:将与⽬标区域的背景点合并到该⽬标物中,使⽬标物边界向外部扩张的处理,把⼆值图像各1像素连接成分的边界扩⼤⼀层。
具体操作为:图像中关⼼的像素(结构元素B中值为1的部分)有1,则结果赋值为1,没有1,则赋值0。
腐蚀:消除连通域的边界点,使边界向内收缩的处理。
贴标签是对不同连通域区分和标记的基本算法,把⼆值图像各1像素连接成分的边界点去掉从⽽缩⼩⼀层。
2. 开操作:先腐蚀再膨胀,可以去掉⽬标外的孤⽴点闭操作:先膨胀再腐蚀,可以去掉⽬标内的孔。
注:别忘了图⽚的路径改成⾃⼰的⼀、实验⽬的理解和掌握图像分割的基本理论和算法,练习使⽤形态学、区域、边界和阈值的⽅法结合图像增强复原的相关知识对图像进⾏分割处理。
⼆、实验内容1.读⼊⼀幅图像,对图像进⾏如下操作:(1) ⽤膨胀腐蚀等形态学⽅法对图像进⾏去噪、增强处理。
改变结构元素,观察处理后的图像是否有明显的差别。
(2) ⽤开操作和闭操作等形态学⽅法去除指纹图像中的细⼩颗粒,连接断裂的指纹。
(3) 在上⼀步⽤形态学⽅法处理后的指纹图像基础上,运⽤全局阈值实现图像的⼆值化。
2.读⼊⼀幅图像,利⽤边缘检测和分⽔岭⽅法(watershed)对图像进⾏前景分割。
在调⽤watershed函数前,利⽤prewitt算⼦或者全局阈值等⽅法增强图像边缘。
实验结果图如下:1. 第⼀部分实验结果(两种图⽚来观察结果,此外我在作腐蚀时改变了两种结构元素来进⾏观察)2. 第⼆部分实验结果(两种图⽚来观察结果):代码如下:###### 第⼀部分代码%⼿动实现膨胀和腐蚀%img=imread('finger_noise.tif');img=im2bw(imread('test.png'));figure('name','实验结果');number=5;% 定义number⾏图⽚subplot(number,3,1);imshow(img);title('原图');subplot(number,3,4);imshow(img);title('原图');subplot(number,3,7);imshow(img);title('原图');B=[0 1 01 1 10 1 0]; %结构元素[row,col]=size(img);%获得图像的⾼和宽%对img进⾏膨胀imgdilate=img;for i=2:row-1for j=2:col-1pitch=img(i-1:i+1,j-1:j+1);convtmp= pitch.*B; %⽤img中的⼀块与结构元素作卷积if sum(convtmp(:))>0imgdilate(i,j)=1;%⾮零则赋值1elseimgdilate(i,j)=0;%零则仍赋值0endendendsubplot(number,3,2);imshow(imgdilate);title('膨胀后结果');%对img进⾏腐蚀imgerode=img;C=sum(B(:)); %结构元素B中关⼼的元素个数for i=2:row-1for j=2:col-1pitch=img(i-1:i+1,j-1:j+1);convtmp= pitch.*B; %⽤img中的⼀块与结构元素作卷积if sum(convtmp(:))<Cimgerode(i,j)=0;elseimgerode(i,j)=1;endendendsubplot(number,3,3);imshow(imgerode);title('腐蚀后结果');B= [1 1 1;1 1 1;1 1 1]%更改结构元素[1 1 1;1 1 1;1 1 1],[1 0 1;0 1 0;1 0 1] %开操作(对腐蚀后的图像再进⾏⼀次膨胀)imgopen=imgerode;for i=2:row-1for j=2:col-1pitch=imgerode(i-1:i+1,j-1:j+1);convtmp= pitch.*B; %⽤img中的⼀块与结构元素作卷积if sum(convtmp(:))>0 %⾮零则赋值1imgopen(i,j)=1;elseimgopen(i,j)=0;%零则仍赋值0endendendsubplot(number,3,5);imshow(imgopen);title('开操作后结果,结构元素为[1 1 1;1 1 1;1 1 1]');%闭操作(对膨胀后的图像再进⾏⼀次腐蚀)imgclose=imgdilate;C=sum(B(:)); %结构元素B中关⼼的元素个数for i=2:row-1for j=2:col-1pitch=imgdilate(i-1:i+1,j-1:j+1);convtmp= pitch.*B; %⽤img中的⼀块与结构元素作卷积if sum(convtmp(:))<Cimgclose(i,j)=0;elseimgclose(i,j)=1;endendendsubplot(number,3,6);imshow(imgclose);title('闭操作后结果,结构元素为[1 1 1;1 1 1;1 1 1]');B= [1 0 1;0 1 0;1 0 1]%更改结构元素[1 1 1;1 1 1;1 1 1],[1 0 1;0 1 0;1 0 1] %开操作(对腐蚀后的图像再进⾏⼀次膨胀)imgopen=imgerode;for i=2:row-1for j=2:col-1pitch=imgerode(i-1:i+1,j-1:j+1);convtmp= pitch.*B; %⽤img中的⼀块与结构元素作卷积if sum(convtmp(:))>0 %⾮零则赋值1imgopen(i,j)=1;elseimgopen(i,j)=0;%零则仍赋值0endendendsubplot(number,3,8);imshow(imgopen);title('开操作后结果,结构元素为[1 0 1;0 1 0;1 0 1]');%闭操作(对膨胀后的图像再进⾏⼀次腐蚀)imgclose=imgdilate;C=sum(B(:)); %结构元素B中关⼼的元素个数for i=2:row-1for j=2:col-1pitch=imgdilate(i-1:i+1,j-1:j+1);convtmp= pitch.*B; %⽤img中的⼀块与结构元素作卷积if sum(convtmp(:))<Cimgclose(i,j)=0;elseimgclose(i,j)=1;endendendsubplot(number,3,9);imshow(imgclose);title('闭操作后结果,结构元素为[1 0 1;0 1 0;1 0 1]');subplot(number,3,10);imshow(imgdilate);title('原图');%确定全局阈值TT=0.5*(double(min(imgdilate(:)))+double(max(imgdilate(:))));%设置初始阈值为最⼤灰度和最⼩灰度值和的⼀半done=false;while ~doneg=imgdilate>=T;%分成两组像素,灰度值⼤于或者等于T的和灰度值⼩于T的Tnext=0.5*(mean(imgdilate(g))+mean(imgdilate(~g)));%新阈值两个范围内像素平均值和的⼀半done=abs(T-Tnext)<0.5; %0.5是⾃⼰指定的参数T=Tnext;endimout2=im2bw(imgdilate,T);subplot(number,3,11);imshow(imout2);title('膨胀后全局⼆值化');%确定全局阈值TT=0.5*(double(min(imgerode(:)))+double(max(imgerode(:))));%设置初始阈值为最⼤灰度和最⼩灰度值和的⼀半done=false;while ~doneg=imgerode>=T;%分成两组像素,灰度值⼤于或者等于T的和灰度值⼩于T的Tnext=0.5*(mean(imgerode(g))+mean(imgerode(~g)));%新阈值两个范围内像素平均值和的⼀半done=abs(T-Tnext)<0.5; %0.5是⾃⼰指定的参数T=Tnext;endimout3=im2bw(imgerode,T);subplot(number,3,12);imshow(imout3);title('腐蚀后全局⼆值化');第⼆部分代码%pic =imread('finger.tif')pic =imread('rice.tif')number=2subplot(number,3,1);imshow(pic);title('原图');% 使⽤prewitt算⼦增强G=imfilter(pic,fspecial('prewitt'));%⽣成’prewitt’模板,并对输⼊图像做边缘增强,再加上原图像subplot(number,3,2);imshow(G);title('prewitt算⼦增强后图像');L=watershed(G); %分⽔岭算法wr=L==0; %取出边缘subplot(number,3,3);imshow(wr);title('分⽔岭');pic(wr)=255;subplot(number,3,5);imshow(uint8(pic));title('前景分割结果');。
图象分割与描述 pp第六章 图像分割与描述(Image segmentation and description)数字图象处理的目的之一是用作图象识别,本章内容介绍的图像分割与描述是图象识别工作的基础。
图像分割将图象分为一些有意义的区域,然后可以对这些区域进行描述,相当于提取出某些目标区域图像的特征,判断图像中是否有感兴趣的目标。
本章第三节的图像的匹配则是在不进行图象分割的情况下,利用图象相似性度量搜索图象中有否目标图象,并确定目标区域的精确位臵。
本章内容在数字图象处理应用中,如跟踪、制导等方面扮演重要角色,有着广泛的用途。
Pp图象分割(Image segmentation) 1概述图象分割是把图象阵列分解成若干个互不交迭的区域,每一个区域内部的某种特性或特征相同或接近,而不同区域间的图象特征则有明显差别,即同一区域内部特性变化平缓,相对一致,而区域边界处则特性变化比较剧烈。
概括地说,给定某种一致性(均匀)属性准则(度量)P ,将图象X 正确地划分成为互不交迭的区域集{}n S S S ,,,21 的过程称之为分割。
当然,这里所谓的正确分割应满足下列条件:()φ≠==i ni iS S X 11()j i S S j i ≠∀=φ2()()()true S P i 13=()()()false S S P j i 04=用作图象分割的度量准则不是唯一的,它与应用场景图象及应用目的有关,用于图象分割的场景图象特征信息有亮度、色彩、纹理、结构、温度、频谱、运动、形状、位臵、梯度和模型等。
图象分割方法也有很多,以下介绍一些常用的算法。
pp 1.2 基于直方图谷点门限的分割方法当图像的灰度直方图为双峰分布时,分割比较容易,只须取其谷点作为门限值,就能将物体与背景分割开来。
()()()⎩⎨⎧≥<=THy x f THy x f y x g ,,0,,1,如下图所示:TH zpp当图象灰度z 为10-≤≤L z 时,谷点灰级*z 应满足()()()()11+<-<****z h z h z h z h 且其中()z h 为图象直方图。
图像分割总结图像分割就是把图像中有意义的特征部分提取出来,例如,图像中的边缘、区域等,通过特征部分的提取将图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标。
图像分割是由图像处理到图像分析以及其他操作的关键步骤。
现有的图像分割方法主要分以下几类:基于阈值的分割方法(可以分为全局阈值方法和局部阈值方法)、基于区域的分割方法(区域生长算法、分裂合并算法、分水岭算法等)、基于边缘的分割方法(分为串行边缘检测技术和并行边缘检测技术)以及基于统计模式分类的分割方法等。
1、智能剪刀智能剪刀是一个新的,交互式的,用于图像分割和合成的工具。
数字图像分割技术用来从周围的背景中提取图像成分。
但是当时基于计算机的分割工具非常粗糙,并且和手工跟踪相比没有太大的优势。
然而,智能剪刀可以通过鼠标的移动快速和精确地提取图像中的物体。
当鼠标确定的位置接近一个物体的边缘的时候,一个live-wire边界捕捉并且包围了我们感兴趣的物体。
live-wir e是一种交互式分割方法,其基本思想是利用动态规划方法产生图像中给定两点间的最优路径,合理地构造代价函数和选择起始点和目标点,用以提取物体的边缘。
live-wir e边界检测将离散的动态规划问题规划为一个二维图像的搜索问题。
动态规划提供了数学意义上最佳的边界,同时也极大的减少了局部噪声和其他干扰结构的影响。
该算法选择的边界不是邻接边中的最强壮的边,而是与现在正在被跟踪的边的特定类型相符合的边,这一过程我们成为on-the-fly training,增强了算法的可靠性和智能剪刀工具的健壮性。
通过智能剪刀提取出来的物体可以被放大或者缩小,旋转,以及利用live-wire掩模和空间频率等值性组合成新的图像。
空间频率等值是利用巴特沃斯低通滤波器实现的。
智能剪刀提供了一个用于物体提取和图像合成的精确并且高效的交互性工具,它不仅可以用于灰度图像,同时也可适用于任意复杂度的彩色图像,并且基于这个工作还有很多扩展应用。