我在C#中使用webcamera(使用AForge)。我也有一些默认背景。我需要提取当前图像和背景之间的差异,并创建一个新图像,其中只包含默认背景中不存在的对象。例如,如果我将手移到webcamera前面,我只需要输出那只手(其余的背景为白色)。如果我只是逐个像素地比较它会变得很难看,因为有很多噪音。我曾尝试使用阈值进行差异,但结果仍然非常糟糕。我想也许有一些过滤器或已知算法如何做到这一点?非常感谢任何帮助。
答案 0 :(得分:0)
您可以随时尝试比较两者的灰度图像。假设您的网络摄像头是静止的(因为如果没有,那么您将需要更多地调整像素移位),然后您可以将图像转换为灰度,并具有您认为图像不同的阈值:
int threshold = 30;
PixAvg1[i,j] = (Pix1.R + Pix1.G + Pix1.B)/3
PixAvg2[i,j] = (Pix2.R + Pix2.G + Pix2.B)/3
if (Math.Abs(PixAvg1[i,j] - PixAvg2[i,j+1])>threshold)
difPixel == true;
阈值是您想要获得的像素之间的容差。该值可以来自图像亮度的差异。
使用此功能,您将无法获得最清晰的结果,因为您覆盖的某些像素将匹配,但是,您可以运行额外的扫描(如果需要),并执行某种区域填充。