Matlab数字图像处理(四) |
您所在的位置:网站首页 › 采用区域生长法进行图像分割时,可采用哪些生长准则 › Matlab数字图像处理(四) |
一、基本介绍
图像分割使图像被划分成或分隔成具有相近特征的区域。图像分割常用边缘和纹理作为特征,区域内图像的灰度色调或纹理应该均匀一致,没有孔洞,相邻区域的特征差异明显。本次实验要求采用区域增长法和大津法, 实现图像分割。 二、算法原理 (1)区域增长法算法原理 区域增长是一种区域分割方法。假定区域的数目以及在每个区域中种子点的位置已知,则从该已知点开始,加上与已知点相似的邻近点形成一个区域,相似性准则可以是灰度级、彩色、组织、梯度或其它特性;相似性的测度可以由所确定的阈值来判定。从满足检测准则的点开始,在各个方向上生长区域,如果其邻近点满足检测准则就并入区域中; 重复这一过程,直到没有可接受的邻近点后,区域增长过程终止。 (2)大津法算法原理OTSU算法也称最大类间差法,有时也称之为大津算法,由大津于1979年提出,被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对比度的影响,因此在数字图像处理上得到了广泛的应用 大津法是按图像的灰度特性,将图像分成背景和前景两部分。因方差是灰度分布均匀性的一种度量,背景和前景之间的类间方差越大,说明构成图像的两部分的差别越大,当部分前景错分为背景或部分背景错分为前景都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小,但是大津法这种全局阈值分割的方法受光照不均的影响较大。 三、实验内容 1、针对cameraman.jpg 这幅测试图像,运用区域增长法进行分割,通过调整criterion的值,分析分割结果的差异和好坏【代码】 主函数TEST.m代码: input=imread('cameraman.jpg'); [row,col]=size(input); seg=reshape(1:row*col,row,col); criterion=2; connectivity=8; [seg,seg_arr,reg_info]=region_grow1(input,seg,criterion,connectivity); seg=uint16(seg); imshow(hsteq(seg));补充后的region_grow1.m的部分代码: %更改标签值等于c_lab的区域的均值 reg_info(c_lab).crt=(reg_info(c_lab).size*reg_info(c_lab).crt+reg_info(n_lab).size*reg_info(n_lab).crt)/(reg_info(c_lab).size+reg_info(n_lab).size);【结果】
四连通时:
【代码】 以下是一段在Matlab中实现大津法的程序,即一个使用OTSU算法提取图像阈值的函数,输入参数为一个图像,返回分割该图像的最佳阈值,并依据此阈值对图像进行分割。 %OTSU阈值法 clear;clc; I = imread('rice.JPG'); imshow(I);title('原图像') I = double(I); [M,N] = size(I); T = min(I(:)):max(I(:)); %获得所有可能的阈值 g = []; for i = 1:length(T) C1 = I(I>=T(i)); C2 = I(I=max_T) = 255; %进行阈值分割 I(I20 total=total+1; end end hold on title(['The number of rice:',num2str(total)]) disp(total);【结果】
【代码】 clear close all i= imread('rice.jpg'); %读入图片 figure(1);imshow(i);title('原图'); BG=imopen(i,strel('disk',15)); % 获取图片的背景 figure(2); imshow(BG);title('图像背景'); i2=imsubtract(i,BG); %减去图像背景 figure(3); imshow(i2);title('减去背景后的图像'); level=graythresh(i2); bw2=im2bw(i2,level); [labeled,numObjects]=bwlabel(bw2,8); prop=regionprops(labeled,'Area'); t=max(max(labeled)); %大米粒计数总数为t total=0; figure(4);imshow(bw2);hold on for n=1:size(prop,1) if prop(n).Area>20 total=total+1; end end hold on; title(['The number of rice:',num2str(total)]);disp(total);【结果】
【结果】
[L,num] = bwlabel(BW,n) 返回一个和BW大小相同的L矩阵,包含了标记了BW中每个连通区域的类别标签,这些标签的值为1、2…num(连通区域的个数)。n的值为4或8,表示是按4连通寻找区域,还是8连通寻找,默认为8。num返回的就是BW中连通区域的个数,可以理解成一幅图像中可以分成几块连通区域。 (2)关于图像的背景影响因为大津法受背景的影响较大,因此在使用大津法进行图像分割前,消除背景的影响对分割并计算米粒的个数起到了重要的作用,同时此环节对于其他的图像分割任务也是十分必要的,感觉和遥感图像的处理中大气校正这一环节有相似之处。当然在复杂的任务中,采取这种非常简单的方式来消除背景影像无疑是不恰当的,但对于本次实验中较简单的米粒这一图像,可以做出合理的推断,在使用区域生长法之前去除背景也对米粒的提取有很大的帮助。 下面做一个对比: 【代码】 input=imread('rice.jpg'); BG=imopen(input,strel('disk',15)); input1=imsubtract(input,BG); [row,col]=size(input); seg=reshape(1:row*col,row,col); criterion=11; connectivity=8; [seg,seg_arr,reg_info]=region_grow1(input1,seg,criterion,connectivity); seg=uint16(seg); imshow(histeq(seg));title('criterion=11,connectivity=8');【结果】
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |