当前位置:文档之家› 图像分割技术

图像分割技术

图像分割技术图像分割就是将一副数字图像分割成不同的区域,在同一区域内具有在一定的准则下可认为是相同的性质,如灰度、颜色、纹理等,而任何相邻区域之间器性质具有明显的区别。

主要包括:边缘分割技术、阈值分割技术和区域分割技术。

1.边缘分割技术边缘检测是检测图像特性发生变化的位置,是利用物体和背景在某种图像特性上的差异来实现的。

不同的图像灰度不同,边界处会有明显的边缘,利用此特征可以分割图像。

边缘检测分割法是通过检测出不同区域边界来进行分割的。

常见的边缘检测方法:微分算子、Canny算子和LOG算子等,常用的微分算子有Sobel算子、Roberts算子和Prewit算子等。

(1)图像中的线段对于图像的间断点,常用检测模板:-1 -1 -1 -1 8 -1 -1 -1 -1⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦对于图像中的线段,常用的检测模板:检测图像中的线段:close all;clear all;clc;I=imread('gantrycrane.png');I=rgb2gray(I);h1=[-1,-1,-1;2 2 2;-1 -1 -1];%模板h2=[-1 -1 2;-1 2 -1;2 -1 -1];h3=[-1 2 -1;-1 2 -1;-1 2 -1];h4=[2 -1 -1;-1 2 -1;-1 -1 2];J1=imfilter(I,h1);%线段检测J2=imfilter(I,h2);J3=imfilter(I,h3);J4=imfilter(I,h4);J=J1+J2+J3+J4;%4种线段相加figure,subplot(121),imshow(I);subplot(122),imshow(J);(2)微分算子○1Roberts算子的计算公式:采用edge()函数进行图像的边缘检测。

Roberts算子进行图像的边缘检测:close all; clear all;clc;I=imread('rice.png');I=im2double(I);%Roberts算法进行边缘检测[J,thresh]=edge(I,'roberts',35/255);figure,subplot(121),imshow(I);subplot(122),imshow(J);○2Prewitt算子对于复杂的图像,Roberts算子不能较好的得到图像的边缘,而需要采用更加复杂的3*3的算子,Prewittd算子如下,这两个分别表示图像的水平梯度和垂直梯度。

close all; clear all;clc;I=imread('cameraman.tif');I=im2double(I);%Prewitt算子进行边缘检测[J,thresh]=edge(I,'prewitt',[ ],'both');figure,subplot(121),imshow(I);subplot(122),imshow(J);○3Sobel算子Sobel算子模板:采用Sobel算子进行图像的水平边缘检测:close all; clear all;clc;I=imread('gantrycrane.png');I=rgb2gray(I);I=im2double(I);%Sobel算子进行边缘检测[J,thresh]=edge(I,'sobel',[ ],'horizontal');figure,subplot(121),imshow(I);subplot(122),imshow(J);(3) Canny算子Canny算子具有低误码率、高定位精度和抑制虚假边缘等优点。

close all; clear all;clc;I=imread('rice.png');I=im2double(I);J=imnoise(I,'gaussian',0,0.01);%添加高斯噪声[K,thresh]=edge(J,'canny');%Canny算子检测边缘figure,subplot(121),imshow(J);subplot(122),imshow(K);(4) LOG算子拉普拉斯(Laplacian)算子是一种不依赖于边缘方向的二阶微分算子,它是标量而不是矢量,具有旋转不变的性质,在图像处理中经常被用来提取图像的边缘,表达式为:首先用Gaussian函数对图像进行平滑,然后采用Laplacian算子根据二阶导数过零点来检测图像边缘,称为LOG算子。

优点:边界定位精度高,抗干扰能力强,连续性好等。

