Je viacero prípadov keď je vhodné do obrazu vkresľovať (inpainting). Môže sa jednať o odstraňovanie nežiadúcich objektov z obrazu či cielenú úpravu obsahu.  Vtedy hovoríme o retušovaní. Môže sa však jednať aj o opravu poškodených či doplnenie zničených či chýbajúcich častí obrazu, t.j. jedná sa o rekonštrukciu (restoration) obrazu. Doležité je, že zmena nastane vizuálne hodnoverným spôsobom. Pri vypĺňaní chýbajúcich častí sa z matematického hľadiska sa jedná o interpolačný problém.

V tejto časti si ukážeme si dve metódy vkresľovania:  vkresľovanie na základe príkladov (inpaint Exemplar) a koherentný prenos (inpaintCoherent). 

Príklady použitia oboch metód v prostredí MATLAB sú na Obr. 1 - Obr. 3, zdrojové kódy použité na ich vygenerovanie sú uvedené v prílohe. 


Obr. 1 Príklad vkresľovania pomocou exemplar based metódy. Vľavo poškodený obraz (sú prítomné biele plochy, ktoré je treba dokresliť), vpravo rekonštruovaný obraz.


Obr. 2 Príklad vkresľovania pomocou exemplar based metódy. Vľavo originálny obraz, v strede je biela oblasť namiesto objektu, ktorý chceme odstrániť, vpravo výsledný vyretušovaný obraz


Obr. 3 Príklad vkresľovania pomocou koherentného prenosu. Vľavo originálny obraz, v strede je biela oblasť namiesto objektu, ktorý chceme odstrániť, vpravo výsledný vyretušovaný obraz

Pri metóde koherentného prenosu [1] sa pracuje na úrovni bodov obrazu. Pri vkreslovaní do oblasti sa začína sa na hranici oblasti a pokračuje sa smerom do jej vnútra. Vkreslovaná hodnota bodu sa odhaduje z okolia daného bodu ako váhovaný priemer, pričom sa zvažuje buď smerový alebo difúzny prenos informácie z okolia. 

Pri metóde vkreslovania na základe príkladov [2] sa pacuje so záplatami (patches) čo sú malé obdĺžnikové oblasti. V rámci algoritmu sa postupne identifikujú najvhodnejšie miesta na vloženie záplaty, pričom stred záplaty leží na kraji cieľovej oblasti. Vhodná záplata sa hľadá v okolí cieľovej oblasti na základe podobnosti (metrika sum of square difference - SSD). Cieľová oblasť sa takto postupne zmenšuje. Princíp vkladania záplaty je naznačený na Obr. 4.


Obr. 4 Princíp vkladania záplaty na okraj cieľovej oblasti pri metóde vkreslovania na základe príkladov. Jednotlivé obrázky a, b, c, d označujú fázy algoritmu pri vkladaní. Fáza a označuje východiskový situáciu. Vo fáze b, je identifikované najvhodnejšie cieľové miesto \(p\) na vloženie záplaty \(\Psi_p\) (zelený štvorček). Následne vo fáze c sú nájdené vhodné zdroje pre záplatu. Najpravdepodobnejšie ležia niekde na hrane, ktorá vedie do oblasti \(\Psi_p\). Sú to napr. záplaty \(\Psi_{q'}\), alebo \(\Psi_{q''}\). Následne vo fáze d je vložená najvhodnejšia záplata na cieľové miesto.

Referencie

[1] F. Bornemann and T. März. "Fast Image Inpainting Based on Coherence Transport." Journal of Mathematical Imaging and Vision. Vol. 28, 2007, pp. 259–278.

[2] Criminisi, A., P. Perez, and K. Toyama. "Region Filling and Object Removal by Exemplar-Based Image Inpainting." IEEE Transactions on Image Processing. Vol. 13, No. 9, 2004, pp. 1200–1212.

Prílohy

Zdrojový kód programu, ktorý vytvoril Obr. 1
clear all; close all; clc;
I = imread('INPUT/forestdistorted.png');
mask = imread('INPUT/imagemask.png');

I(repmat(mask,[1,1,3])>0)=255;
J = inpaintExemplar(I,mask,'PatchSize',7);
montage({I,J});
title(['Original','   |   ','Inpainted'])
exportgraphics(gcf(),'inpaintExemplarExample.png')
Zdrojový kód programu, ktorý vytvoril Obr. 2
clear all; close all; clc;
I = imread('INPUT/liftingbody.png');
imshow(I,[]);
h = drawellipse('Center',[410 152],'SemiAxes',[90 26]);
mask = createMask(h);
IM=I;
IM(mask>0)=255;
J = inpaintExemplar(IM,mask);
montage({I,IM,J},"Size",[1,3]);
exportgraphics(gcf(),'inpaintExemplarExample2.png')
Zdrojový kód programu, ktorý vytvoril Obr. 3
clear all; close all; clc;
I = imread('cameraman.tif');
imshow(I,[]);
%h = drawellipse('Center',[233 160],'SemiAxes',[18 25]);
h = drawrectangle('Position',[190 102 16 52]);
mask = createMask(h);
IM=I;
IM(mask>0)=255;
J = inpaintCoherent(IM,mask,"Radius",1);
montage({I,IM,J},"Size",[1,3]);
exportgraphics(gcf(),['inpaintCoherentExample' ...
    '.png'])

PDF verzia tejto stránky je dostupná tu: inpainting_sk.pdf