Ho cominciato con questa immagine:
Sfruttando le capacità delle librerie SkinColorSegmentation di MATLAB primer, in particolare le funzioni di accesso alle liste esplicite di elementi tramite alcune scalar matrix operations ho iniziato ad ottenere risultati soddisfacenti che in poco tempo consentiranno di mostrare il volto dei personaggi che sono stati maldestramente mascherati applicando in sovrapposizione di layer il volto del noto idiota denominato strakkino.
Infatti il camuffamento dell'immagine è avvenuto tramite l'applicazione di un layer sull'immagine jpeg originale prodotta da una fotocamera digitale, nonostante le apparenze, il successivo salvataggio dell'immagine pubblicata partendo dal raster originale non ha sovrascritto la porzione di immagine del layer di base. La visione tradizionale dell'immagine risultante sembra non consentire più alcun recupero delle informazioni, tuttavia vi posso garantire che la fase di quantizzazione, la codifica entropica e l'eliminazione delle ridondanze non hanno prodotto i risultati che tutti possono credere, le informazioni originali ci sono ancora il problema da superare consiste nel determinare con discreta precisione il differential pulse-code modulation.
Per questo scopo è stato necessario scrivere un bel po' di codice, un esempio è la funzione skindetection() già usata in passato per operazioni analoghe su immagini fonte di prove in complessi procedimenti giudiziari, di seguito un piccolo esempio di implementazione:
function imskin=skindetection(imfile,rmin,rmax,gmin,gmax)
%load the image
im=imread(imfile);
%convert to double
imd=double(im);
%split the color planes
R=imd(:,:,1);
G=imd(:,:,2);
B=imd(:,:,3);
%take normalized color coordinates
I=R+G+B;
I(find(I==0))=inf;
r=R./I;
g=G./I;
b=B./I;
%find skin pixels
skinmask=((r>rmin) & (r
%apply the mask to the original image
imskin(:,:,1)=imd(:,:,1).*skinmask;
imskin(:,:,2)=imd(:,:,2).*skinmask;
imskin(:,:,3)=imd(:,:,3).*skinmask;
imskin=uint8(imskin);
%show everithing
figure;
subplot(3,1,1);imshow(im);Title('Original Image');
subplot(3,1,2);imshow(skinmask);Title('Mask Image');
subplot(3,1,3);imshow(imskin);Title('Filtered Image');
Dopo due ore di elaborazione ho ottenuto questo risultato
Sembra irrilevante ma vi posso assicurare che è solo un piccolo passo, ancora qualche giornata ed il risultato sarà garantito.
Working in progress...