close all; clear all;clc;I=imread('cameraman.tif');I=im2double(I);J=imnoise(I,'gaussian',0,0.005);%添加高斯噪声[K,thresh]=edge(J,'log',[ ],2.3);%LOG算子检测边缘figure,subplot(121),imshow(J);subplot(122),imshow(K);2.阈值分割技术阈值分割技术关键在于寻找合适的阈值,通常根据图像的直方图来选取。

(1)全局阈值整个图像中只使用一个阈值,图像分为两个区域,目标对象(黑色)和背景对象(白色),全局阈值将整个图像的灰度阈值设置为常数。

对于物体和北京比较明显的图像,其灰度值直方图为双峰形状,可以选择良峰之间的波谷对应的像素值作为全局阈值,将图像分割为目标对象和背景,公式为:x y为分割后的图像,T为全(,)f x y为点(x,y)的像素值,g(,)局阈值。

采用全局阈值对图像进行分割:close all;clear all; clc;I=imread('rice.png');J=I>120;%图像分割,阈值分割为120[width,height]=size(I);for i=1:widthfor j=1:heightif (I(i,j)>130)%图像分割,阈值分割为130K(i,j)=1;elseK(i,j)=0;endendendfigure,subplot(121),imshow(J);subplot(122),imshow(K);采用函数im2bw()进行彩色图像分割:close all;clear all;clc;[X,map]=imread('trees.tif');J=ind2gray(X,map);K=im2bw(X,map,0.4);%图像分割figure,subplot(121),imshow(J);subplot(122),imshow(K);(2) Otsu阈值分割基本原理:以最佳阈值将图像的灰度值分割为两部分,使两部分之间的方差,即具有最大的分离性。

采用Ostu算法进行图像分割,T=graythresh(I)获取阈值,im2bw(I,T)完成分割:close all;clear all;clc;I=imread('coins.png');I=im2double(I);T=graythresh(I);%获取阈值J=im2bw(I,T);%图像分割figure,subplot(121),imshow(I);subplot(122),imshow(J);(3)迭代式阈值分割通过迭代的方法求出分割的最佳阈值,具有一定的适应性,比较有效:(1)设置参数T0,并选择一个初始的估计阈值T1;(2)用阈值T1分割图像。

将图像分成两部分:G1是由灰度值大于T1的像素组成,G2是由灰度值小于或等于T1的像素组成。

(3)计算G1和G2中所有像素的平均值u1和u2,以及新的阈值T2=(u1+u2)/2。

(4)如果|T2-T1|<T0,则退出,T2即为最优阈值;否则,将T2赋值给T1,并重复步骤(2)-(4),直到获取最优阈值。

采用迭代式阈值进行图像分割:close all; clear all;clc;I=imread('cameraman.tif');I=im2double(I);T0=0.01;%设置参数T0T1=(min(I(:))+max(I(:)))/2;r1=find(I>T1);r2=find(I<=T1);T2=(mean(I(r1))+mean(I(r2)))/2;while abs(T2-T1)<T0%迭代求阈值T1=T2;r1=find(I>T1);r2=find(I<=T1);T2=(mean(I(r1))+mean(I(r2)))/2;end;J=im2bw(I,T2);%图像分割figure,subplot(121),imshow(I);subplot(122),imshow(J);3.区域分割技术(1)区域生长法基本思想:将具有相似性质的像素集合起来构成区域。

区域内像素的相似性度量:平均灰度值、纹理、颜色等。

决定区域生长好坏的因素:○1初始种子的选取○2生长规则○3终止条件缺点:时间空间开销大、易造成过度分割——将图像分割为很多区域。

(2)分水岭分割基本思想:将一幅图像看成是一个地形图,灰度值对应地形的高度值,高灰度值对应山峰,低灰度值对应山谷。

水总是朝地势低的地方流动,指导某个局部低洼处,这个低洼处就是盆地。

最终所有的水都会处于不同的盆地,盆地之间的山脊称为分水岭。

分水岭分割是一个自适应的多阈值分割算法,可用函数watershed()实现。

相关主题