基于PatchMatch的图像修复代码


本资源是基于C++编写的patchmatch图像修复代码,编译环境是基于vs2015+opencv3.x,在图像修复之前需要先手动将原始图片的孔洞部分标识出来,具体的方法参考压缩包里的参考图片即可。
资源截图
代码片段和文件信息

#include “patch.h“

//返回最小差值(最相似)的块的代表数字,用于后续判断
//GetMinPatch1的简化版
int patch::GetMinPatch2(Mat Dst Mat Src1 Mat Src2)
{
float dist1 = Distance(Dst Src1);
float dist2 = Distance(Dst Src2);

if (dist1 < dist2)
return 1;
else
return 2;
}

//迭代第二步:随机搜索
//(rowcol)=(now_row now_col):修复patch里的像素
void patch::RandomSearch(Mat Dst Mat Src Mat Mask Mat &Off int row int col)
{
Mat DstPatch = GetPatch(Dst row col);//获取修复基准框,在框内操作

//迭代指数
int attenuate = 0;

while (true)
{
//获取随机参数,在 [-1;1] 间
float divcol = rand() % 2000 / 1000.0f - 1.0f;
float divrow = rand() % 2000 / 1000.0f - 1.0f;

//减小框大小的公式,

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)