Mascare neclară - Unsharp masking

Image
Mascare neclară aplicată în partea inferioară a imaginii

Unsharp masking ( USM ) este o tehnică de ascuțire a imaginii , adesea disponibilă în software-ul de procesare digitală a imaginilor . Numele său derivă din faptul că tehnica folosește o imagine negativă neclară sau „neuniformă” pentru a crea o mască a imaginii originale. Masca unsharp este apoi combinată cu imaginea pozitivă originală, creând o imagine mai puțin neclară decât originalul. Imaginea rezultată, deși mai clară, poate fi o reprezentare mai puțin exactă a subiectului imaginii. În contextul procesării semnalului , o mască nesărită este în general un filtru liniar sau neliniar care amplifică componentele de înaltă frecvență ale unui semnal.

Mascare fotografică a camerei întunecate neclare

Image
Principiul simplificat al mascării neascuțite

Pentru procesul camerei întunecate fotografice, un negativ de placă de sticlă de format mare este copiat în contact pe un film sau placă cu contrast redus pentru a crea o imagine pozitivă. Cu toate acestea, copia pozitivă este făcută cu materialul de copiere în contact cu partea din spate a originalului, mai degrabă decât emulsie-la-emulsie , deci este neclară. După procesare, acest pozitiv neclar este înlocuit în contact cu partea din spate a negativului original. Când lumina este trecută atât negativ cât și pozitiv în registru ( de exemplu, la un măritor ), pozitivul anulează parțial unele informații din negativ.

Deoarece pozitivul a fost estompat în mod intenționat, doar informațiile cu frecvență joasă (estompate) sunt anulate. În plus, masca reduce efectiv intervalul dinamic al negativului original. Astfel, dacă imaginea mărită rezultată este înregistrată pe hârtie fotografică contrastată , anularea parțială subliniază informațiile cu frecvență spațială ridicată (detalii fine) în original, fără pierderea detaliilor de evidențiere sau umbră. Imprimarea rezultată pare mai acută decât una realizată fără masca de netezire: acutitatea sa este crescută.

În procedura fotografică, cantitatea de estompare poate fi controlată prin schimbarea „moliciunii” sau „durității” (de la sursa punctuală la cea complet difuză) a sursei de lumină folosită pentru expunerea inițială a măștii nesărite, în timp ce puterea efectului poate fi controlat prin schimbarea contrastului și densității (adică, expunere și dezvoltare) a măștii neacordante.

Pentru fotografia tradițională, mascarea nesfârșită este de obicei utilizată pe materiale monocrome ; au fost disponibile filme alb-negru panchromatice speciale , care lucrează moale, pentru a masca folii transparente color. Acest lucru a fost util în special pentru a controla intervalul de densitate al unei transparențe destinate reproducerii fotomecanice .

Mascare digitală ascuțită

Image
Imagine sursă (sus),
imagine ascuțită (mijloc),
imagine foarte ascuțită (jos)

Același principiu de diferențiere este utilizat în instrumentul de mascare neînțeleasă în multe pachete software de imagine digitală, cum ar fi Adobe Photoshop și GIMP . Software-ul aplică o neclaritate gaussiană la o copie a imaginii originale și apoi o compară cu originalul. Dacă diferența este mai mare decât o setare de prag specificată de utilizator, imaginile sunt (efectiv) scăzute.

Mascarea digitală neclară este un mod flexibil și puternic de a crește claritatea, în special în imaginile scanate . Din păcate, poate crea efecte vizibile nedorite sau poate crește zgomotul imaginii . Cu toate acestea, aceste efecte pot fi utilizate creativ, mai ales dacă un singur canal al unei imagini RGB sau Lab este ascuțit. Efectele nedorite pot fi reduse folosind o mască - în special una creată prin detectarea muchiilor - pentru a aplica claritatea doar regiunilor dorite, uneori numite „ascuțire inteligentă”.

De obicei, mascarea digitală neclară este controlată prin cantitate, rază și prag:

  • Suma este listată ca procent și controlează magnitudinea fiecărei depășiri (cât de întunecate și cât mai deschise devin marginile marginii). Acest lucru poate fi, de asemenea, gândit la cât de mult contrast se adaugă la margini. Nu afectează lățimea jantelor.
  • Raza afectează dimensiunea marginilor care urmează să fie îmbunătățite sau cât de largi devin jantele, astfel încât o rază mai mică îmbunătățește detaliile la scară mai mică. Valorile mai mari ale razei pot provoca halouri la margini, o jantă ușoară ușor detectabilă în jurul obiectelor. Detaliile fine necesită o rază mai mică. Raza și cantitatea interacționează; reducerea uneia permite mai mult de cealaltă.
  • Pragul controlează modificarea minimă a luminozității care va fi ascuțită sau cât de departe trebuie să fie valorile tonale adiacente înainte ca filtrul să facă ceva. Această lipsă de acțiune este importantă pentru a preveni pătrunderea zonelor netede. Setarea pragului poate fi utilizată pentru a ascuți marginile mai pronunțate, lăsând în același timp margini mai subtile neatinse. Valorile scăzute ar trebui să se accentueze mai mult, deoarece sunt excluse mai puține zone. Valorile pragului mai mari exclud zonele cu contrast mai mic.

Există diverse recomandări pentru valorile inițiale ale acestor parametri, iar semnificația poate diferi între implementări. În general, se recomandă o rază de 0,5 până la 2 pixeli și o cantitate de 50-150%.

De asemenea, este posibil să implementați USM manual, prin crearea unui strat separat care să acționeze ca mască; aceasta poate fi utilizată pentru a înțelege modul în care funcționează USM sau pentru personalizarea fină.

