Matlab 背景消除法检测红、绿、蓝
我有连续的图像采集,在相机的背景上有一张白纸(面对相机) 由于房间中使用了灯泡,仅具有白色背景的图像产生了蓝绿色色调,这导致以下代码的输出为绿色Matlab 背景消除法检测红、绿、蓝,matlab,image-processing,Matlab,Image Processing,我有连续的图像采集,在相机的背景上有一张白纸(面对相机) 由于房间中使用了灯泡,仅具有白色背景的图像产生了蓝绿色色调,这导致以下代码的输出为绿色 green = im(:,:,2); red = im(:,:,1); if sum( green(:)) > sum(red(:)) disp('green'); else disp('red'); end 是否有任何方法可以取消白皮书背景,以便仅处理将放置在相机前面的彩色对象 颜色对象将
green = im(:,:,2);
red = im(:,:,1);
if sum( green(:)) > sum(red(:))
disp('green');
else
disp('red');
end
是否有任何方法可以取消
白皮书背景,以便仅处理将放置在相机前面的彩色对象
颜色对象将为红色、绿色和蓝色方块测试绿色或红色的方式存在根本性缺陷-您需要使用合适的阈值查找主色,否则会出现误报。例如
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
你测试绿色或红色的方式根本上是有缺陷的——你需要使用合适的阈值来寻找主色,否则你会得到误报。例如
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
如果是静止物体,测量环境颜色,然后从初始颜色读数中减去它。如果是静止物体,测量环境颜色并从初始颜色读数中减去它的值。我应该考虑什么阈值??<代码> Red?/Soo/<代码>的结果是一个数组,我们如何与阈值进行比较?这是一个整数?抱歉-匆忙编写未经测试的代码——它意在说明一个概念,而不是一个现成的代码片段。-希望现在已经修好了。正如评论中所说,您需要根据经验确定阈值,因为它取决于您的特定系统。从0.7开始,看看它是如何运行的……在你提出最初的概念后,我尝试了类似的方法。然而,在我的例子中,我发现阈值的范围从一种颜色到另一种颜色,所以我尝试使用阈值的范围,而不是编写一个大于条件。谢谢你的帮助。我想取消背景(白色背景有绿色阴影)是我目前需要的。你能帮我解决这个问题吗?我想你不能随便取任何阈值。可能有一些了解图像阈值的过程,例如,创建或绘制图像直方图,选择阈值是直方图中两个最大峰值之间的最小点。在什么基础上,我应该考虑阈值??<代码> Red?/Soo/<代码>的结果是一个数组,我们如何与阈值进行比较?这是一个整数??抱歉-草草编写未经测试的代码。这是为了说明一个概念,而不是一个现成的代码片段——希望它现在已经修复了。正如评论中所说,您需要根据经验确定阈值,因为它取决于您的特定系统。从0.7开始,看看它是如何运行的……在你提出最初的概念后,我尝试了类似的方法。然而,在我的例子中,我发现阈值的范围从一种颜色到另一种颜色,所以我尝试使用阈值的范围,而不是编写一个大于条件。谢谢你的帮助。我想取消背景(白色背景有绿色阴影)是我目前需要的。你能帮我解决这个问题吗?我想你不能随便取任何阈值。可能有一些了解图像阈值的过程,例如创建或绘制图像的直方图,并选择阈值作为直方图中两个最大峰值之间的最小点。