首页 > 编程知识 正文

matlab连通域提取,matlab索引超出数组边界

时间:2023-05-03 14:40:52 阅读:110349 作者:2821

有时会保存二值化图像中最大的连接区域。 以下函数提供函数

%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 ) : ); %获取指定的连接域

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。