2017-06-09 43 views
0

我怎么可能去合成:加法混合两个部分重叠的图像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画布开始,并在每个图像的相应位置添加每个图像。

但是如何完成第二步呢?

现在如果偏移量是(6.3,6.3)?有没有处理亚像素叠加的技术?编辑:cvSetImageROI也许?

+1

处理混合有不同的技术,经常使用的是简单的不断混合(如addWeighted与因子0.5)或重叠部分的线性交叉混合。看看我的答案在https://stackoverflow.com/questions/22315904/blending-does-not-remove-seams-in-opencv/22324790#22324790如何可以使用/解决某种线性交叉混合。为了“校正”一些子像素偏移量,你可以使用图像变形,它将使用插值。这也可以纠正一些旋转和缩放的偏移量。 – Micka

+0

@Micka在这篇文章上的一些优秀的答案! –

回答

2

为什么不使用addWeighted()来混合图像?您可以在较大图像中创建与较小图像相同大小的ROI,并在其中添加结果。

你不能用我知道的内置函数来做子像素精度。像素(6,6)的结果如果添加了仅部分覆盖它的图像,那么结果会是什么?你想通过重叠量加权吗?那像素(7,7)呢?在这种情况下,会有四个像素交叉;是否应该通过重叠量来加权每个加法?

如果你确实想要像这样的像素加权,定义你自己的方法不会太困难,但是会有点乏味,因为你会有很多情况:角落,边和内部会有不同的权重。