本文简单解读下 Criminisi 等人论文"Region Filling and Object Removal by Exemplar-Based Inpainting.2004,TIP"中的基于纹理合成的图像补全方法:
该方法结合了"texture synthesis"(通过纹理样图生成大图[1])与"inpainting"(基于微分方程填充图像中的细缝[2]),很好地实现了大的目标物体的移除.
Structure propogation by exemplar-based texture synthesis
将图像分为已知区域(source region)和待填充或移除区域(target region),移除从target region的边界开始,以边界点p为中心,设置块的大小,形成块(图b),然后在已知区域中根据匹配准则找到相似的块,如图c以q'及q"为中心的两个块,最后选取最佳匹配的块进行填充(图d).
算法主要由计算优先级,搜索及复制三个部分组成:
1)优先级决定了移除顺序,保证图像中的线性结构传播,目标边界连通;
2)搜索即根据纹理相似距离(平方差距离和SSD)在已知区域中找到最佳匹配块;
3)复制即将最佳匹配块复制到对应的目标区域位置
优先级计算
算法描述
1. 提取目标区域的初始边界
2. 重复以下步骤
1)判断是否还存在待填充区域,如果不存在,则退出
2)计算每一个边缘像素点块的优先级
3)选出最大优先级点,基于该点查找最佳匹配块
4)将最佳匹配块的值复制到对应的目标区域
5)更新目标区域的边界与置信度值
2. 重复以下步骤
1)判断是否还存在待填充区域,如果不存在,则退出
2)计算每一个边缘像素点块的优先级
3)选出最大优先级点,基于该点查找最佳匹配块
4)将最佳匹配块的值复制到对应的目标区域
5)更新目标区域的边界与置信度值
移除结果
matlab code :
http://www.cc.gatech.edu/~sooraj/inpainting/ 或
http://www.cc.gatech.edu/home/sooraj/inpainting/ 或
http://white.stanford.edu/teach/images/5/55/ExemplarBasedInpainting.zip
c代码参考 : http://www.pudn.com/downloads137/sourcecode/graph/texture_mapping/detail587532.html
参考文献:
[1] Texture Synthesis by Non-parametric Sampling. ICCV, 1999.
http://www.rubinsteyn.com/comp_photo/texture/ 含有matlab code 可以比较与inpainting的异同
[2] Image inpainting. SIAM, 2000. PDE-based,结构传播——“isophote” , 即优先级中数据项计算
[3] Fragment-Based Image Completion. SIGGRAPH, 2003. 提出Confidence term,顺序填充