日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图像修复之Exemplar-Based Inpainting

發布時間:2023/12/8 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像修复之Exemplar-Based Inpainting 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原理參考 https://blog.csdn.net/frank_xu_0818/article/details/18842729
代碼參考 https://github.com/sooham/inpainting

  • 本文簡單解讀下 Criminisi 等人論文"Region Filling and Object Removal by Exemplar-Based Inpainting.2004,TIP"中的基于紋理合成的圖像補全方法
  • 該方法結合了"texture synthesis"(通過紋理樣圖生成大圖[1])與"inpainting"(基于微分方程填充圖像中的細縫[2]),很好地實現了大的目標物體的移除.
  • 將圖像分為已知區域(source region)和待填充或移除區域(target region),移除從target region的邊界開始,以邊界點p為中心,設置塊的大小,形成塊(圖b),然后在已知區域中根據匹配準則找到相似的塊,如圖c以q’及q"為中心的兩個塊,最后選取最佳匹配的塊進行填充(圖d).

算法主要由計算優先級,搜索及復制三個部分組成:

1)優先級決定了移除順序,保證圖像中的線性結構傳播,目標邊界連通;

2)搜索即根據紋理相似距離(平方差距離和SSD)在已知區域中找到最佳匹配塊;

3)復制即將最佳匹配塊復制到對應的目標區域位置

優先級計算


代碼實現:

// 主函數 int main(int argc, char** argv) {// --------------- read filename strings ------------------std::string colorFilename, maskFilename;if (argc == 3) {colorFilename = argv[1];maskFilename = argv[2];} else {std::cerr << "Usage: ./inpainting colorImageFile maskImageFile" << std::endl;return -1;}// ---------------- read the images ------------------------// colorMat - color picture + border// maskMat - mask picture + border// grayMat - gray picture + bordercv::Mat colorMat, maskMat, grayMat;loadInpaintingImages(colorFilename,maskFilename,colorMat,maskMat,grayMat);// confidenceMat - confidence picture + bordercv::Mat confidenceMat;maskMat.convertTo(confidenceMat, CV_32F);confidenceMat /= 255.0f;// add borders around maskMat and confidenceMatcv::copyMakeBorder(maskMat, maskMat,RADIUS, RADIUS, RADIUS, RADIUS,cv::BORDER_CONSTANT, 255);cv::copyMakeBorder(confidenceMat, confidenceMat,RADIUS, RADIUS, RADIUS, RADIUS,cv::BORDER_CONSTANT, 0.0001f);// ---------------- start the algorithm -----------------contours_t contours; // mask contourshierarchy_t hierarchy; // contours hierarchy// priorityMat - priority values for all contour points + bordercv::Mat priorityMat(confidenceMat.size(),CV_32FC1); // priority value matrix for each contour pointassert(colorMat.size() == grayMat.size() &&colorMat.size() == confidenceMat.size() &&colorMat.size() == maskMat.size());cv::Point psiHatP; // psiHatP - point of highest confidencecv::Mat psiHatPColor; // color patch around psiHatPcv::Mat psiHatPConfidence; // confidence patch around psiHatPdouble confidence; // confidence of psiHatPConfidencecv::Point psiHatQ; // psiHatQ - point of closest patchcv::Mat result; // holds result from template matchingcv::Mat erodedMask; // eroded maskcv::Mat templateMask; // mask for template match (3 channel)// eroded mask is used to ensure that psiHatQ is not overlapping with targetcv::erode(maskMat, erodedMask, cv::Mat(), cv::Point(-1, -1), RADIUS);cv::Mat drawMat;// main loopconst size_t area = maskMat.total();while (cv::countNonZero(maskMat) != area) // end when target is filled{// set priority matrix to -.1, lower than 0 so that border area is never selectedpriorityMat.setTo(-0.1f);// get the contours of maskgetContours((maskMat == 0), contours, hierarchy);if (DEBUG) {drawMat = colorMat.clone();}// compute the priority for all contour pointscomputePriority(contours, grayMat, confidenceMat, priorityMat);// get the patch with the greatest priority 知道cv::minMaxLoc(priorityMat, NULL, NULL, NULL, &psiHatP);psiHatPColor = getPatch(colorMat, psiHatP);psiHatPConfidence = getPatch(confidenceMat, psiHatP);cv::Mat confInv = (psiHatPConfidence != 0.0f);confInv.convertTo(confInv, CV_32F);confInv /= 255.0f;// get the patch in source with least distance to psiHatPColor wrt source of psiHatPcv::Mat mergeArrays[3] = {confInv, confInv, confInv};cv::merge(mergeArrays, 3, templateMask);result = computeSSD(psiHatPColor, colorMat, templateMask);// set all target regions to 1.1, which is over the maximum value possilbe// from SSDresult.setTo(1.1f, erodedMask == 0);// get minimum point of SSD between psiHatPColor and colorMatcv::minMaxLoc(result, NULL, NULL, &psiHatQ);assert(psiHatQ != psiHatP);if (DEBUG) {cv::rectangle(drawMat, psiHatP - cv::Point(RADIUS, RADIUS), psiHatP + cv::Point(RADIUS+1, RADIUS+1), cv::Scalar(255, 0, 0));cv::rectangle(drawMat, psiHatQ - cv::Point(RADIUS, RADIUS), psiHatQ + cv::Point(RADIUS+1, RADIUS+1), cv::Scalar(0, 0, 255));showMat("red - psiHatQ", drawMat);}// updates// copy from psiHatQ to psiHatP for each colorspacetransferPatch(psiHatQ, psiHatP, grayMat, (maskMat == 0));transferPatch(psiHatQ, psiHatP, colorMat, (maskMat == 0));// fill in confidenceMat with confidences C(pixel) = C(psiHatP)confidence = computeConfidence(psiHatPConfidence);assert(0 <= confidence && confidence <= 1.0f);// update confidencepsiHatPConfidence.setTo(confidence, (psiHatPConfidence == 0.0f));// update maskMatmaskMat = (confidenceMat != 0.0f);}showMat("final result", colorMat, 0);return 0; }

