我有连续的图像采集,并在相机的背景(面向相机)上有白纸
由于房间内使用的灯泡导致输出为GREEN
,因此仅具有白色背景的图像会产生绿蓝色调,以下代码
green = im(:,:,2);
red = im(:,:,1);
if sum( green(:)) > sum(red(:))
disp('green');
else
disp('red');
end
有没有办法CANCEL
白皮书背景只处理将放在相机前面的颜色对象?
Color对象将是RED,GREEN和BLUE正方形
答案 0 :(得分:1)
您测试绿色或红色的方式存在根本缺陷 - 您需要使用合适的阈值来寻找主色,否则您将得到误报。 E.g。
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