以此为后之参考:
///(1) 单点区域生长---脚本文件//
%% 目标颜色检测--RGB转化为HSV
clc;clear;
image = imread( 'exercises_1.bmp');
imshow(image);title('原图');
% imwrite(image,'./outputs_image/first_step/origin.jpg');
% imwrite(image,'./outputs_image/second_step/origin.jpg');
imwrite(image,'./outputs_image/third_step/origin.jpg');
image_hsv = rgb2hsv(image); % 将RGB值转换到HSV值,便于颜色识别,
%imshow(image_hsv); % 其中H(色调)——S(饱和度)——V(亮度)
[H,W,K] = size(image); % 读取图像的高宽和通道值,K=1,2,3对应HSV
srcData = [H,W,K]; % 将图像的宽高和色彩信息存入srcData
for i = 1:H % 遍历图像
for j = 1:W
h = image_hsv(i,j,1); % 读取图像的HSV值,便于后面的色彩识别
s = image_hsv(i,j,2);
v = image_hsv(i,j,3);
% 物体从上到下进行识别
%% 蓝色物体
if 0.40<h && h<0.667 && s>0.15 && v>0.2 % 将h(0.4-0.667)和s(0.15-1)-->h=0,s=0.8,v=0.8()
image_hsv(i,j,1) = 0;
image_hsv(i,j,2) = 0.8;
image_hsv(i,j,3) = 0.8;
end
%% 明黄色物体
if 0.167<h && h<0.333 && s>0.4 % 将h(0.167-0.333)和s(0.4-1)-->h=0.5,s=1(绿)
image_hsv(i,j,1) = 0.333;
image_hsv(i,j,2) = 1;
end
%% 屎黄色物体
if 0<h && h<0.167 && s>0.65 % 将h(0-0.167)和s(0.65-1)-->h=0.833,s=1(紫)
image_hsv(i,j,1) = 0.833;
image_hsv(i,j,2) = 1;
end
%% 粉红色物体
if 0.9<h && h<1 && s>0.5 % 将h(0.9-1)和s(0.5-1)-->h=0.6,v=0.8(蓝)
image_hsv(i,j,1) = 0.6;
image_hsv(i,j,3) = 0.8;
end
%% 黑色物体
if s<0.45 && v>0 && v<0.17 % 将s(0-0.1)和v(0-0.17)-->h=0.6,v=0(黑)
image_hsv(i,j,3) = 0;
end
end
end
image_show = hsv2rgb(image_hsv);
% figure;
% imshow(image_show);title('检测结果');
% imwrite(image_show,'./outputs_image/first_step/result.jpg');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 画1个白色图像
flag_1 = 255*ones(size(image)); % 创建一个白色图像,将特定颜色提取到此处,其中ones生成数值全为1的数组,zeros生成数值为0
s=ones(3); % 定义结构元素
se=ones(4);
sel=ones(5);
sel_1=ones(1);
sel_2=ones(2);
sel_3=ones(6);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 画出检测出的蓝色物体
flag_hsv_1 = rgb2hsv(flag_1);
[row, col] = ind2sub(size(image_hsv),find(image_hsv(:,:,1)<=0 & image_hsv(:,:,1)>=0 ...
& image_hsv(:,:,2)<=0.8 & image_hsv(:,:,2)>= 0.8 ... % 其中ind2sub--按照size指定的矩阵形式将索引(index)转化为行列形式
& image_hsv(:,:,3)<=0.8 & image_hsv(:,:,3)>=0.8));
for i = 1 : length(row) %