Formula tipică de amestecare pentru mascare nepieritoare este

ascuțit = original + (original - neclar) × suma.

Îmbunătățirea contrastului local

Mascare neclară poate fi de asemenea utilizată cu o rază mare și o cantitate mică (cum ar fi raza de 30–100 pixeli și cantitatea de 5–20%), ceea ce produce un contrast local crescut, o tehnică numită îmbunătățirea contrastului local . USM poate crește claritatea sau contrastul (local) deoarece acestea sunt ambele forme de diferențe crescânde între valori, creștere a pantei - claritate referitoare la diferențe la scară foarte mică (frecvență înaltă) și contrast referitoare la scară mai mare (frecvență joasă) diferențe. Tehnici mai puternice pentru îmbunătățirea tonalității sunt denumite mapare a tonurilor .

Comparație cu deconvoluție

Pentru procesarea imaginii, deconvoluția este procesul de inversare aproximativ a procesului care a cauzat estomparea unei imagini. În mod specific, mascarea nesfârșită este o operație simplă de imagine liniară - o convoluție de către un nucleu care este delta Dirac minus un nucleu de estompare gaussiană. Deconvoluția, pe de altă parte, este în general considerată o problemă inversă prost pusă, care este cel mai bine rezolvată prin abordări neliniare. În timp ce mascarea nesfârșită crește claritatea aparentă a unei imagini, ignorând modul în care a fost achiziționată imaginea, deconvoluția crește claritatea aparentă a unei imagini, dar se bazează pe informații care descriu unele dintre originile probabile ale distorsiunilor căii de lumină utilizate în captarea imaginii; poate fi, prin urmare, uneori preferat, în care costul timpului de pregătire și timpul de calcul pe imagine sunt compensate de creșterea clarității imaginii.

Cu deconvoluția, detaliile imaginii „pierdute” pot fi recuperate aproximativ, deși în general este imposibil să se verifice dacă detaliile recuperate sunt corecte. Statistic, poate fi atins un anumit nivel de corespondență între imaginile ascuțite și scenele reale imaginate. Dacă scenele care urmează să fie capturate în viitor sunt suficient de similare cu scenele de imagine validate, atunci se poate evalua gradul în care detaliile recuperate pot fi exacte. Îmbunătățirea calității imaginii este adesea atractivă, deoarece aceleași probleme de validare sunt prezente chiar și pentru imaginile ne-îmbunătățite.

Pentru ca deconvoluția să fie eficientă, trebuie să fie modelate toate variabilele din scena imaginii și dispozitivul de captare, inclusiv diafragma , distanța focală , distanța până la subiect, obiectivul și indicii și geometriile de refracție ale mediului. Aplicarea cu deconvoluție cu succes a imaginilor camerei de uz general nu este de obicei fezabilă, deoarece geometriile scenei nu sunt setate. Cu toate acestea, deconvoluția se aplică în realitate microscopiei și imaginii astronomice, unde valoarea clarității câștigate este mare, dispozitivele de imagistică și pozițiile relative ale subiectului sunt ambele bine definite, iar optimizarea dispozitivelor de imagine pentru a îmbunătăți claritatea fizică ar costa mult mai mult. În cazurile în care este prezentă o aberație stabilă, bine definită, cum ar fi defectul obiectivului în imaginile telescopului spațial Hubble timpuriu , deconvoluția este o tehnică deosebit de eficientă.

Implementare

În exemplul de mai jos, imaginea este implicată cu următorul filtru de ascuțire:

Ascuți filtrul

Această matrice este obținută luând nucleul de identitate și scăzând un nucleu de detectare a muchiilor:

- =

Efectul de ascuțire poate fi controlat prin variația contribuției la detectarea muchiilor .

A doua imagine a fost clarificată de două ori mai mult decât prima.

Aceasta este o posibilă implementare a acestui kernel în Procesare (Java).

float sharpenForce = 1;
float[][] kernel =  {{ 0, -1*sharpenForce, 0}, 
                     { -1*sharpenForce, (4*sharpenForce) +1,-1 *sharpenForce}, 
                     { 0, -1*sharpenForce, 0}};
   
PImage image;

void setup() {
    size(1920, 1080);
    image = loadImage("Car.jpg");
    noLoop();
}

void draw() {
    image(image, 0, 0); 
    image.loadPixels();
    PImage NewImage = createImage(image.width, image.height, RGB);
  
    for (int Y = 1; Y < image.height-1; Y++ ) {
        for (int X = 1; X < image.width-1; X++) {
            int newPixelValueR = 0;
            int newPixelValueG = 0;
            int newPixelValueB = 0;
             
            for (int YK = -1; YK < 2; YK++) {   
                for (int XK = -1; XK < 2; XK++) {
                    int PixelPosition = (Y+YK) * image.width + (X+XK);
                    float PixelValueR = red(image.pixels[PixelPosition]);
                    float PixelValueG = green(image.pixels[PixelPosition]);
                    float PixelValueB = blue(image.pixels[PixelPosition]);
                    newPixelValueR += kernel[YK+1][XK+1] * PixelValueR;
                    newPixelValueG += kernel[YK+1][XK+1] * PixelValueG;
                    newPixelValueB += kernel[YK+1][XK+1] * PixelValueB;
                }
            }
                
            NewImage.pixels[Y*image.width + X] = color(newPixelValueR, newPixelValueG, newPixelValueB);
        }
    }
    
    NewImage.updatePixels();
    image(NewImage, width/2, 0);
}

Vezi si

Referințe

linkuri externe