以下代码详细注释了使用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)>
& 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('标记连通区域图像');
结果:
本文发布于:2024-02-01 01:22:42,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170672176532813.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |