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('標記連通區域圖像');


結果:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章