總結

以上是生活随笔為你收集整理的图像修复之Exemplar-Based Inpainting的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 午夜影视免费 | 伊人网在线视频观看 | 久久精品精品 | 日韩综合精品 | 超碰日韩在线 | 欧洲精品一区二区三区久久 | 国产精品三级久久久久久电影 | 久久久免费观看 | 你懂的网站在线 | 免费看成人片 | www.国产一区| 超碰青青操| 韩国主播青草55部完整 | 精品99999| 久久露脸国语精品国产 | 日韩欧美大片在线观看 | 欧美午夜一区二区 | 激情成人综合网 | 精品久久久久久久久久久久久久久 | 樱井莉亚av | 国产综合久久 | 久久久香蕉视频 | 波多野吉衣一区二区三区 | 欧美一区二区三区成人久久片 | 成人免费黄色av | 国产精品swag| 国产av无码专区亚洲av毛片搜 | 国产三级精品在线观看 | 亚洲影院中文字幕 | 四虎黄色片 | 欧美一区二区三区久久久 | 亚洲成人77777 | 国产野外作爱视频播放 | 日韩在线精品视频一区二区涩爱 | 美女无遮挡免费网站 | 日韩一区二区三区不卡视频 | 成人深夜在线 | 福利网址在线观看 | 亚洲黄色精品 | 99碰碰| 亚洲热在线视频 | 黄色视屏网站 | 激情高潮呻吟抽搐喷水 | 亚洲精品日产精品乱码不卡 | 国产探花精品一区二区 | 久久国产美女 | 美女网站在线免费观看 | 91在线超碰| www.操.com | 婷婷丁香花五月天 | 四虎网址大全 | av解说在线观看 | 黄色三级视频在线观看 | 一区二区三区四区日韩 | 久久人成 | 伊人最新网址 | 日本不卡专区 | 91在线免费视频 | 插吧插吧综合网 | 久久er99热精品一区二区 | 777奇米色 | 国产精品7777777 | 免费大片黄在线观看视频网站 | 69精品久久久久久久 | 老妇女性较大毛片 | 在线免费观看黄视频 | 国产三级a| 亚洲成人av一区二区 | 色视频网| 中文字幕2021 | 精品人妻在线一区二区三区 | 美女一级黄 | 动漫av网站 | 96福利视频| 国产精品1024 | 高h文在线 | 日本在线不卡一区 | 一本大道熟女人妻中文字幕在线 | 日韩欧美在线观看一区二区三区 | 麻豆导航 | 在线资源av | 日本h漫在线观看 | 欧美顶级黄色大片免费 | 久热精品视频在线播放 | 韩国三级hd中文字幕的背景音乐 | 欧美 日韩 国产 一区二区三区 | 奇米影音 | 国精产品一区一区三区有限公司杨 | 精品二区在线 | 国产av一区二区三区精品 | a v视频在线播放 | 香蕉伊人 | 电影桑叶2在线播放完整版 222aaa | 亚洲AV蜜桃永久无码精品性色 | 成人午夜影视在线观看 | 欧美日韩一区二区在线播放 | 日韩欧美成人网 | 一区二区三区黄色片 | av免费久久|