[db:标题]
摘要:泊松融合是一种非常不错多图融合算法,在OpenCv的相关版本中也包含了该算子模块,作者尝试着从OpenCv的大仓库中扣取出该算子的全部代码,并分享了一些在扣取代码中的心得和收获。
泊松融合我自己写的第一版程序大概是2016年在某个小房间里折腾出来的,当时是用的迭代的方式,记得似乎效果不怎么样,没有达到论文的效果。前段时间又有网友问我有没有这方面的程序,我说Opencv已经有了,可以直接使用,他说opencv的框架太大,不想为了一个功能的需求而背上这么一座大山,看能否做个脱离那个环境的算法出来,当时,觉得工作量挺大,就没有去折腾,最近年底了,项目渐渐少了一点,公司上面又在搞办公室政治,我地位不高,没有参与权,所以乐的闲,就抽空把这个算法从opencv里给剥离开来,做到了完全不依赖其他库实现泊松融合乐,前前后后也折腾进半个月,这里还是做个开发记录和分享。
在翻译算法过程中,除了参考了opencv的代码,还看到了很多参考资料,主要有以下几篇:
1、http://takuti.me/dev/poisson/demo/ 这个似乎打不开了,早期的代码好像是主要参考了这里
2、http://blog.csdn.net/baimafujinji/article/details/46787837 图像的泊松(Poisson)编辑、泊松融合完全详解
3、http://blog.csdn.net/hjimce/article/details/45716603 图像处理(十二)图像融合(1)Seamless cloning泊松克隆-Siggraph 2004
4、http://www.wangt.cc/2022/09/%E3%80%8Apoisson-image-editing%E3%80%8B%E8%AE%BA%E6%96%87%E7%90%86%E8%A7%A3%E4%B8%8E%E5%A4%8D%E7%8E%B0/#google_vignette 《Poisson Image Editing》论文理解和实现
5、https://www.baidu.com/link?url=GgbzGxsNBzdTewEEXY4lx7RH5hB4KWxODUF79-cdVnNT4siKaGx5JSqh-pR3l7N9rXufCnyXWj2Fl40KvfRuTq&wd=&eqid=d200bfec000c06300000000665a61134 从泊松方程的解法,聊到泊松图像融合
6、https://blog.csdn.net/weixin_43194305/article/details/104928378 泊松图像编辑(Possion Image Edit)原理、实现与应用
对应的论文为:Poisson Image Editing,可以从百度上下载到。
泊松融合的代码在opencv的目录如下:
opencv-4.9.0\源代码\modules\photo\src,其中的seamless_cloning_impl.cpp以及seamless_cloning.cpp为主要算法代码。
我们总结下opencv的泊松融合主要是由以下几个步骤组成的:
1、计算前景和背景图像的梯度场;
2、根据一定的原则计算融合后的图像的梯度场(这一步是最灵活的,通过改变他可以实现各种效果);
3、对融合后的梯度偏导,获取对应的散度。
4、由散度及边界像素值求解泊松方程(最为复杂)。
那么我们就一步一步的进行扣取和讲解。
一、计算前景和背景图像的梯度场。
