OpenCV を使用して、事前にワープされた一連の画像をブレンドしています。入力として、いくつかの 4 チャンネル画像 (*.png または *.tif) があり、そこから bgr 画像と、画像に関連する領域 (白) と背景 (黒) を持つアルファ マスクを抽出できます。image と mask はどちらも Blender モジュールの入力ですcv::detail::Blender::blend
。
フェザー (アルファ) ブレンディングを使用すると、結果は問題ありませんが、ゴースト効果は避けたいと思います。マルチバンドを使用すると、画像の端にいくつかのアーティファクトが表示されます。
この問題は、ここで提起されたものと同様であり、ここで解決されます。問題は、ソリューションがバイナリ マスク (アルファ チャネルから既に抽出したもの) を作成している場合、それはうまくいきません。両方の画像間のオーバーラップにパディングを追加すると、背景からピクセルが取り出され、結果がさらに台無しになります。
ガウス ピラミッドとラプラシアン ピラミッドを作成するためのぼかしは、正のアルファ領域だけでなく、画像全体に適用される可能性があるため、おそらく関数pyrUp
とに関係していると思います。pyrDown
いずれにせよ、これらの関数を使用して問題を解決する方法がわかりません。また、別の効率的な解決策を見つけることもできません。
マルチ解像度ブレンディングの別の実装を使用すると、完全に機能しますが、OpenCV のマルチバンド実装を統合することに非常に興味があります。この問題を解決する方法はありますか?