(2)区域生长matlab代码

该博客介绍了如何使用MATLAB进行区域生长算法的实现,包括单点区域生长和多点区域生长。通过将RGB图像转换为HSV空间,识别并提取不同颜色的对象,如蓝色、明黄色、屎黄色、粉红色和黑色物体。对每个颜色的对象进行形态学滤波,去除噪声并进行区域生长,最终得到纯净的物体图像。
摘要由CSDN通过智能技术生成

以此为后之参考:

      

///(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)                                              %

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值