在 OpenCV 中加法混合两个部分重叠的图像
Additively blend two partially overlapping images in OpenCV
我该如何进行合成:
image A (8x8 RGB) with top left corner at (0,0).
image B (4x4 RGB) with top left corner at (6,6).
通过简单地添加 RGB 值?
我想我需要先创建一个大小为 (10,10) 的(黑色)RGB canvas,然后将每个图像添加到各自的位置。
但是如何完成第二步呢?
现在如果偏移量是 (6.3, 6.3) 怎么办?有没有处理子像素叠加的技术?
编辑:cvSetImageROI
也许吧?
为什么不使用 addWeighted()
来混合图像?您可以在较大图像中创建与较小图像大小相同的 ROI,然后将结果添加到那里。
据我所知,您无法使用内置函数实现亚像素精度。如果您添加的图像仅部分覆盖它,像素 (6,6)
处的结果会是什么?你想让它按重叠量加权吗?那么像素 (7,7)
呢?在这种情况下,将有四个像素交叉;每次添加都应按重叠量加权吗?
如果您确实希望这些像素如此加权,那么定义您自己的方法并不会太困难,但它会有点乏味,因为您有很多情况:角落、侧面和每个内部都有不同的权重。
我该如何进行合成:
image A (8x8 RGB) with top left corner at (0,0).
image B (4x4 RGB) with top left corner at (6,6).
通过简单地添加 RGB 值?
我想我需要先创建一个大小为 (10,10) 的(黑色)RGB canvas,然后将每个图像添加到各自的位置。
但是如何完成第二步呢?
现在如果偏移量是 (6.3, 6.3) 怎么办?有没有处理子像素叠加的技术?
编辑:cvSetImageROI
也许吧?
为什么不使用 addWeighted()
来混合图像?您可以在较大图像中创建与较小图像大小相同的 ROI,然后将结果添加到那里。
据我所知,您无法使用内置函数实现亚像素精度。如果您添加的图像仅部分覆盖它,像素 (6,6)
处的结果会是什么?你想让它按重叠量加权吗?那么像素 (7,7)
呢?在这种情况下,将有四个像素交叉;每次添加都应按重叠量加权吗?
如果您确实希望这些像素如此加权,那么定义您自己的方法并不会太困难,但它会有点乏味,因为您有很多情况:角落、侧面和每个内部都有不同的权重。