matlab分析图像rgb教程(matlab-对图像进行特定部分提取并得到rgb三原色)
matlab分析图像rgb教程(matlab-对图像进行特定部分提取并得到rgb三原色)在这里插入图片描述在这里插入图片描述在这里插入图片描述
需求:提取出图像特定黄瓜部分并得到其rgb三原色;
步骤:
- 首先确定黄瓜大概范围,将其它设置为背景颜色,也就是饱和度为0;
- 得到此时直方图,因为黄瓜是绿色的(所以它的g的饱和度较高,背景色的饱和度较底),根据直方图确定适当饱和度去除噪音颜色;
clear; % 清空
img=imread('C:\Users\EmotionaC\Desktop\Fig91.bmp');
%导入图像
img=uint8(img);%转换成uint8数据类型
img1=img;
[m n d]=size(img); %计算图像像素
figure('name' '原始图像');%原始图像
title('原始水果图像');
imshow(img);
% 三原色直方图
figure('name' '原图片三原色直方图');
title('原水果图片三原色直方图');
subplot(1 3 1);
imhist(img(: : 1));title('R');
subplot(1 3 2);
imhist(img(: : 2));title('G');
subplot(1 3 3);
imhist(img(: : 3));title('B');
%将图片中除了黄瓜的部分饱和度都变成0,即变成背景黑;
for i=1:m
for j=1:n
if(i>(5*m)/10 || i<(3*m)/10) %此点需要尝试以便找到最佳裁剪点
img1(i j 1)=0;
img1(i j 2)=0;
img1(i j 3)=0;
end
end
end
figure('name' '初步确定黄瓜范围图片');
imshow( img1);title('初步确定黄瓜范围图片');
% 得到此时范围三原色直方图
figure('name' '初步黄瓜范围三原色直方图');
subplot(1 3 1);
imhist(img1(: : 1));title('R');
subplot(1 3 2);
imhist(img1(: : 2));title('G');
subplot(1 3 3);
imhist(img1(: : 3));title('B');
%将图片中除了黄瓜的部分饱和度都变成0;
for i=1:m
for j=1:n
if(img1(i j 2)<30)
% 根据上面的直方图,去掉绿色饱和度较低的像素点的背景颜色;
img1(i j 1)=0;
img1(i j 2)=0;
img1(i j 3)=0;
end
end
end
figure('name' '黄瓜最终确定图');
imshow( img1);title('黄瓜最终确定图');
% 三原色直方图
figure('name' '黄瓜最终三原色直方图');
subplot(1 3 1);
imhist(img1(: : 1));title('R');
subplot(1 3 2);
imhist(img1(: : 2));title('G');
subplot(1 3 3);
imhist(img1(: : 3));title('B');
- [ ] 原始图像:
在这里插入图片描述
- [ ] 原始图像三原色直方图:
在这里插入图片描述
- [ ] 初步确定黄瓜范围图像:
在这里插入图片描述
- [ ] 初步黄瓜范围三原色直方图:
在这里插入图片描述
- [ ] 最终黄瓜图像:
在这里插入图片描述
- [ ] 最终黄瓜三原色直方图:在这里插入图片描述
- [ ] 其他信息:
在这里插入图片描述