matlab标记最大的连通区域,Matlab获得二值图像中最大连通区域

有时候要将二值化图像中最大的连通域保存下来,下面函数提供了一种方法:函数

%function [img]=maxLianTongYu(I):求图像中最大的连通域

%输入:I 输入图像

%输出:img 仅包含最大连通域的图像

function [img]=maxLianTongYu(I)

if length(size(I))>2

I = rgb2gray(I);

end

if ~islogical(I)

imBw = im2bw(I); %转换为二值化图像

else

imBw = I;

end

imBw = im2bw(I); %转换为二值化图像

imLabel = bwlabel(imBw); %对各连通域进行标记

stats = regionprops(imLabel,'Area'); %求各连通域的大小

area = cat(1,stats.Area);

index = find(area == max(area)); %求最大连通域的索引

img = ismember(imLabel,index); %获取最大连通域图像

原图:

a2b8b814eec4178a87e66b0e27885ae4.png

运行:code

img=maxLianTongYu(I);

imshow(img);

获得:blog

0fa9a246c67881c40c2a79bd30ed73e4.png

若是返回图像中连通域大小大于阈值的连通域,可用matlab自带函数:BW2 = bwareaopen(BW, P)索引

或:io

%function [img]=chooseLianTongYu(I,thres): 返回图像中连通域大小大于阈值的连通域

%输入:I 输入图像 thres 阈值

%输出:img 图像中连通域大小大于阈值的连通域

function [img]=chooseLianTongYu(I,thres)

if length(size(I))>2

I = rgb2gray(I);

end

if ~islogical(I)

imBw = im2bw(I); %转换为二值化图像

else

imBw = I;

end

imLabel = bwlabel(imBw); %对各连通域进行标记

stats = regionprops(imLabel,'Area'); %求各连通域的大小

area = cat(1,stats.Area);

index = find(area > thres); %求连通域大小大于阈值的索引

img = ismember(imLabel,index(:)); %获取指定连通域

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB ,可以使用 `regionprops` 函数来计算图像连通域的属性,例如面积、周长、心点坐标等。如果要框选其的某些连通域,可以先通过 `regionprops` 函数计算出所有的连通域属性,然后根据自己的需求选择其的一部分进行框选。 具体步骤如下: 1. 使用 `bwlabel` 函数将二值图像转化为连通标记图像。该函数可以将连通的像素标记为相同的值,从而将连通域分割出来。 2. 使用 `regionprops` 函数计算所有连通域的属性。该函数可以计算出每个连通域的面积、周长、心点坐标等属性。 3. 根据自己的需求,选择其的某些连通域进行框选。可以根据连通域的属性,例如面积、周长等进行筛选。 4. 对于选择的连通域,可以使用 `rectangle` 函数绘制矩形框选其位置。 下面是一个示例代码,演示如何使用平行四边形框选连通域: ```matlab % 读取图像 I = imread('test.png'); % 将图像转化为二值图像 bw = imbinarize(I); % 将二值图像转化为连通标记图像 cc = bwconncomp(bw); L = labelmatrix(cc); % 计算所有连通域的属性 props = regionprops(cc, 'Area', 'BoundingBox'); % 根据面积筛选出面积大于 1000 的连通域 idx = find([props.Area] > 1000); % 绘制框选矩形 figure; imshow(I); hold on; for i = 1:length(idx) rectangle('Position', props(idx(i)).BoundingBox, 'EdgeColor', 'r', 'LineWidth', 2); end hold off; ``` 该代码可以读取一个图像,将其转化为二值图像,然后计算出其连通域属性。在本例,我们选择面积大于 1000 的连通域进行框选,并使用红色矩形框选其位置。执行该代码后,会在新窗口显示原始图像以及框选矩形后的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值