Poisson Image Editing

Edit on Github

Poisson Image Editing. SIGGRAPH2003.

Patrick Perez, Michel Gangnet and Andrew Blake.

做了近一周多,时间都用在MFC、CxImage库和稀疏矩阵求解库的使用上了,Poisson算法倒是很明了,在Intel MKL库调试成功当天完成的。那个开源的TAUCS库怎么也放不到MFC中,最后只好用MKL了。这个算法的效果不是很好,Microsoft Research Asia和The Chinese University of Hong Kong的Drag-and-Drop Pasting策略效果改进很多了,主要优化了下边界和透明度处理,有时间一定也去实现下。

在生成Release版本时又遇到了问题,后来请教了牛人学长才得知,要生成Release版则库一般也要相应的是Release的。解释是,如果库的内存分配操作在内部实现,就一定也要Release的,而像OpenCV库的对象内存都是在库外分配的,所以Debug和Release可以用同一版本的lib。因为这个程序的运算量比较大,才发现Release比Debug明显快了很多!

//////////////////////////////////////////////////////////////////////////
// Poisson求解函数
// Input:
//   idata,iwidth,iheight,istep 源图像及其宽高和每行步长
//   pSel 选区,    offsetx,offsety 源图像在目标图像上的偏移量,选区大小与源图像相等
// odata,owidth,oheight,,ostep 目标图像及其宽高和每行步长
void CSolver::Solve(const BYTE *idata, int iwidth, int iheight, int istep,
                       const BYTE *pSel, const UINT offsetx, const UINT offsety,
                       BYTE *odata, int owidth, int oheight, int ostep)