我目前正在尝试编写一个 C++ 程序,该程序能够从图像的 Y 分量中提取 ROI 并为该特定 ROI 加水印。我目前被困在水印技术的实施上。经过进一步研究,我在 OpenCV 中看到了 addweighted 函数,我知道它是线性混合的一种实现。
我想问的是,alpha混合是否被认为是原始图像的像素和水印之间的空间加法?如果没有,谁能解释两个图像之间的 alpha 混合和空间添加之间的区别?
提前感谢您提供的任何帮助。
我目前正在尝试编写一个 C++ 程序,该程序能够从图像的 Y 分量中提取 ROI 并为该特定 ROI 加水印。我目前被困在水印技术的实施上。经过进一步研究,我在 OpenCV 中看到了 addweighted 函数,我知道它是线性混合的一种实现。
我想问的是,alpha混合是否被认为是原始图像的像素和水印之间的空间加法?如果没有,谁能解释两个图像之间的 alpha 混合和空间添加之间的区别?
提前感谢您提供的任何帮助。
在这种情况下,我不是 100% 的“空间加法”(谷歌并不是特别有帮助),但我确实理解 alphablending。
如果我们有两个图像A
和B
,那么R
当与 alpha 混合时得到的图像a
:
r[x, y] = a * A[x, y] + (1-a) * B[x,y];
因此,基本上,将像素颜色加在一起,并混合每个图像的一部分。在这里我们谈论的是 RGB 颜色,我完全不知道如果你在 YUV 颜色中这样做会发生什么——我相信有一些方法可以实现同样的事情——它甚至可以被称为“空间加法”。但是我从事的所有使用 alpha 混合的图形项目都使用 RGB 作为中间项 [至少在我接触过的部分中]。
我希望通过描述这个过程,它可以帮助您理解 alphablending,并由此了解您需要做什么,无论是 RGB 还是其他格式。