【问题标题】:OpenCV linear blending and spatial additionOpenCV 线性混合和空间加法
【发布时间】:2012-12-24 21:39:19
【问题描述】:

我目前正在尝试编写一个 C++ 程序,该程序能够从图像的 Y 分量中提取 ROI 并为该特定 ROI 加水印。 我目前停留在水印技术的实施上。 经过进一步研究,我在 OpenCV 中看到了 addweighted 函数,我知道它是线性混合的一种实现。

我想问的是,alpha 混合是否被认为是原始图像的像素和水印之间的空间添加? 如果没有,谁能解释两个图像之间的 alpha 混合和空间添加之间的区别?

提前感谢您提供的任何帮助。

【问题讨论】:

    标签: c++ image-processing opencv


    【解决方案1】:

    在这种情况下,我不是 100% 的“空间加法”(谷歌也不是特别有帮助),但我确实理解 alphablending。

    如果我们有两个图像,AB,那么当与 alpha a 混合时,生成的图像 Rr[x, y] = a * A[x, y] + (1-a) * B[x,y];

    所以,基本上,将像素颜色加在一起,并混合每个图像的一部分。在这里我们谈论的是 RGB 颜色,我完全不知道如果你在 YUV 颜色中这样做会发生什么——我相信有一些方法可以实现同样的事情——它甚至可以被称为“空间加法”。但是我从事的所有使用 alpha 混合的图形项目都使用 RGB 作为中间项 [至少在我接触过的部分中]。

    我希望通过描述这个过程,它可以帮助您了解 alphablending,并由此了解您需要做什么,无论是 RGB 还是其他格式。

    【讨论】:

    • 您好,感谢您的及时回复,这绝对有很大帮助。我还有一个问题希望你能帮忙:在图像处理方面,将两个像素(属于两个不同的图像)相加到底是什么意思?
    • 在我编写的代码中,从字面上取每种颜色(R、G 和 B),乘以 (alpha) 和 (1.0-alpha) 的相应组件。是的,这将影响两个组件的强度。这应该是应用水印图像的一种不错的方式。
    • 对不起,还有一个问题,(系统不允许我编辑 -_-")当与 alpha 混合时,有没有办法获得 alpha 的值,这样第二个图像就不是人眼可以感知,但它仍然嵌入在原始图像中?还是通过跟踪和错误获得的?感谢您抽出宝贵时间回答我的问题。
    • 啊,所以你不想要一个可见的水印?那么这是一件更棘手的事情,我完全不确定这样做的商业产品是如何工作的,但我相当肯定他们不使用 alpha 混合。如果图像以任何方式被编辑,例如重新保存具有轻微尺寸和/或压缩设置更改的相同图像,则基本上只是略微改变图像中的颜色的幼稚方法无法检索水印。
    • 是的,我正在尝试实现一个不可见的水印。想法是将图像分解为其 YUV 分量,使用 SIFT 识别 Y 分量中的关键点(对攻击不变),在所述关键点周围创建感兴趣区域并执行附加空间水印。我不知道如何实现“加法空间水印”,所以我最初认为 alpha 混合可能是该问题的替代解决方案。
    猜你喜欢
    • 1970-01-01
    • 2021-05-21
    • 2011-11-26
    • 2022-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多