泊松融合-无缝融合
最近,在构思一篇文章,要用fake image的方法,突然想到了以前学到的泊松融合方法。
参考文献:https://zhuanlan.zhihu.com/p/96777721?utm_id=0
https://blog.csdn.net/TracelessLe/article/details/113270697
https://www.cs.jhu.edu/~misha/Fall07/Papers/Perez03.pdf
该方法就是在泊松边界(目标图像f与合成图像f*的边界像素值相等)条件下,保持原图像的梯度特征v,和目标图像f进行融合。本质上就是求拉普拉斯方程。
也就是下面的式子,上三角意为拉普拉斯算子,下三角就是梯度(矢量):
考虑到目标图像f与原图像的图像矢量v应该尽可能贴近,又可改写为:
最后,贴一份C++的opencv代码:
#include <opencv2\opencv.hpp> #include <iostream> #include <string> using namespace std; using namespace cv; void main() { Mat imgL = imread("data/apple.jpg"); Mat imgR = imread("data/orange.jpg"); int imgH = imgR.rows; int imgW = imgR.cols; Mat mask = Mat::zeros(imgL.size(), CV_8UC1); mask(Rect(,, imgW*0.5, imgH)).setTo(); cv::imshow("mask", mask); Point center(imgW*0.25, imgH*0.5); Mat blendImg; seamlessClone(imgL, imgR, mask, center, blendImg, NORMAL_CLONE); cv::imshow("blendimg", blendImg); waitKey(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)