我正在使用 EmguCV 并试图减去 2 个图像来创建一个类似于 AForge .NET 的MoveTowards过滤器的过滤器。
这就是我对上述 URL 稍作修改的版本尝试做的事情。给定 2 个图像,源图像和叠加层 - 它缓慢地将源图像移向叠加层。它基于以下内容执行此操作:
result = source + movementFactor * (overlay - source);
其中 result、source 和 overlay 是图像,motionFactor 是 0 到 1 范围内的变化率。
当我在代码中尝试此操作时,motionFactor 等于 1,结果看起来一团糟(有类似运动轨迹的东西)。为了进一步测试它,我从上面的等式中删除了 moveFactor ,并使结果 = 源 + 覆盖 - 源。我希望看到覆盖图像作为结果,我确实做到了,但同时还有一个正在闪烁的图像区域。
我猜当加/减发生时,像素强度会被限制在上限或下限。
我可以用这个完成我想要的:
for (int i = 0; i < src.Height; i++)
{
for (int j = 0; j < src.Width; j++)
{
res[i, j] = new Gray(src[i, j].Intensity + movementFactor * (ovr[i, j].Intensity - src[i, j].Intensity));
}
}
但这会显着减慢处理速度。如何克服上述加法/减法问题或速度问题?感谢您的回答!