从RGB图像中删除一种颜色

时间:2017-01-28 16:49:52

标签: matlab image-processing rgb

让我们考虑以下图片 enter image description here

我找到了一个关于如何保留其中一种RGB颜色(例如红色)并删除所有其他颜色的主题,这里是matlab中执行相同任务的代码

   I=imread('fruit.jpg');
m=size(I,1);
n=size(I,2);
for mm=1:m
for nn=1:n
if I(mm,nn,1)<80 || I(mm,nn,2)>80 || I(mm,nn,3)>100
gsc=0.3*I(mm,nn,1)+0.59*I(mm,nn,2)+0.11*I(mm,nn,3);
I(mm,nn,:)=[gsc gsc gsc];
end
end
end
imshow(I);

跑完后,我得到了以下结果 enter image description here

结果似乎没问题,但这只是我可以改变颜色的方式吗?我可以不用循环吗?我需要的是更直观的实现颜色变化的方法

1 个答案:

答案 0 :(得分:1)

您应该在Matlab文档中使用矩阵运算:https://www.mathworks.com/help/matlab/matlab_prog/find-array-elements-that-meet-a-condition.html

I = rand(5,5,3).*256;
Red = I(:,:,1)>=80 & I(:,:,2)<=80 & I(:,:,3)<100;
Red = [Red,Red,Red];
NotRed = !Red;
Gsc = I(:,:,1)*0.3 + I(:,:,2)*0.59 + I(:,:,3)*0.11;
I(NotRed) = [Gsc;Gsc;Gsc];
相关问题