最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【圖像修復】基于crimins算法解決圖像修復問題matlab源碼

2021-09-14 12:06 作者:Matlab工程師  | 我要投稿

一、前言

圖像修復的目的是利用圖像中已知信息根據(jù)一定規(guī)則對丟失區(qū)域進行修復。近年,隨著計算機技術(shù)和多媒體技術(shù)的不斷發(fā)展,圖像修復技術(shù)不僅用于傳統(tǒng)的破損照片修復,而且也應用在攝影、醫(yī)學、印刷、網(wǎng)絡傳輸、考古和交通監(jiān)控等領(lǐng)域的圖像或視頻修復中,成為計算機圖形學和計算機視覺中的研究熱點。

在這里插入圖片描述


四個方法有各自的特點和應用背景,其中使用頻率較高的,易理解的方法為基于樣本塊中的基于匹配的方法。所以針對這個方向,提供了一些可供研究學習的文獻,并且簡要的介紹了文獻的內(nèi)容,方便同學學習。
Criminisi 等人[4]首先提出基于匹配的樣本塊修復算法,隨后又大量的研究者參與研究對其的改進算法。主要分為兩方面:
(1)針對塊選擇方法(即填充順序);
(2)塊填充方法(即如何選擇 匹配塊以及如何填充)。
在填充順序方面,文獻[5]利用局部特征確定順序,張巖等人[6]利用梯度特征確定填充順序。文獻[7,8]根據(jù)待填充塊的 DCT系數(shù)決定填充順序。
在塊填充方面(即如何選擇匹配塊以及如何填充),張巖等人[6]利用圖像方向經(jīng)驗模型分解后的頻域信息尋找最優(yōu)匹配塊。Jemi等人[7]利用邊緣信息尋找最優(yōu)匹配塊。
文獻[1,2,3]作為綜述文獻細讀,了解基礎知識,然后對文獻[4,5,6,7,8]粗略閱讀,了解什么是圖像修復算法,算法研究的方法以及仿真結(jié)果是如何呈現(xiàn)的。
下一步精讀文獻[4,5,8],理解算法具體的實現(xiàn)原理和實現(xiàn)過程,在閱讀過程中,如果對英文的理解感覺有難度,可以先閱讀中文文獻[5,6]中對文獻[4]的描述。
建議仿真的文獻為[4]和[5],[4]為經(jīng)典算法,[5]為[4]的改進算法。所以仿真順序為先仿真文獻[4]后文獻[5],建議可以思考的問題:
(1)文獻[4]算法的優(yōu)點和缺點,并且在仿真過程中對此做出測試實驗。
(2)文獻[5]是對文獻[4]的改進,理解它是怎么改進的,改進的效果體現(xiàn)在的地方,不僅限于修復效果的提升,還有更多,比如運行速度等。
(3)更多問題可以自己在仿真的過程中發(fā)現(xiàn)并且驗證,這些都會是收獲。,
這里提到的8篇文獻,僅僅是拋磚引玉,并不是最新而且也不全面,如果想要更進一步全面的學習圖像修復領(lǐng)域,建議閱讀更多最新文獻。

二、criminisi算法分析

Criminisi算法通過在待修復區(qū)域邊緣上選取優(yōu)先權(quán)最高的像素點p,然后以p為中心構(gòu)造一個n×n大小的像素塊,然后在完好區(qū)域?qū)ふ遗c該模板塊最相似的樣本塊,并用找到的樣本塊更新模板塊中的待修復信息,最后更新已修復塊塊中像素點的置信度,并開始下一次迭代修復,直至修復完成。 圖1是Criminisi算法的修復原理

在這里插入圖片描述


在這里插入圖片描述


在這里插入圖片描述


1、算法中的優(yōu)先權(quán)
Criminisi算法中計算優(yōu)先權(quán)的公式如(1)所示:

在這里插入圖片描述


在這里插入圖片描述

