资源简介
图像修复在图像处理领域一直都是备受关注的问题,通过对一副缺损图像进行修复从而使其无限的接近或达到原始图像的像素信息或视觉效果,该技术在社会生活的各领域有着重要作用。Criminisi算法是一个修复大区域破损图像的典型方法,其重要的思想以及简单的设计,是近几年来中外学者依据和改进的重要凭证,虽然该方法实现了大区域破损图像修复的突破,但是该方法对于大区域直线结构和纹理并存的破损图像修复效果较差。本文分析了几种具有代表性的数字图像修补方法,对比了每种方法的优缺点,主要对基于纹理合成结构的PatchMatch算法做了相应的研究。
代码片段和文件信息
// cvrepair.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include “defineall.h“
#include
#include“opencv2/core/core.hpp“
#include “mouse_mask.h“
// Disable to measure the PSNR or the SSIM measure
#define MESURES 0
double* G_globalSimilarity = NULL;
int G_initSim = 0;
void lasi(Mat src);
///////////////////////////////////////////////////////////////////
//拉普拉斯增强
void lasi(Mat src)
{
cv::Mat kernela(3 3 CV_32F cv::Scalar(0));
Mat result;
// assigns kernel values
kernela.at(1 1) = 5.0;
kernela.at(0 1) = -1.0;
kernela.at(2 1) = -1.0;
kernela.at(1 0) = -1.0;
kernela.at(1 2) = -1.0;
filter2D(src result src.depth() kernela);
imshow(“darknight_log.jpg“ result);
waitKey();
}
double max1(double a double b)
{
return (a + b + fabs(a-b) ) / 2;
}
double min1(double a double b)
{
return (a + b - fabs(a-b) ) / 2;
}
int _tmain(int argc _TCHAR* argv[])
{
readimg();
printf(“------------------------------------------------------------------ \n“);
printf(“ Inpainting based PatchMatch \n“);
printf(“ ------------------------------------------------------------------\n“);
clock_t tictoc;
float cpu_time; /* Total CPU time in minutes */
uchar* data;
CvSize size;
double heightwidth;
//Put your file name here
//char fileNameInput[150] = “E:\\opencv\\cvrepair\\cvrepair\\image_files\\forest\\forest.bmp“;
//char fileNameMasked[150] = “E:\\opencv\\cvrepair\\cvrepair\\image_files\\forest\\forest_pruned.bmp“;
char fileNameInput[150] = “E:\\SZ\\Image\\img_src.jpg“;
//Mat img=imread(fileNameInput);
char fileNameMasked[150] = “E:\\SZ\\Image\\img_mask.jpg“;
char fileNameOutput[150];
char fileNameOutputMasked[150];
strcpy(fileNameOutput fileNameInput);
strcpy(fileNameOutputMasked fileNameMasked);
strcat(fileNameOutput “_RESULT.png“);
strcat(fileNameOutputMasked “res.png“);
IplImage* input_img=NULL *maskimage=NULL*distorted=NULL *output_img=NULL
*inpaint_mask_gray=NULL*input_gray=NULL *distorted_gray=NULL;
input_img=cvLoadImage(fileNameInput 1);
if (!input_img) {
printf(“Could not load image file: %s\n“fileNameInput);
exit(1);
}
size = cvGetSize(input_img);
height=size.height;
width=size.width;
distorted=cvLoadImage(fileNameMasked 1);
if (!distorted) {
printf(“Could not load image file: %s\n“fileNameMasked);
exit(1);
}
//Mask computation
maskimage=cvCreateImage(size81);
cvZero(maskimage);
input_gray=cvCreateImage(size81);
cvZero(input_gray);
distorted_gray=cvCreateImage(size81);
cvZero(distorted_gray);
cvCvtColor(distortedmaskimageCV_BGR2GRAY);
for ( int i=0 ; i < height ; ++i )
for ( int j=0 ; j if (cvGet2D(maskimageij).val[0] !=255 )
cvSet2D(maskimageijcvScalar(000));
/*
//display im
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-01-08 09:37 cvrepair\
目录 0 2019-01-07 14:47 cvrepair\Debug\
文件 103936 2019-01-08 09:34 cvrepair\Debug\cvrepair.exe
文件 925808 2019-01-08 09:34 cvrepair\Debug\cvrepair.ilk
文件 1846272 2019-01-08 09:34 cvrepair\Debug\cvrepair.pdb
目录 0 2019-01-05 20:56 cvrepair\cvrepair\
目录 0 2019-01-08 09:34 cvrepair\cvrepair\Debug\
文件 108360 2019-01-08 09:34 cvrepair\cvrepair\Debug\CL.read.1.tlog
文件 3890 2019-01-08 09:34 cvrepair\cvrepair\Debug\CL.write.1.tlog
文件 5534 2019-01-08 09:34 cvrepair\cvrepair\Debug\cl.command.1.tlog
文件 406 2019-01-05 17:46 cvrepair\cvrepair\Debug\cvrepair.exe.em
文件 472 2019-01-05 17:46 cvrepair\cvrepair\Debug\cvrepair.exe.em
文件 381 2019-01-08 09:34 cvrepair\cvrepair\Debug\cvrepair.exe.intermediate.manifest
文件 46 2019-01-08 09:34 cvrepair\cvrepair\Debug\cvrepair.lastbuildstate
文件 4937 2019-01-08 09:34 cvrepair\cvrepair\Debug\cvrepair.log
文件 231457 2019-01-08 09:34 cvrepair\cvrepair\Debug\cvrepair.obj
文件 7929856 2019-01-06 09:07 cvrepair\cvrepair\Debug\cvrepair.pch
文件 713 2019-01-05 17:37 cvrepair\cvrepair\Debug\cvrepair.vcxprojResolveAssemblyReference.cache
文件 0 2019-01-05 17:37 cvrepair\cvrepair\Debug\cvrepair.write.1.tlog
文件 206 2019-01-05 17:42 cvrepair\cvrepair\Debug\cvrepair_manifest.rc
文件 105928 2019-01-06 09:07 cvrepair\cvrepair\Debug\inpaint.obj
文件 2 2019-01-08 09:34 cvrepair\cvrepair\Debug\li
文件 2 2019-01-08 09:34 cvrepair\cvrepair\Debug\li
文件 2 2019-01-08 09:34 cvrepair\cvrepair\Debug\li
文件 2 2019-01-08 09:34 cvrepair\cvrepair\Debug\li
文件 2 2019-01-08 09:34 cvrepair\cvrepair\Debug\li
文件 2 2019-01-08 09:34 cvrepair\cvrepair\Debug\li
文件 2 2019-01-08 09:34 cvrepair\cvrepair\Debug\li
文件 2 2019-01-08 09:34 cvrepair\cvrepair\Debug\li
文件 2 2019-01-08 09:34 cvrepair\cvrepair\Debug\li
文件 2 2019-01-08 09:34 cvrepair\cvrepair\Debug\li
............此处省略155个文件信息
评论
共有 条评论