25.4 Prelucrarea imaginilor morfologice

Identificarea obiectelor dintr-o imagine poate fi o sarcină foarte dificilă. O modalitate de a simplifica problema este de a schimba imaginea cu tonuri de gri într-o imagine binară, în care fiecare pixel este restrâns la o valoare de 0 sau 1. Tehnicile folosite pe aceste imagini binare sunt denumite: analiza blob, analiza conectivității, și prelucrarea imaginii morfologice (din cuvântul grecesc morphē, adică înfățișare sau formă). Fundamentul prelucrării morfologice se află în domeniul riguros matematic al teoriei seturilor; totuși, acest nivel de sofisticare este rareori necesar. Majoritatea algoritmilor morfologici sunt operațiuni logice simple și foarte ad-hoc. În alte cuvinte, fiecare aplicație necesită o soluție personalizată dezvoltată prin încercări și erori. Aceasta este, de obicei, mai mult o artă decât știință. O pungă de trucuri este folosită mai degrabă decât algoritmi standard și proprietăți matematice formale. Aici sunt cateva exemple.

Figura 25-10 Operații morfologice.

În procesarea imaginilor binare sunt utilizate patru operații morfologice de bază: erodarea, dilatarea, deschiderea și închiderea. Figura (a) arată un exemplu de imagine binară. Figurile (b) la (e) arată rezultatul aplicării acestor operații imaginii din (a).

Figura 25-10a prezintă un exemplu de imagine binară. Aceasta ar putea reprezenta un tanc inamic într-o imagine în infraroșu, un asteroid într-o fotografie spațială sau o tumoare suspectată pe o radiografie medicală. Fiecare pixel din fundal este afișat ca alb, în ​​timp ce fiecare pixel din obiect este afișat ca negru. Frecvent, imaginile binare sunt formate prin pragul unei imagini în tonuri de gri; pixelii cu o valoare mai mare decât un prag sunt setați la 1, în timp ce pixelii cu o valoare sub prag sunt setați la 0. Este comun ca imaginea în nuanțe de gri să fie procesată cu tehnici liniare înainte de aplicarea pragului. De exemplu, aplatizarea iluminării (descrisă în Capitolul 24) poate îmbunătăți adesea calitatea imaginii binare inițiale.

Figurile (b) și (c) arată modul în care imaginea este schimbată prin două operații morfologice cele mai comune, eroziunea și dilatarea. În eroziune, fiecare pixel de obiect care atinge un pixel de fundal este transformat într-un pixel de fundal. În dilatare, fiecare pixel de fundal care atinge un pixel obiect este transformat într-un pixel obiect. Eroziunea face obiectele mai mici și pot rupe un singur obiect în mai multe obiecte. Dilatarea face ca obiectele să fie mai mari și pot îmbina mai multe obiecte într-unul.

După cum se arată în (d), deschiderea este definită ca o eroziune urmată de o dilatare. Figura (e) prezintă operația opusă de închidere, definită ca o dilatare urmată de o eroziune. După cum ilustrează aceste exemple, deschiderea elimină insulele mici și filamentele subțiri ale pixelilor obiectului. De asemenea, închiderea elimină insulele și filamentele subțiri ale pixelilor de fundal. Aceste tehnici sunt utile pentru manipularea imaginilor zgomotoase în care unii pixeli au o valoare binară greșită. De exemplu, s-ar putea să se știe că un obiect nu poate conține o "gaură" sau că granița obiectului trebuie să fie netedă.

Figura 25-11 prezintă un exemplu de procesare morfologică. Figura (a) este imaginea binară a unei amprente digitale. Au fost elaborați algoritmi pentru a analiza aceste modele, permițând identificarea amprentelor individuale cu cele dintr-o bază de date. Un pas comun în acești algoritmi este prezentat în (b), o operație numită scheletizare. Acest lucru simplifică imaginea prin eliminarea pixelilor redundanți; adică schimbarea pixelilor corespunzători de la negru la alb. Acest lucru are ca rezultat fiecare creastă fiind transformată într-o linie de numai un singur pixel lățime.

Tabelele 25-1 și 25-2 prezintă programul de scheletare. Chiar dacă imaginea amprentei este binară, ea este ținută într-un șir unde fiecare pixel poate rula între 0 și 255. Un pixel negru este notat cu 0, în timp ce un pixel alb este notat cu 255. După cum se arată în Tabelul 25-1, algoritmul este compus din 6 iterații care erodează progresiv crestele într-o linie subțire. Numărul de iterații este ales prin încercare și eroare. O alternativă ar fi oprirea atunci când o iterație nu mai face schimbări.

În timpul unei iterații, fiecare pixel din imagine este evaluat ca fiind eliminabil; pixelul îndeplinește un set de criterii pentru a fi schimbat de la negru la alb. Liniile 200-240 se rotesc prin fiecare pixel din imagine, în timp ce subrutina din Tabelul 25-2 face evaluarea. Dacă pixelul considerat nu este eliminabil, subrutina nu face nimic. Dacă pixelul este eliminabil, subrutina își modifică valoarea de la 0 la 1. Aceasta indică faptul că pixelul este încă negru, dar va fi schimbat în alb la sfârșitul iterației. După ce toți pixelii au fost evaluați, liniile 260-300 modifică valoarea pixelilor marcați de la 1 la 255. Acest proces în două etape duce la erodarea în mod egal a crestelor groase din toate direcțiile, mai degrabă decât la un model bazat pe modul în care rândurile iar coloanele sunt scanate.

