1

我有连续的图像采集,并且在相机的背景上有一张白纸(面对相机)

由于房间中使用的灯泡,仅具有白色背景的图像会产生绿蓝色调,从而导致GREEN以下代码的输出

 green = im(:,:,2);
   red = im(:,:,1);
   if sum( green(:)) > sum(red(:))
       disp('green');
   else
       disp('red');
   end

有没有办法让CANCEL白纸背景只处理将放在相机前面的颜色对象?

颜色对象将是红色、绿色和蓝色方块

4

1 回答 1

1

您测试绿色或红色的方式存在根本缺陷——您需要使用合适的阈值来寻找主要颜色,否则您会得到误报。例如

threshold = 0.7;   % determine a suitable threshold empirically
blue = sum(sum(im(:,:,3)));
green = sum(sum(im(:,:,2)));
red = sum(sum(im(:,:,1)));
total = red + green + blue;
if (red / total > threshold)
    disp("red");
elseif (green / total > threshold)
    disp("green");
elseif (blue / total > threshold)
    disp("blue");
else
    disp("indeterminate colour");
end
于 2012-10-10T15:26:53.610 回答