MATLAB提取候选区域并对连通区域进行操作

以下代码详细注释了使用MATLAB根据颜色信息提取候选区域,以及对连通区域进行一系列操作。

clear all;clc;
%%提取候选区域
img = imread('1.png'); % 读取图像       
figure;
subplot(231);
imshow(img); % 展示图像
title('原图');
% 将图像转到hsv空间
img_hsv = rgb2hsv(img);      
% 创建一个白色图像,将特定颜色提取到此处
img_new = 255*ones(size(img));
% 将该图像转至hsv色彩空间
img_new_hsv = rgb2hsv(img_new);
% 找出图像中黄色的像素
[row, col] = ind2sub(size(img_hsv),find(img_hsv(:,:,1)>0.145...
& img_hsv(:,:,1)<0.188 & img_hsv(:,:,2)>0.16 & img_hsv(:,:,3)>0.18));
% 将图像中的黄色像素复制到刚才新建的白色图像中
for i = 1 : length(row)
    img_new_hsv(row(i),col(i),:) = img_hsv(row(i),col(i),:);
end
% 将提取出来的黄色,转化至rgb空间,进行展示
img_yellow = hsv2rgb(img_new_hsv);
subplot(232);
imshow(img_yellow);
title('黄色候选区域')
%%对连通区域进行操作
%将图像进行二值化
img_bw=im2bw(img_yellow,0.9);
subplot(233);
imshow(img_bw);
title('二值图像')
%使用开操作消除噪点
se=strel('disk',1); %创建一个半径为1的圆形结构体
img_bw_open=imopen(img_bw,se);
subplot(234);
imshow(img_bw_open);
title('开操作图像');
%标记连通区域,并显示
img_label=bwlabel(img_bw_open,4);
img_rgb=label2rgb(img_label,@jet,'y'); %将标记矩阵转换为rgb图像
subplot(235);
imshow(img_rgb);
title('标记连通区域图像');


结果:

 

  • 3
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MATLAB中,可以使用`regionprops`函数提取二值图像中的连通区域,并返回每个连通区域的一些属性,如面积、周长、中心点坐标等。 具体来说,`regionprops`函数的语法如下: ``` stats = regionprops(L, properties); ``` 其中,`L`是一个与原图像大小相同的矩阵,表示每个像素所属的连通区域编号;`properties`是一个字符串数组,用于指定需要提取区域属性,如`'Area'`表示面积,`'Centroid'`表示中心点坐标,`'BoundingBox'`表示包围盒等。 例如,下面的代码演示了如何提取二值图像中的连通区域,并显示每个连通区域的面积和中心点坐标: ```matlab % 读取二值图像 bw = imread('binary_image.png'); % 寻找连通区域 [L, num] = bwlabel(bw); % 提取连通区域 stats = regionprops(L, 'Area', 'Centroid'); % 显示连通区域的面积和中心点坐标 for i = 1:num % 显示当前连通区域的面积和中心点坐标 disp(['连通区域', num2str(i), '的面积为', num2str(stats(i).Area)]); disp(['连通区域', num2str(i), '的中心点坐标为(', num2str(stats(i).Centroid), ')']); end ``` 运行上述代码,就可以显示每个连通区域的面积和中心点坐标,如下所示: ``` 连通区域1的面积为9 连通区域1的中心点坐标为(2.0000 2.0000) 连通区域2的面积为8 连通区域2的中心点坐标为(4.5000 2.5000) 连通区域3的面积为2 连通区域3的中心点坐标为(4.5000 4.5000) ``` 如果想对每个连通区域进行进一步处理,比如提取每个连通区域的像素索引、绘制连通区域的边界等,可以根据需要使用`regionprops`函数返回的属性进行操作

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值