2017-06-09 123 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)呢?在這種情況下,會有四個像素交叉;是否應該通過重疊量來加權每個加法?

如果你確實想要像這樣的像素加權,定義你自己的方法不會太困難,但是會有點乏味,因爲你會有很多情況:角落,邊和內部會有不同的權重。