Image 如何使用Matlab从图像中提取红色?

Image 如何使用Matlab从图像中提取红色?,image,matlab,colors,Image,Matlab,Colors,我刚刚使用此代码在图像中仅保留红色: hsvImage = rgb2hsv(imread(filename)); hPlane = 360.*hsvImage(:,:,1); sPlane = hsvImage(:,:,2); nonRedIndex = (hPlane > 25) & (hPlane < 340); sPlane(nonRedIndex) = 0; hsvImage(:,:,2) = sPlane; rgbImage = hsv2rgb(hsvImage);

我刚刚使用此代码在图像中仅保留红色:

hsvImage = rgb2hsv(imread(filename));
hPlane = 360.*hsvImage(:,:,1);
sPlane = hsvImage(:,:,2);
nonRedIndex = (hPlane > 25) & (hPlane < 340);
sPlane(nonRedIndex) = 0;
hsvImage(:,:,2) = sPlane;
rgbImage = hsv2rgb(hsvImage);
这是我的一组只有红色的图片:

现在我试着把它改成红色,就像这样:

hsvImage = rgb2hsv(imread(filename));
hPlane = 360.*hsvImage(:,:,1);
sPlane = hsvImage(:,:,2);
nonRedIndex = (hPlane < 25) & (hPlane > 340);
sPlane(nonRedIndex) = 0;
hsvImage(:,:,2) = sPlane;
rgbImage = hsv2rgb(hsvImage);
但由于某些原因,红色仍留在图像中。你有没有想过为什么会这样

以下是第一张图像中不应出现红色的图像:


它应该正好与另一个图像相反,对吗?我不知道为什么它不能去掉红色。

请添加一些示例图片,让您的问题更清楚,@Shai我添加了一些图片!nonRedIndex=hPlane<25&hPlane>340;。这是什么?这永远不会是真的。@ParagS.Chandakkar-纯红色的色调值范围为0,但这里使用340-25的圆形范围来捕捉更多的“红色”色调。布尔运算符应该是OR而不是AND,尽管attn@user3457834@斯塔斯-那绝对是我的问题!谢谢