24.4 Exemplu de PSF largă: Aplatizarea iluminării

O aplicație comună care necesită o PSF mare este îmbunătățirea imaginilor cu iluminare inegală. Convoluția prin separabilitate este un algoritm ideal pentru realizarea acestei procesări. Cu doar câteva excepții, imaginile văzute de ochi sunt formate din lumina reflectată. Aceasta înseamnă că o imagine văzută este egală cu reflectanța obiectelor înmulțită cu iluminarea ambientală. Figura 24-8 arată cum funcționează acest lucru. Figura (a) reprezintă reflectanța scenei văzute, în acest caz, o serie de benzi luminoase și întunecate. Figura (b) ilustrează un exemplu de semnal de iluminare, modelul de lumină care cade pe (a). Ca și în lumea reală, iluminarea variază lent în zona imagistică. Figura (c) este imaginea văzută de ochi, egală cu imaginea reflectanței, (a), înmulțită cu imaginea de iluminare, (b). Regiunile de iluminare slabă sunt greu de văzut în (c) din două motive: ele sunt prea întunecate și contrastul lor este prea mic (diferența dintre vârfuri și văi).

Pentru a înțelege modul în care se referă la problema vederii zilnice, imaginați-vă că vă uitați la doi bărbați îmbrăcați identic. Unul dintre ei stă în lumina puternică a soarelui, în timp ce celălalt stă la umbra unui copac din apropiere. Procentul luminii incidente reflectate de ambii bărbați este același. De exemplu, fețele lor ar putea reflecta 80% din lumina incidentă, cămășile lor gri 40% și pantalonii lor întunecați 5%. Problema este că iluminarea celor două ar putea fi, de exemplu, de zece ori diferită. Acest lucru face imaginea bărbatului la umbră de zece ori mai întunecată decât cea din lumina soarelui, iar contrastul (între față, cămașă și pantaloni) este de zece ori mai mic.

Scopul procesării imaginilor este de a aplatiza componenta de iluminare în imaginea achiziționată. Cu alte cuvinte, dorim ca imaginea finală să fie reprezentativă pentru reflectanța obiectelor, nu pentru condițiile de iluminare. În figurile 24-8, se dă (c), se găsește (a). Aceasta este o problemă de filtrare neliniară, deoarece imaginile componente au fost combinate prin înmulțire, nu adăugare. Deși această separare nu poate fi realizată perfect, îmbunătățirea poate fi dramatică.

Figura 24-8a Modelul formării unei imagini.

O imagine văzută, (c), rezultă din multiplicarea unui model de iluminare, (b), cu un model de reflexie, (a). Scopul procesării imaginii este de a modifica (c) pentru a o face să arate mai mult ca (a). Aceasta este realizată în fig. (d), (e) și (f) din fig. 24-8b.

Pentru a începe, vom face convoluția imaginii (c) cu o PSF largă, o cincime din dimensiunea întregii imagini. Scopul este acela de a elimina caracteristicile clare din (c), care rezultă în aproximarea semnalului original de iluminare, (b). Aici se utilizează convoluția prin separabilitate. Forma exactă a PSF nu este importantă, ci doar că este mult mai lată decât caracteristicile din imaginea de reflectanță. Figura (d) este rezultatul, folosind un kernel de filtru Gaussian.

Deoarece un filtru de netezire oferă o estimare a imaginii de iluminare, vom folosi un filtru de îmbunătățire a muchiilor pentru a găsi imaginea de reflectanță. Adică imaginea (c) va fi în convoluție cu un kernel filtru format dintr-o funcție delta minus un Gaussian. Pentru a reduce timpul de execuție, acest lucru se face scăzând imaginea netezită în (d) din imaginea originală din (c). Figura (e) prezintă rezultatul. Nu funcționează! În timp ce zonele întunecate au fost bine luminate, contrastul în aceste zone este încă teribil.

Filtrarea liniară are o performanță slabă în această aplicație deoarece semnalele de reflectanță și iluminare au fost combinate original prin înmulțire, nu prin adunare. Filtrarea liniară nu poate separa corect semnalele combinate printr-o operație neliniară. Pentru a separa aceste semnale, acestea trebuie să fie nemultiplicate. Cu alte cuvinte, imaginea originală trebuie împărțită prin imaginea netezită, așa cum se arată în (f). Aceasta corectează luminozitatea și restabilește contrastul la nivelul corespunzător.

Această procedură de împărțire a imaginilor este strâns legată de prelucrarea omomorfă descrisă anterior în capitolul 22. Prelucrarea omomorfă este o metodă de manipulare a semnalelor combinate printr-o operație neliniară. Strategia este de a schimba problema neliniară într-una liniară, printr-o operație matematică adecvată. Când se combină două semnale prin multiplicare, procesarea omomorfă începe prin luarea logaritmului semnalului achiziționat. Cu identitatea: log(a×b) = log(a) + log(b), problema separării semnalelor înmulțite este convertită în problema separării semnalelor adunate. De exemplu, după luarea logaritmului imaginii în (c), se poate utiliza un filtru liniar trece-sus pentru a izola logaritmul imaginii de reflectanță. Ca și până acum, cea mai rapidă modalitate de a efectua filtrul trece-sus este să scadă o versiune netedă a imaginii. Antilogaritmul (exponențiala) este apoi utilizat pentru a anula logaritmul, rezultând aproximarea dorită a imaginii de reflectanță.

