Il termine blob è l'acronimo di binary large object e nel caso di un'immagine binaria non è nient'altro che un insieme di punti connessi (adiacenti) tra loro. Per chi stava pensando a qualche ammasso gelatinoso traslucido spero non sia rimasto deluso ed accetti il fatto che ha dei problemi di attenzione. Dove eravamo rimasti? Ah sì! Nel nostro caso specifico i blob che cerchiamo sono i numeri all'interno delle caselline dello schema sudoku, che sono il gruppo di pixel connessi con numerosità maggiore all'interno della casellina in esame.
Per individuarli si crea una matrice di supporto (inizializzata a zero) della stessa dimensione della matrice immagine (che è un sottoinsieme dell'immagine di partenza ovvero la casellina che sappiamo contenere al più un numero), si scandisce punto per punto l'immagine e mano a mano che si individua un punto:
Si veda nella figura seguente un esempio esplicativo.
FIGURA 01: Immagine binaria sovrapposta alla matrice di ricerca dei blob
La lista di liste di corrispondenza, alla fine della scansione dell'immagine, ci indicherà che un blob è formato dai gruppi dei punti etichettati 1,2 e 4 ed un altro blob dai punti etichettati 3 e 5.
A questo punto mediante una scansione della matrice di supporto riesco ad individuare i due blob.
In una casella diremo che è presente una cifra numerica se la numerosità dei punti che formano il blob più vasto è superiore di una certa soglia percentuale (ho scelto arbitrariamente il 5%) ed andremo a cancellare tutti i punti che non fanno parte del blob più grande. Ho scelto anche di cancellare i punti adiacenti ai bordi della casellina che certamente appartengono alla linea di contorno della stessa.
FIGURA 02: Eliminazione delle caselle contenenti blob troppo piccoli per contenere una cifra numerica
FIGURA 03: Per ogni casella viene mantenuto il solo blob di dimensione maggiore
Nella stesse scansioni utilizzate per rilevare i blob che individuano le cifre numeriche possiamo anche decidere se una casella è vuota oppure, nel caso non lo sia, rileviamo i limiti dei blob (ovvero il contorno esterno della cifra numerica). Il risultato è riportato in figura.
FIGURA 04: Finalmente sappiamo quali caselle sono vuote e conosciamo il contorno delle cifre numeriche