Figura 25-11 Scheletizare binară.

Imaginea binară a unei amprente de deget, (a), conține creste late de mai mulți pixeli. Versiunea scheletizată, (b), conține creste de lățimea unui singur pixel.

Decizia de a elimina un pixel se bazează pe patru reguli, așa cum sunt cuprinse în subrutina prezentată în Tabelul 25-2. Toate aceste reguli trebuie îndeplinite pentru ca un pixel să fie schimbat de la negru la alb. Primele trei reguli sunt destul de simple, în timp ce a patra este destul de complicată. Așa cum se arată în Fig. 25-12a, un pixel la locația [R, C] are opt vecini. Cei patru vecini în direcțiile orizontale și verticale (numiți 2,4,6,8) sunt deseori numiți vecini apropiați. Pixelii diagonali (numiți 1,3,5,7) sunt denumiți corespunzător vecini la distanță. Cele patru reguli sunt următoarele:

Prima regulă: Pixelul examinat trebuie să fie negru. Dacă pixelul este deja alb, nu este necesară nicio acțiune.

Regula doi: Cel puțin unul din vecinii apropiați pixelului trebuie să fie alb. Acest lucru asigură că eroziunea crestelor groase are loc din exterior. Cu alte cuvinte, dacă un pixel este negru și este complet înconjurat de pixeli negri, acesta trebuie lăsat singur în această iterație. De ce să folosiți numai vecinii apropiați, mai degrabă decât toți vecinii? Răspunsul este simplu: rularea algoritmului în ambele moduri arată că el lucrează mai bine. Amintiți-vă, acest lucru este foarte frecvent în prelucrarea imaginilor morfologice; încercarea și eroarea sunt folosite pentru a găsi dacă o tehnică are performanțe mai bune decât alta.

Regula trei: Pixelul trebuie să aibă mai mult de un vecin negru. Dacă are numai unul, trebuie să fie sfârșitul unei linii și, prin urmare, nu trebuie să fie eliminat.

Figura 25-12 Pixelii învecinați.

Un pixel la intersecția unei linii cu o coloană [R,C] are opt vecini, raportați prin numere în (a). Figurile (b) și (c) arată exemple unde pixelii învecinați sunt conectați sau neconectați, respectiv. Această definiție este utilizată de regula numărul patru a algoritmului de scheletizare.

Regula patru: Un pixel nu poate fi eliminat dacă rezultă că vecinii săi sunt deconectați. Astfel, fiecare creastă este transformată într-o linie continuă, nu un grup de segmente întrerupte. Așa cum se arată prin exemplele din Fig. 25-12, conectat înseamnă că toți vecinii negri se ating unul de celălalt. De asemenea, fără legătură înseamnă că vecinii negri formează două sau mai multe grupuri.

Algoritmul pentru a determina dacă vecinii sunt conectați sau neconectați se bazează pe numărarea tranzițiilor negru-alb între pixelii adiacenți vecini, în sensul acelor de ceasornic. De exemplu, dacă pixelul 1 este negru și pixelul 2 este alb, este considerată o tranziție negru-alb. De asemenea, dacă pixelul 2 este negru și ambii pixeli 3 și 4 sunt albi, aceasta este de asemenea o tranziție negru-alb. În total, există opt locații în care poate apărea o tranziție negru-alb. Pentru a ilustra mai departe această definiție, exemplele de la literele (b) și (c) au un asterisc plasat pe fiecare tranziție de la negru la alb. Cheia pentru acest algoritm este că va exista exact o tranziție negru-la-alb dacă vecinii sunt conectați. Mai mult de o astfel de tranziție indică faptul că vecinii sunt neconectați.

Ca exemple suplimentare de procesare a imaginilor binare, considerați tipurile de algoritmi care ar putea fi utile după ce amprenta este scheletată. Un dezavantaj al acestui algoritm specific de scheletare este acela că lasă o cantitate considerabilă de scame, scurte șuvițe care se scot din părțile laterale ale segmentelor mai lungi. Există mai multe abordări diferite pentru a elimina aceste artefacte. De exemplu, un program ar putea trece prin imagine eliminând pixelul la sfârșitul fiecărei linii. Acești pixeli sunt identificați prin a avea un singur vecin negru. Faceți acest lucru de mai multe ori și scama este eliminată în detrimentul realizării fiecăreia dintre liniile corecte mai scurte. O metodă mai bună ar trece prin imagine identificând pixeli de ramură (pixeli care au mai mult de doi vecini). Începând cu fiecare pixel de ramură, numărați numărul de pixeli în fiecare extragere. Dacă numărul de pixeli dintr-o extragere este mai mic decât o anumită valoare (să zicem, 5), declarați că este scamă și schimbați pixelii din ramură de la negru la alb.

Un alt algoritm ar putea modifica datele dintr-un format bitmap într-un format mapat vectorial. Aceasta implică crearea unei liste de creste conținute în imagine și a pixelilor din fiecare creastă. În formatul mapat vectorial, fiecare creastă a amprentei are o identitate individuală, spre deosebire de o imagine compusă din mulți pixeli independenți. Aceasta se poate realiza prin trecerea prin imagine în căutarea punctelor finale ale fiecărei linii, pixelii care au doar un vecin negru. Pornind de la punctul final, fiecare linie este urmărită de la pixel la pixelul de conectare. După atingerea capătului opus al liniei, toți pixelii urmăriți sunt declarați a fi un singur obiect și tratați corespunzător în algoritmi viitori.

Secțiunea următoare: Tomografie computerizată