資源簡介
圖像修復在圖像處理領域一直都是備受關注的問題,通過對一副缺損圖像進行修復從而使其無限的接近或達到原始圖像的像素信息或視覺效果,該技術在社會生活的各領域有著重要作用。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? 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個文件信息
評論
共有 條評論