介紹
本代碼是對(duì)Region filling and object removal by exemplar-based image inpainting
的MATLAB
實(shí)現(xiàn),用來(lái)對(duì)圖像進(jìn)行區(qū)域填充凭峡、物體移除拙已。
??????代碼托管在github
上:exemplar-based-image-inpainting
算法
如圖1所示,為算法偽代碼摧冀。
區(qū)域劃分
實(shí)現(xiàn)這個(gè)算法倍踪,首先需要進(jìn)行圖像區(qū)域的劃分。如圖2所示按价,為目標(biāo)區(qū)域惭适,是需要進(jìn)行填充的區(qū)域,為源區(qū)域楼镐,作為填充數(shù)據(jù)的來(lái)源。的邊界為往枷。如果從像素值來(lái)看的話框产,可以將目標(biāo)區(qū)域的像素值設(shè)置為0
,但是0
在圖像中為黑色的意思错洁,所以最好可以有一個(gè)輔助數(shù)組來(lái)標(biāo)志缺失區(qū)域秉宿。
計(jì)算邊界區(qū)域
使用下面的代碼可以方便地計(jì)算出邊界點(diǎn)的位置。map
是一個(gè)二值數(shù)組屯碴,只有0描睦、1,其中1表示缺失像素值所在位置导而。計(jì)算出來(lái)的結(jié)果result
中忱叭,1所在的位置就是邊界點(diǎn)所在的位置。
result = imdilate(map, se) - map;
優(yōu)先級(jí)的計(jì)算公式
邊界上有很多像素點(diǎn)今艺,以這些點(diǎn)為中心可以得到很多patch(比如9×9的patch)韵丑,對(duì)于這些patch,都需要計(jì)算一下他們的優(yōu)先級(jí)是多少虚缎,以便從中選出一個(gè)優(yōu)先級(jí)最大的塊作為首要修復(fù)的對(duì)象撵彻。
對(duì)于一個(gè)patch,塊的優(yōu)先級(jí)計(jì)算公式:
其中,代表這個(gè)待修復(fù)塊的中心點(diǎn)陌僵,表示塊的置信度轴合,為data term。置信度的計(jì)算公式是:
其中碗短,表示置信度受葛,其中為整張圖像,為的缺失區(qū)域豪椿,為待填充的塊奔坟,為塊的面積。為塊中的像素點(diǎn)的置信度搭盾,在初始化的時(shí)候咳秉,已存在的像素點(diǎn)的置信度為1
,缺失的像素點(diǎn)的置信度為0
鸯隅,在修復(fù)過(guò)程中澜建,修復(fù)出來(lái)的像素點(diǎn)的置信度被更新為塊的置信度,由此可知蝌以,隨著修復(fù)過(guò)程的推進(jìn)炕舵,修復(fù)出來(lái)的像素點(diǎn)的置信度會(huì)越來(lái)越小。data term的計(jì)算公式為:
公式3跟畅,這里是等照度向量與法向量的點(diǎn)乘再求模長(zhǎng)咽筋,為歸一化因子。
在計(jì)算等照度向量的時(shí)候需要先計(jì)算點(diǎn)的image gradient
徊件,等照度線向量為gradient
逆時(shí)針旋轉(zhuǎn)90°奸攻,gradient
代表了像素值變化最快的方向,而等照度線向量與gradient
垂直虱痕,代表了變化最慢的方向睹耐。image gradient
暴力搜索
計(jì)算出每一個(gè)patch的優(yōu)先級(jí)之后,從中選出一個(gè)優(yōu)先級(jí)最高的patch作為待修復(fù)對(duì)象部翘,如硝训。再使用暴力法,從源區(qū)域中選出一個(gè)與之最相近的塊新思,將中對(duì)應(yīng)的像素拷到中(這里只需要修復(fù)中缺失的像素點(diǎn))窖梁。使用暴力法的時(shí)候,衡量?jī)蓚€(gè)塊之間的距離時(shí)表牢,使用SSD
(差的平方和)作為距離窄绒,由于本身就缺失了部分像素值,所以計(jì)算的就是非缺失像素和其他patch對(duì)應(yīng)位置像素值的SSD
崔兴。
注意彰导,在修復(fù)過(guò)程的迭代中蛔翅,缺失區(qū)域逐漸變小,但是提供像素來(lái)源的目標(biāo)區(qū)域固定不變位谋。因?yàn)槟繕?biāo)區(qū)域中山析,修復(fù)出來(lái)的像素值可信度比較低,不予以采用掏父。
效果
參考文獻(xiàn)
Criminisi A, Pérez P, Toyama K. Region filling and object removal by exemplar-based image inpainting[J]. IEEE Transactions on image processing, 2004, 13(9): 1200-1212.
Criminisi A, Perez P, Toyama K. Object removal by exemplar-based inpainting[C]//Computer Vision and Pattern Recognition, 2003. Proceedings. 2003 IEEE Computer Society Conference on. IEEE, 2003, 2: II-II.
https://github.com/IouJenLiu/Region-Filling-and-Object-Removal