clear ;clc close all; %% 原始圖像 srcImage= imread('indoor2.jpg'); figure, imshow(uint8(srcImage)); ? ? ?%破損圖像 %% 破損圖像 damage_size_m=60; ? damage_size_n=30; ? ? ? ? ? ? %破損塊大小 damageImage= srcImage; damageImage(140:140+damage_size_m,70:70+damage_size_n)= 0; figure imshow(uint8(damageImage)); ? ? ?%破損圖像 %% 等照度 damageImage=double(damageImage); [Gx, Gy] = gradient(damageImage); ? ? ? ? ?%圖像梯度 Gx = Gx / 255; Gy = Gy / 255; temp = Gx; Gx = -Gy; Gy = temp; ? ? ? ?%梯度旋轉(zhuǎn)90°為等照度 %% 初始化 % ? C ? ? ? ? ? ? ?置信度項,為與圖像大小相同的矩陣 % ? D ? ? ? ? ? ? ?數(shù)據(jù)項,為與圖像大小相同的矩陣 fillRegion = damageImage == 0; ? ? %fillRegion為待修復點為1,已存在點為0 sourceRegion = ~fillRegion; ? ? ? ?%sourceRegion待修復點為0,已存在點為1 sz = size(damageImage); ind = reshape(1:sz(1)*sz(2),sz(1),sz(2)); ? ? ? %找出各點的在從列中得到的坐標 C = double(sourceRegion); ? ? ? ? ?%待修復點為0,已存在點為1; D = repmat(-.1,sz); con=0;%填充次數(shù)初始化 %% 開始填充 tic %開始計時 ? ? %% 找到最優(yōu)匹配快 Hq為一9*9矩陣,矩陣值為最優(yōu)匹配塊的坐標 ? ? ? ?%找到最優(yōu)匹配快,Hq為一9*9矩陣,矩陣值為最優(yōu)匹配塊的坐標 ? ?Hq = bestexemplar(damageImage, damageImage(rows,cols),fillRegion); ? ?%Hq = bestexemplar1(damageImage, damageImage(rows,cols), toFill', sourceRegion); ? ?% Update fill region 更新破損區(qū)域 ? ?fillRegion(Hp(toFill)) = false; ? ? ? ? ? ? ? ?%Hp(toFill)表示只留下待修復點的坐標,使得待修復點的值為0 ? ?% Propagate confidence ? ? C(Hp(toFill)) ?= C(p); ? ? ? ? ? ? ? ? ? ? ? ? %被去掉那塊的修復塊的置信度被更新,C代表sourceRegion,待修復點為0,已存在點為1;用優(yōu)先權(quán)最大的修復點的置信度來代替優(yōu)先權(quán)最大的塊的置信度 ? ? ? ? % ? ? ?Gx(Hp(toFill)) = Gx(Hq(toFill)); ? ? ? ? ? ? ? %用最優(yōu)匹配塊的向量梯度來更新優(yōu)先權(quán)最大的塊的梯度 % ? ? Gy(Hp(toFill)) = Gy(Hq(toFill)); ? ? ? ? ? ?% Copy image data from Hq to Hp ? ?ind(Hp(toFill)) = ind(Hq(toFill)); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %最優(yōu)匹配塊的坐標來作為待修復塊的坐標 ? ?damageImage(rows,cols) = ind2img(ind(rows,cols),damageImage); %ind(rows,cols)表示待修復塊的坐標范圍,該范圍已被最優(yōu)匹配塊的值所替代 ? ?con=con+1; ? ? ? %% 保存圖像 ?imwrite(uint8(damageImage),strcat('indoor2_',num2str(con),'.jpg')) ? end toc count=con %填充次數(shù) OKImg= damageImage; figure imshow(OKImg, []) imwrite(uint8(OKImg),'ok.jpg')

?


【圖像修復】基于crimins算法解決圖像修復問題matlab源碼的評論 (共 條)

分享到微博請遵守國家法律
柞水县| 墨玉县| 司法| 博野县| 临城县| 海兴县| 左贡县| 金堂县| 海城市| 台中县| 普宁市| 大理市| 武穴市| 顺平县| 大同县| 铜梁县| 吴忠市| 崇礼县| 望都县| 叶城县| 和政县| 中宁县| 沐川县| 镇康县| 甘孜县| 巨野县| 育儿| 望江县| 大田县| 依兰县| 大连市| 江孜县| 巩义市| 晋州市| 依安县| 衡水市| 运城市| 万全县| 文成县| 宁波市| 宿迁市|