有时会保存二值化图像中最大的连接区域。 以下函数提供函数
%function[img]=maxliantongyu(I ) :求出图像中最大的连接区域
%输入: I输入图像
%输出: img只包含最大连通域的图像
function[img]=maxliantongyu(I ) )
iflength(size ) I ) ) 2
I=RGB2gray(I;
结束
if至is logical (I ) )。
imbw=im2bw(I; 将%转换为二值化图像
else
imBw=I;
结束
imbw=im2bw(I; 将%转换为二值化图像
imlabel=bwlabel(imbw ); %标记每个连通区域
stats=regionprops(imlabel,' Area '; %求出各连通域的大小
area=cat(1,stats.Area );
index=find(area==max ) area ); 求%最大连通域的索引
img=ismember(imlabel,index ); %获取最大连通域图像
原图:
执行:代码
img=maxliantongyu(I; imshow(img );
获得: blog
返回图像中的连接区域的大小大于阈值的连接区域时,使用matlab具有的函数: bw2=bwareaopen(bw,p )索引
或: io
% function [ img ]=chooseliantongyu (I,thres ) :返回图像中连通域的大小大于阈值的连通域
%输入: I输入图像thres阈值
%输出: img图像中连通域的大小大于阈值的连通域
function [ img ]=chooseliantongyu (I,thres ) ) ) ) ) ) ) ) )。
iflength(size ) I ) ) 2
I=RGB2gray(I;
结束
if至is logical (I ) )。
imbw=im2bw(I; 将%转换为二值化图像
else
imBw=I;
结束
imlabel=bwlabel(imbw ); %标记每个连通区域
stats=regionprops(imlabel,' Area '; %求出各连通域的大小
area=cat(1,stats.Area );
index=find(areathres ); 求%连通域大小大于阈值的索引
img=ismember(imlabel,index ) : ); %获取指定的连接域