不应用用于图像处理的过滤器

时间:2013-03-04 19:06:25

标签: matlab image-processing

我正在研究某些代码,这些代码会删除所选择的所有颜色。 如果要替换代码示例中的下一行,它将尝试绘制黑色的一切,除了红色

  

nonRedIndex =(hPlane> 20)& (hPlane< 340);

然而,我发现其他的diaposons不起作用。你能告诉我为什么吗?

cdata = imread(path);
hsvImage1 = rgb2hsv(cdata);         %# Convert the image to HSV space
hPlane = 360.*hsvImage1(:,:,1);     %# Get the hue plane scaled from 0 to 360
sPlane = hsvImage1(:,:,2);          %# Get the saturation plane
lPlane = hsvImage1(:,:,3); 
nonRedIndex = (hPlane > 140) & ...  %# Select "non-red" pixels
              (hPlane < 120);
sPlane(nonRedIndex) = 0;           %# Set the selected pixel saturations to 0
lPlane(nonRedIndex) = 0;
hsvImage1(:,:,2) = sPlane;          %# Update the saturation plane
hsvImage1(:,:,3) = lPlane;


rgbImage1 = hsv2rgb(hsvImage1);  

1 个答案:

答案 0 :(得分:1)

错误的逻辑连接 - hPlane元素必须大于140且同时小于120.这应该有效:

nonRedIndex = (hPlane < 140) & (hPlane > 120);