Figura 24-8b

Figura (d) este o versiune netezită a lui (c), utilizată ca o aproximație la semnalul de iluminat. Figura (e) arată o aproximare la imaginea de reflexie, creată prin scăderea imaginii netezite din imaginea văzută. O bună aproximație este arătată în (f), obținută prin procesul neliniar de împărțire a două imagini.

Cum este mai bine, împărțind sau mergând pe calea omomorfă? Ele sunt aproape la fel, deoarece luarea logaritmului și scăderea este egală cu împărțirea. Singura diferență este aproximarea utilizată pentru imaginea de iluminare. O metodă utilizează o versiune netedă a imaginii achiziționate, în timp ce cealaltă folosește o versiune netedă a logaritmului imaginii achiziționate.

Această tehnică de aplatizare a semnalului de iluminare este atât de utilă încât a fost încorporată în structura neurală a ochiului. Prelucrarea în stratul mijlociu al retinei a fost descrisă anterior ca o îmbunătățire a muchiilor sau un filtru trece-sus. În timp ce acest lucru este adevărat, nu spune toată povestea. Primul strat al ochiului este neliniar, luând aproximativ logaritmul imaginii primite. Acest lucru face ca ochiul să fie un procesor omomorf. Așa cum am descris mai sus, logaritmul, urmat de un filtru liniar de îmbunătățire a muchiei, aplatizează componenta de iluminare, permițând ochiului să vadă în condiții de iluminare slabe. O altă utilizare interesantă a procesării omomorfice apare în fotografie. Densitatea (întunericul) unui negativ este egală cu logaritmul luminozității din fotografia finală. Aceasta înseamnă că orice manipulare a negativului în timpul etapei de developare este un tip de procesare omomorfă.

Înainte de a părăsi acest exemplu, există o neplăcere care trebuie menționată.

Așa cum am discutat în capitolul 6, atunci când un semnal de N puncte este în convoluție cu un kernel filtru de M puncte, semnalul rezultat este N+M-1 puncte lungime. De asemenea, atunci când o imagine M×M este în convoluție cu un nucleu de filtru NxN, rezultatul este o imagine (M+N-1) x (M+N-1). Problema este că adesea este dificil să gestionăm o dimensiune a imaginii în schimbare. De exemplu, memoria alocată trebuie să se schimbe, afișajul video trebuie ajustat, indexarea matricei ar putea avea nevoie de schimbări etc. Modul obișnuit în jurul acestui lucru este ignorarea lui; dacă începem cu o imagine de 512×512, vrem să terminăm cu o imagine de 512×512. Pixelii care nu se încadrează în limitele originale sunt aruncați.

În timp ce aceasta menține dimensiunea imaginii la fel, nu rezolvă întreaga problemă; aceasta este încă condiția limită pentru convoluție. De exemplu, imaginați-vă că încercați să calculați pixelul din colțul din dreapta sus al lui (d). Aceasta se face prin centrarea PSF Gaussian în colțul din dreapta sus din (c). Fiecare pixel din (c) este apoi înmulțit cu pixelul corespunzător din PSF suprapusă, iar produsele sunt adunate. Problema este că trei sferturi din PSF se află în afara imaginii definite. Cea mai ușoară abordare este să atribuiți pixelilor nedefiniți o valoare de zero. Acesta este modul în care (d) a fost creat, reprezentând banda intunecată în jurul perimetrului imaginii. Adică, luminozitatea scade ușor până la valoarea pixelului de zero, exterior imaginii definite.

Din fericire, această regiune întunecată în jurul graniței poate fi corectată (deși nu a fost în acest exemplu). Aceasta se face prin împărțirea fiecărui pixel în (d) cu un factor de corecție. Factorul de corecție este fracțiunea de PSF care a fost imersată în imaginea de intrare atunci când a fost calculat pixelul. Adică, pentru a corecta un pixel individual în (d), imaginați-vă că PSF este centrată pe pixelul corespunzător din (c). De exemplu, pixelul de sus-dreapta din (c) rezultă din faptul că numai 25% din PSF se suprapun imaginii de intrare. Prin urmare, corectați acest pixel în (d) împărțind-l cu un factor de 0,25. Aceasta înseamnă că pixelii din centrul (d) nu vor fi modificați, dar pixelii întunecați din jurul perimetrului vor fi luminați. Pentru a găsi factorii de corecție, imaginați convoluția kernelului de filtrare cu o imagine având toate valorile pixelilor egale cu unu. Pixelii din imaginea rezultată sunt factorii de corecție necesari pentru a elimina efectul de muchie.

Secțiunea următoare: Analiza Fourier a imaginii