Come configurare smartphone e PC. Portale informativo
  • casa
  • Televisori (Smart TV)
  • Riconoscimento delle immagini del compito 2 di oggetti biologici. Elaborazione e riconoscimento delle immagini (corso a lezione, L.M.

Riconoscimento delle immagini del compito 2 di oggetti biologici. Elaborazione e riconoscimento delle immagini (corso a lezione, L.M.

  • tutorial

Per molto tempo ho voluto scrivere un articolo generale che contenesse le basi stesse del Riconoscimento delle Immagini, una sorta di guida sui metodi di base, dicendo quando applicarli, quali compiti risolvono, cosa si può fare la sera in ginocchio e cosa è meglio non pensare senza avere un team di persone in 20.

Scrivo da molto tempo alcuni articoli sul riconoscimento ottico, quindi un paio di volte al mese varie persone mi scrivono con domande su questo argomento. A volte hai la sensazione di vivere con loro in mondi diversi. Da un lato, capisci che una persona è molto probabilmente un professionista in un argomento correlato, ma sa molto poco sui metodi di riconoscimento ottico. E la cosa più fastidiosa è che cerca di applicare un metodo da un campo di conoscenza vicino, che è logico, ma non funziona completamente in Image Recognition, ma non lo capisce ed è molto offeso se inizia a dirgli qualcosa dal molto basilari. E considerando che raccontare dalle basi è molto tempo, che spesso non c'è, diventa ancora più triste.

Questo articolo è progettato in modo che una persona che non ha mai affrontato i metodi di riconoscimento delle immagini possa, entro 10-15 minuti, creare nella sua testa una certa immagine di base del mondo corrispondente all'argomento e capire in quale direzione dovrebbe scavare. Molti dei metodi qui descritti sono applicabili all'elaborazione radar e audio.
Inizierò con un paio di principi che iniziamo sempre a dire a un potenziale cliente, o a una persona che vuole iniziare a fare il Riconoscimento Ottico:

  • Quando risolvi un problema, vai sempre dal più semplice. È molto più facile appendere un'etichetta arancione su una persona che seguire una persona, evidenziandola a cascata. È molto più facile prendere una fotocamera con una risoluzione maggiore che sviluppare un algoritmo di super risoluzione.
  • Una definizione rigorosa del problema nei metodi di riconoscimento ottico è l'ordine di grandezza più importante che nei problemi di programmazione del sistema: una parola in più nel TK può aggiungere il 50% del lavoro.
  • Nei problemi di riconoscimento non esistono soluzioni universali. Non puoi creare un algoritmo che semplicemente "riconoscerà qualsiasi iscrizione". Un segno sulla strada e un foglio di testo sono oggetti fondamentalmente diversi. Probabilmente è possibile creare un algoritmo generale (un buon esempio di Google), ma ciò richiederà molto lavoro da parte di un team numeroso e consisterà in dozzine di subroutine diverse.
  • OpenCV è la Bibbia, che ha molti metodi e con la quale puoi risolvere il 50% del volume di quasi tutti i problemi, ma OpenCV è solo una piccola parte di ciò che si può fare nella realtà. In uno studio è stato scritto nelle conclusioni: "Il problema non è risolto dai metodi OpenCV, quindi è irrisolvibile". Cerca di evitarlo, non essere pigro e valuta con sobrietà l'attività corrente ogni volta da zero, senza utilizzare i modelli OpenCV.
È molto difficile dare una sorta di consiglio universale o dire come creare una sorta di struttura attorno alla quale costruire una soluzione a problemi arbitrari di visione artificiale. Lo scopo di questo articolo è strutturare ciò che può essere utilizzato. Cercherò di suddividere i metodi esistenti in tre gruppi. Il primo gruppo è il prefiltraggio e la preparazione dell'immagine. Il secondo gruppo è l'elaborazione logica dei risultati del filtraggio. Il terzo gruppo riguarda gli algoritmi decisionali basati sull'elaborazione logica. I confini tra i gruppi sono molto arbitrari. Per risolvere un problema, è tutt'altro che sempre necessario applicare i metodi di tutti i gruppi; a volte ne bastano due, a volte anche uno.

L'elenco dei metodi qui presentato non è completo. Propongo di aggiungere nei commenti metodi critici che non ho scritto e di attribuire a ciascuno 2-3 parole di accompagnamento.

Parte 1. Filtraggio

In questo gruppo ho inserito metodi che consentono di selezionare le aree di interesse nelle immagini senza analizzarle. La maggior parte di questi metodi applica una sorta di trasformazione uniforme a tutti i punti dell'immagine. A livello di filtraggio l'immagine non viene analizzata, ma i punti che vengono filtrati possono essere considerati come aree con caratteristiche particolari.
Binarizzazione della soglia, selezione dell'area dell'istogramma
La trasformazione più semplice è la binarizzazione dell'immagine per la soglia. Per le immagini RGB e in scala di grigi, la soglia è il valore del colore. Ci sono problemi ideali in cui una tale trasformazione è sufficiente. Supponiamo di voler selezionare automaticamente gli elementi su un foglio di carta bianco:




La scelta della soglia entro la quale avviene la binarizzazione determina in gran parte il processo di binarizzazione stesso. In questo caso, l'immagine è stata binarizzata dal colore medio. In genere, la binarizzazione viene eseguita con un algoritmo che seleziona in modo adattivo una soglia. Un tale algoritmo può essere la scelta dell'aspettativa o della modalità. E puoi scegliere il picco più grande dell'istogramma.

La binarizzazione può dare risultati molto interessanti quando si lavora con gli istogrammi, inclusa la situazione se consideriamo un'immagine non in RGB, ma in HSV. Ad esempio, segmenta i colori di interesse. Su questo principio è possibile costruire sia un rilevatore di etichette che un rilevatore di pelle umana.
Filtraggio classico: Fourier, LPF, HPF
I metodi di filtraggio classici dal radar e dall'elaborazione del segnale possono essere applicati con successo in una varietà di attività di riconoscimento del modello. Il metodo tradizionale nei radar, che non viene quasi mai utilizzato nelle immagini nella sua forma pura, è la trasformata di Fourier (più precisamente, la FFT). Una delle poche eccezioni in cui viene utilizzata la trasformata di Fourier 1D è la compressione dell'immagine. Per l'analisi delle immagini, una trasformazione unidimensionale di solito non è sufficiente, è necessario utilizzare una trasformazione bidimensionale molto più dispendiosa in termini di risorse.

Poche persone lo calcolano effettivamente, di solito è molto più veloce e più facile usare la convoluzione della regione di interesse con un filtro pronto all'uso affilato alle frequenze alte (HPF) o basse (LPF). Un tale metodo, ovviamente, non consente l'analisi dello spettro, ma in una specifica attività di elaborazione video, di solito non è necessaria un'analisi, ma un risultato.


Gli esempi più semplici di filtri che enfatizzano le basse frequenze (filtro gaussiano) e le alte frequenze (filtro Gabor).
Per ogni punto immagine viene selezionata una finestra e moltiplicata con un filtro della stessa dimensione. Il risultato di tale convoluzione è il nuovo valore del punto. Quando si implementa LPF e HPF, si ottengono immagini di questo tipo:



Wavelets
Ma cosa succede se usiamo una funzione caratteristica arbitraria per la convoluzione con il segnale? Quindi si chiamerà "Wavelet Transform". Questa definizione di wavelet non è corretta, ma tradizionalmente, in molti team, l'analisi wavelet è la ricerca di un modello arbitrario in un'immagine utilizzando la convoluzione con un modello di questo modello. Esiste un insieme di funzioni classiche utilizzate nell'analisi wavelet. Questi includono il wavelet Haar, il wavelet Morlet, il wavelet del cappello messicano e così via. Le primitive Haar, su cui c'erano molti dei miei articoli precedenti ( , ), si riferiscono a tali funzioni per uno spazio bidimensionale.


Sopra ci sono 4 esempi di wavelet classiche. Wavelet Haar 3D, wavelet Meyer 2D, wavelet Mexican Hat, wavelet Daubechies. Un buon esempio di utilizzo dell'interpretazione estesa delle wavelet è il problema di trovare un luccichio negli occhi, per il quale il luccichio stesso è un wavelet:

Le wavelet classiche vengono solitamente utilizzate per o per la loro classificazione (descritta di seguito).
Correlazione
Dopo un'interpretazione così libera delle wavelet da parte mia, vale la pena menzionare l'effettiva correlazione che li sottende. Quando si filtrano le immagini, questo è uno strumento indispensabile. Un'applicazione classica è la correlazione del flusso video per trovare offset o flussi ottici. Il più semplice rilevatore di spostamento è anche, in un certo senso, un correlatore di differenza. Dove le immagini non sono correlate, c'era movimento.

Filtraggio delle funzioni
Un'interessante classe di filtri è rappresentata dalle funzioni di filtraggio. Si tratta di filtri puramente matematici che consentono di rilevare una semplice funzione matematica in un'immagine (linea, parabola, cerchio). Viene costruita un'immagine cumulativa, in cui per ogni punto dell'immagine originale viene disegnato un insieme di funzioni che la generano. La trasformazione più classica è la trasformazione di Hough per le linee. In questa trasformazione, per ogni punto (x;y), viene tracciato un insieme di punti (a;b) della retta y=ax+b, per i quali vale l'uguaglianza. Ottieni bellissime foto:


(il primo vantaggio per chi è il primo a trovare un fermo nella foto e una tale definizione e spiegarlo, il secondo vantaggio per chi è il primo a dire ciò che viene mostrato qui)
La trasformata di Hough consente di trovare qualsiasi funzione parametrizzabile. Ad esempio cerchi. C'è una trasformazione modificata che ti permette di cercare qualsiasi . Questa trasformazione è terribilmente affezionata ai matematici. Ma quando si elaborano le immagini, sfortunatamente non sempre funziona. Velocità molto lenta, sensibilità molto alta alla qualità della binarizzazione. Anche nelle situazioni ideali, preferivo cavarmela con altri metodi.
La controparte della trasformata di Hough per le linee è la trasformata di Radon. Viene calcolato tramite la FFT, che fornisce un guadagno di prestazioni in una situazione in cui ci sono molti punti. Inoltre, può essere applicato a un'immagine non binarizzata.
Filtraggio del contorno
Una classe separata di filtri è quella dei bordi e dei contorni. I percorsi sono molto utili quando vogliamo passare dal lavorare con un'immagine al lavorare con gli oggetti in quell'immagine. Quando un oggetto è piuttosto complesso, ma ben distinto, spesso l'unico modo per lavorarci è selezionarne i contorni. Esistono numerosi algoritmi che risolvono il problema del filtraggio dei contorni:

Il più usato è Kenny, che funziona bene e la cui implementazione è in OpenCV (c'è anche Sobel, ma cerca contorni peggiori).



Altri filtri
Sopra ci sono i filtri, le cui modifiche aiutano a risolvere l'80-90% delle attività. Ma oltre a loro, ci sono filtri più rari utilizzati nelle attività locali. Ci sono dozzine di filtri di questo tipo, non li elencherò tutti. Di interesse sono i filtri iterativi (ad esempio ), così come le trasformate ridgelet e curvlet, che sono una lega del filtraggio e dell'analisi wavelet classici nel campo della trasformata del radon. La trasformazione Beamlet funziona magnificamente al confine tra la trasformazione wavelet e l'analisi logica, consentendo di evidenziare i contorni:

Ma queste trasformazioni sono molto specifiche e fatte su misura per compiti rari.

Parte 2. Elaborazione logica dei risultati di filtraggio

Il filtraggio fornisce un insieme di dati adatto per l'elaborazione. Ma spesso non puoi semplicemente prendere e utilizzare questi dati senza elaborarli. In questa sezione ci saranno diversi metodi classici che ti permetteranno di passare dall'immagine alle proprietà degli oggetti, oppure agli oggetti stessi.
Morfologia
Il passaggio dal filtraggio alla logica, secondo me, è il metodo della morfologia matematica ( , ). In effetti, queste sono le operazioni più semplici di aumento ed erosione di immagini binarie. Questi metodi consentono di rimuovere il rumore da un'immagine binaria aumentando o diminuendo gli elementi disponibili. Basati sulla morfologia matematica, ci sono algoritmi di contornatura, ma di solito usano una sorta di algoritmi o algoritmi ibridi insieme.
analisi del contorno
Nella sezione sul filtraggio sono già stati menzionati gli algoritmi per ottenere i confini. I confini risultanti vengono semplicemente convertiti in contorni. Per l'algoritmo Canny ciò avviene automaticamente, per altri algoritmi è richiesta una binarizzazione aggiuntiva. È possibile ottenere un contorno per un algoritmo binario, ad esempio con l'algoritmo Beetle.
Il contorno è una caratteristica unica di un oggetto. Spesso questo consente di identificare l'oggetto lungo il contorno. C'è un potente apparato matematico che ti permette di farlo. L'apparato è chiamato analisi del contorno ( , ).

Ad essere sincero, non sono mai riuscito ad applicare l'analisi del contorno a problemi reali. Sono richieste condizioni troppo ideali. O non c'è confine o c'è troppo rumore. Ma se hai bisogno di riconoscere qualcosa in condizioni ideali, l'analisi del contorno è un'ottima opzione. Funziona molto velocemente, bella matematica e logica comprensibile.
Punti singolari
I punti chiave sono caratteristiche uniche di un oggetto che consentono all'oggetto di essere associato a se stesso oa classi di oggetti simili. Ci sono dozzine di modi per selezionare tali punti. Alcuni metodi evidenziano punti speciali nei fotogrammi vicini, alcuni dopo un lungo periodo di tempo e quando l'illuminazione cambia, altri consentono di trovare punti speciali che rimangono tali anche quando l'oggetto ruota. Iniziamo con metodi che ci consentono di trovare punti speciali che non sono così stabili, ma vengono calcolati rapidamente, quindi andremo in complessità crescente:
Primo grado. Punti singolari stabili per secondi. Tali punti vengono utilizzati per guidare un oggetto tra fotogrammi video adiacenti o per far convergere le immagini dalle telecamere vicine. Questi punti includono massimi locali dell'immagine, angoli nell'immagine (il migliore dei rivelatori, forse il rivelatore Haris), punti in cui vengono raggiunti i massimi di dispersione, determinati gradienti, ecc.
Seconda classe. Punti singolari stabili al variare della luce e ai piccoli movimenti dell'oggetto. Tali punti servono principalmente per l'addestramento e la successiva classificazione dei tipi di oggetti. Ad esempio, un classificatore pedonale o un classificatore facciale è il prodotto di un sistema costruito proprio su tali punti. Alcuni dei wavelet menzionati in precedenza possono essere la base per tali punti. Ad esempio, primitive Haar, ricerca di abbagliamento, ricerca di altre caratteristiche specifiche. Questi punti includono punti trovati con il metodo degli istogrammi dei gradienti direzionali (HOG).
Terza classe. punti stabili. Conosco solo due metodi che danno una stabilità completa e le loro modifiche. Questo e . Ti permettono di trovare i punti chiave anche quando ruoti l'immagine. Il calcolo di tali punti richiede più tempo rispetto ad altri metodi, ma per un tempo piuttosto limitato. Sfortunatamente, questi metodi sono brevettati. Anche se in Russia è impossibile brevettare algoritmi, quindi usalo per il mercato interno.

Parte 3. Formazione

La terza parte della storia sarà dedicata ai metodi che non funzionano direttamente con l'immagine, ma che consentono di prendere decisioni. Fondamentalmente, questi sono vari metodi di apprendimento automatico e processo decisionale. Di recente, Yandyks ha pubblicato su Habr su questo argomento, c'è un'ottima selezione. Eccolo nella versione testuale. Per uno studio serio dell'argomento, ti consiglio vivamente di guardarli. Qui cercherò di identificare diversi metodi di base utilizzati specificamente nel riconoscimento di schemi.
Nell'80% delle situazioni, l'essenza dell'apprendimento nel problema del riconoscimento è la seguente:
C'è un campione di prova su cui sono presenti diverse classi di oggetti. Lascia che sia la presenza/assenza di una persona nella foto. Per ogni immagine, c'è una serie di caratteristiche che sono state evidenziate da alcune caratteristiche, siano esse Haar, HOG, SURF o qualche wavelet. L'algoritmo di apprendimento deve costruire un tale modello, in base al quale sarà in grado di analizzare la nuova immagine e decidere quale degli oggetti è nell'immagine.
Come è fatto? Ciascuna delle immagini di prova è un punto nello spazio delle funzionalità. Le sue coordinate sono il peso di ogni caratteristica nell'immagine. Lascia che i nostri segni siano: "La presenza degli occhi", "La presenza di un naso", "La presenza di due mani", "La presenza di orecchie", ecc. Assegneremo tutti questi segni con i rilevatori che abbiamo, che sono addestrati su parti del corpo simili a quelle umane. Per una persona in uno spazio del genere, il punto corretto sarà . Per la scimmia, punto per il cavallo. Il classificatore viene addestrato su un campione di esempi. Ma non tutte le fotografie mostravano le mani, altre non avevano occhi e nella terza la scimmia aveva un naso umano per un errore di classificazione. Il classificatore umano addestrabile divide automaticamente lo spazio delle caratteristiche in modo tale da dire: se la prima caratteristica si trova nell'intervallo 0,5 In sostanza, lo scopo del classificatore è quello di disegnare nello spazio delle caratteristiche le aree caratteristiche degli oggetti di classificazione. Ecco come apparirà la successiva approssimazione alla risposta per uno dei classificatori (AdaBoost) nello spazio bidimensionale:


Ci sono molti classificatori. Ognuno di loro funziona meglio in alcuni dei suoi compiti. Il compito di selezionare un classificatore per un compito specifico è in gran parte un'arte. Ecco alcune belle immagini sull'argomento.
Caso semplice, separazione unidimensionale
Facciamo un esempio del caso più semplice di classificazione, quando lo spazio delle caratteristiche è unidimensionale e dobbiamo separare 2 classi. La situazione si verifica più spesso di quanto potrebbe sembrare: ad esempio, quando è necessario distinguere due segnali o confrontare un pattern con un campione. Diciamo che abbiamo un campione di allenamento. In questo caso, si ottiene un'immagine, in cui l'asse X sarà una misura di somiglianza e l'asse Y sarà il numero di eventi con tale misura. Quando l'oggetto desiderato è simile a se stesso, si ottiene una gaussiana sinistra. Quando non è simile - giusto. Il valore X=0,4 separa i campioni in modo che una decisione errata minimizzi la probabilità di prendere qualsiasi decisione sbagliata. È la ricerca di un tale separatore che è il compito della classificazione.


Piccola nota. Il criterio che minimizza l'errore non sarà sempre ottimale. Il grafico seguente è un grafico di un vero e proprio sistema di riconoscimento dell'iride. Per un tale sistema, il criterio è scelto in modo tale da ridurre al minimo la probabilità di falsa ammissione di un estraneo all'oggetto. Tale probabilità è chiamata "errore di primo tipo", "probabilità di falso allarme", "falso positivo". Nella letteratura inglese "False Access Rate".
) AdaBusta è uno dei classificatori più comuni. Ad esempio, la cascata Haar è costruita su di esso. Solitamente utilizzato quando è necessaria la classificazione binaria, ma nulla impedisce l'insegnamento per più classi.
SVM ( , , , ) Uno dei classificatori più potenti con molte implementazioni. In linea di principio, sui compiti di apprendimento che ho incontrato, ha funzionato in modo simile ad adabusta. È considerato abbastanza veloce, ma il suo addestramento è più difficile di quello dell'Adabusta e richiede la scelta del kernel corretto.

Ci sono anche reti neurali e regressione. Ma per classificarli brevemente e mostrare come differiscono, è necessario un articolo molto più ampio di questo.
________________________________________________
Spero di essere stato in grado di fornire una rapida panoramica dei metodi utilizzati senza immergermi nella matematica e nella descrizione. Forse questo aiuterà qualcuno. Anche se, ovviamente, l'articolo è incompleto e non c'è una parola sul lavoro con le immagini stereo, o sull'LSM con il filtro di Kalman, o sull'approccio bayesiano adattivo.
Se l'articolo ti piace, proverò a creare la seconda parte con una selezione di esempi di come vengono risolti i problemi di ImageRecognition esistenti.

E infine

Cosa leggere?
1) Una volta mi è piaciuto molto il libro "Digital Image Processing" di B. Yana, che è scritto in modo semplice e chiaro, ma allo stesso tempo viene data quasi tutta la matematica. Buono per familiarizzare con i metodi esistenti.
2) Il classico del genere è R Gonzalez, R. Woods "Digital Image Processing". Per qualche ragione, per me è stato più difficile del primo. Molto meno matematica, ma più metodi e immagini.
3) "Elaborazione e analisi delle immagini nei problemi di visione artificiale" - scritto sulla base di un corso tenuto presso uno dei dipartimenti di PhysTech. Molti metodi e la loro descrizione dettagliata. Ma secondo me il libro ha due grossi svantaggi: il libro è fortemente incentrato sul pacchetto software che gli è allegato, nel libro troppo spesso la descrizione di un metodo semplice si trasforma in giungla matematica, dalla quale è difficile prendere fuori lo schema strutturale del metodo. Ma gli autori hanno creato un sito conveniente, in cui viene presentato quasi tutto il contenuto: wiki.technicalvision.ru Aggiungi tag

Come argomento di ricerca sull'intelligenza artificiale, il riconoscimento delle immagini ha una lunga storia e una grande importanza pratica. È stato utilizzato per la prima volta per la lettura automatica di cifre scritte a mano. Attualmente, il suo campo di applicazione si è notevolmente ampliato: dalla misurazione, controllo, smistamento e assemblaggio nei processi produttivi all'analisi di immagini lette a distanza, diagnostica da immagini mediche, valutazione quantitativa di dati sperimentali, identificazione umana, progettazione automatica, comprensione delle immagini come funzione visione tecnica di robot, ecc. Il processo di riconoscimento dell'immagine da parte di una persona non è una semplice elaborazione di informazioni visive, ma un processo complesso in cui i fattori psicologici svolgono un ruolo importante. In particolare, nel processo di comprensione di un'immagine, c'è un'inferenza semantica, ma la sua implementazione richiede la raccolta di conoscenze approfondite e decisioni intuitive che vanno oltre la logica, quindi è estremamente difficile simulare un tale processo in un computer.

Gli strumenti di riconoscimento delle immagini esistenti utilizzano metodi diversi a seconda che l'oggetto di riconoscimento sia artificiale o naturale. Nel primo caso, di solito si tratta di singoli oggetti di forma chiara, quindi un gran numero di studi

è dedicato alla corrispondenza delle immagini rilevando contorni e contorni o derivando una forma tridimensionale utilizzando regole geometriche. Tra gli oggetti naturali, ci sono molti oggetti di forma irregolare con chiaroscuro, quindi, utilizzando l'analisi dei cluster, di solito si dividono in aree omogenee e quindi, in base alle caratteristiche delle forme di queste aree, traggono una conclusione sull'oggetto. Inoltre, recentemente sono state condotte molte ricerche sulla riproduzione di forme bidimensionali e tridimensionali di oggetti basate sull'elaborazione di un gran numero di immagini. Nella robotica diventa necessario elaborare le immagini in movimento in tempo reale, ovvero la velocità di riconoscimento è di grande importanza.

In generale, il processo di riconoscimento delle immagini utilizzando un computer è il seguente.

1. Ottenere informazioni sull'immagine utilizzando una fotocamera o un altro metodo e convertirle in informazioni digitali: di conseguenza, i fotogrammi sono divisi in un gran numero di elementi e a ciascun elemento vengono assegnati colore e contrasto.

2. Pretrattamento. Rimozione del rumore, normalizzazione per confronto con lo standard, segmentazione (selezione delle informazioni locali necessarie per il riconoscimento), ecc.

3. Estrazione delle caratteristiche. Le caratteristiche dell'immagine possono avere diversi livelli. A rigor di termini, anche la segmentazione fa parte dell'estrazione di funzionalità. I metodi di estrazione delle caratteristiche possono essere locali o globali. Un esempio di metodo locale è il rilevamento dei bordi, il clustering globale e il metodo di estensione dell'area. Le disomogeneità tra le aree vengono utilizzate per il rilevamento dei bordi, mentre il clustering è una segmentazione basata sul rilevamento di aree omogenee. Poiché in ogni caso le informazioni sull'immagine contengono rumore che non viene eliminato nella fase di pre-elaborazione, la segmentazione richiede l'elaborazione di informazioni sfocate. La selezione globale delle caratteristiche viene effettuata in relazione alla forma, alle proprietà, alla posizione relativa e ad altre caratteristiche delle aree selezionate. Questa procedura è di grande importanza per la successiva fase di valutazione.

4. Comprensione e valutazione. Processo di comprensione dell'immagine

chiamato classificazione e identificazione confrontando i cluster risultanti con modelli noti o costruendo un'immagine tridimensionale dell'oggetto originale utilizzando inferenze. Il risultato di questo processo è l'obiettivo finale del riconoscimento delle immagini.

Attualmente è stato condotto un numero enorme di studi sul processo di riconoscimento delle immagini, ma i risultati finora sono estremamente insoddisfacenti. Ad esempio, questioni come la comprensione di immagini complesse, la trasformazione reciproca di informazioni verbali e video, il riconoscimento di oggetti di forme curvilinee e irregolari, il riconoscimento di immagini sfocate, l'estrazione di caratteristiche altamente efficienti, l'inferenza semantica e l'immaginazione, ecc., non sono state praticamente toccate .

I principali approcci metodologici attualmente adottati nel riconoscimento sono la statistica, l'analisi dei cluster, la deduzione nella logica a due valori e molti altri, ma tutti sono molto lontani dal processo di riconoscimento che è caratteristico di una persona. L'estrazione delle caratteristiche è il passaggio più importante nel riconoscimento delle immagini, ma anche estremamente complesso. In effetti, cos'è un segno di un'immagine? Perché una caricatura ha una somiglianza maggiore con una persona rispetto a una sua fotografia? Apparentemente, un ruolo importante nel processo di riconoscimento umano è svolto dall'informazione che per un computer non è altro che rumore, ma è in qualche modo distinta e presentata. È possibile identificare segni di questo tipo dai sentimenti umani e non dalla logica. Inoltre, quando si riconoscono immagini sfocate, non sono le capacità analitiche che funzionano, ma le capacità di generalizzazione, ad es. è anche un processo intuitivo. Per simulare tali processi, è necessario studiare i metodi di elaborazione delle informazioni soggettive e le modalità di gestione delle macroinformazioni. La ricerca sul riconoscimento delle immagini sfocate è appena iniziata, ma è già in attesa di ulteriore sviluppo di una nuova metodologia che soddisfi i requisiti di cui sopra.

Consideriamo brevemente lo stato del riconoscimento delle immagini sfocate. Poiché le informazioni video anche di un oggetto abbastanza chiaro possono essere disturbate dal rumore, la logica fuzzy viene spesso utilizzata per rilevare i bordi. Un tipico esempio è la classificazione

elementi dell'immagine utilizzando il clustering fuzzy. Tuttavia, poiché gli elementi assolutamente identici sono rari, è necessario il raggruppamento "fuzzy". Metodi simili sono utilizzati anche nella classificazione delle immagini che hanno una diffusione rispetto all'immagine di riferimento (riconoscimento di caratteri manoscritti, parlato, ecc.).

Con il rilevamento diretto dei contorni, sorge un problema di rumore che non può essere completamente risolto con l'aiuto di filtri. Inoltre, sono necessarie conclusioni per ricostituire i siti perduti. Per questo vengono utilizzate regole euristiche che, tuttavia, hanno un carattere qualitativo sfocato. Quando si passa alla fase di comprensione dell'immagine, sorge il problema di una corrispondenza fuzzy più efficiente delle immagini, che richiede la corrispondenza non solo nella forma, ma anche nella semantica per la sua soluzione. In particolare, una tale situazione si sviluppa nel campo della diagnostica a raggi X, dove la formazione di regole è impossibile.

Di seguito sono riportati alcuni esempi tipici di ricerca sul riconoscimento delle immagini utilizzando la logica fuzzy.

La scansione di un'immagine e il rilevamento di oggetti in essa contenuti è l'attività n. 1 nell'elaborazione delle immagini e nella visione artificiale. La ricerca di "riconoscimento automatico delle immagini" su Google Scholar restituirà molti articoli con equazioni e algoritmi complessi dai primi anni '90 ai giorni nostri. Ciò suggerisce che questo problema ha occupato gli scienziati dall'avvento della ricerca sul web, ma non è stato ancora risolto.

Il fondatore di cognitiveSEO, Razvan Gavrilas, ritiene che nel prossimo futuro Google cambierà i suoi algoritmi di ranking delle immagini, che influenzeranno la ricerca e, di fatto, l'ottimizzazione dei motori di ricerca in tutto il mondo. Razvan sviluppa questo tema in questo articolo.

Perché la capacità di riconoscere gli oggetti nelle immagini è importante per la comunità digitale globale?

Secondo l'esperto, il rilevamento di oggetti nelle immagini diventerà un ulteriore fattore di ranking. Ad esempio, l'immagine di un cane blu sarebbe indissolubilmente collegata alla parola chiave "cane blu" anziché "cane rosso".

Per la SEO, questo ha due importanti implicazioni:

  • il numero di risultati irrilevanti durante la ricerca di una determinata parola chiave sarà inferiore (a seconda di cosa c'è nell'immagine),
  • Riconoscere gli oggetti in un'immagine aiuterà a collegare il contenuto della pagina a quell'immagine. Se una pagina contiene molte immagini di cani blu e altre cose relative ai cani, quella pagina verrà classificata più in alto come pagina di cani.

Un'altra domanda: il riconoscimento delle immagini inaugurerà una "nuova era" per la manipolazione di oggetti nelle immagini come una nuova tecnica SEO ombra? No, perché oggigiorno gli algoritmi dei motori di ricerca rileveranno facilmente questo tipo di spam.

Google, intelligenza artificiale e riconoscimento delle immagini

Nel 2010, la Stanford University ha organizzato il primo concorso ILSVRC (ImageNet large scale visual recognition challenge), in cui i programmatori dimostrano le capacità dei loro sistemi di riconoscimento di oggetti immagine.

ILSVRC comprende tre passaggi principali:

  • classificazione,
  • classificazione con localizzazione,
  • rilevamento.

Nel primo caso viene valutata la capacità dell'algoritmo di creare le "didascalie" corrette per l'immagine (marcatura), la localizzazione prevede la selezione degli oggetti principali nell'immagine, il compito di rilevamento è formulato in modo simile, ma più qui si applicano severi criteri di valutazione.

In caso di rilevamento, l'algoritmo di riconoscimento deve descrivere un'immagine complessa con molti oggetti, determinandone la posizione e identificando accuratamente ciascuno di essi. Ciò significa che se nella foto qualcuno sta guidando un motorino, il software non solo deve essere in grado di distinguere tra diversi oggetti singoli (ad esempio un motorino, una persona e un casco), ma anche posizionarli correttamente nello spazio e correttamente classificarli. Come possiamo vedere nell'immagine sottostante, i singoli articoli sono stati identificati e classificati correttamente.

Qualsiasi motore di ricerca con questa capacità renderà difficile per chiunque spacciare foto di persone sui motorini come foto di conducenti Porsche attraverso la manipolazione dei metadati. L'algoritmo in grado di riconoscere gli oggetti è abbastanza avanzato e sarà in grado di analizzarne qualsiasi, anche l'immagine più complessa.

Nel 2014, il concorso ILSVRC è stato vinto dal team di GoogLeNet. Il nome è formato dalle parole Google e LeNet, una delle implementazioni di una rete neurale convoluzionale. Tale rete può apprendere rapidamente e anche produrre risultati anche con una piccola quantità di memoria a causa di una riduzione di oltre dieci volte del numero di parametri rispetto alla maggior parte degli altri modelli di visione artificiale.

Il termine "reti neurali" si riferisce alle reti neurali artificiali (ANN), che sono modelli computazionali basati sui principi dell'apprendimento e del riconoscimento di schemi. Di seguito viene mostrato un esempio del funzionamento dell'algoritmo di rilevamento degli oggetti:

Il team di GoogLeNet utilizza un tipo specifico di ANN, una rete neurale convoluzionale, che funziona facendo in modo che i singoli neuroni rispondano a regioni diverse (ma sovrapposte) nel campo visivo. Queste aree possono essere mappate insieme per creare un aspetto più complesso. Secondo Razvan Gavrilas, questo è simile a lavorare con i livelli in un editor di immagini.

Uno dei vantaggi di una rete neurale convoluzionale è il suo buon supporto per la traduzione - qualsiasi tipo di movimento di un oggetto da uno spazio all'altro. Il framework DistBelief è in grado di selezionare un oggetto indipendentemente da dove si trovi nell'immagine.

Un'altra caratteristica utile dell'infrastruttura è l'invarianza di scala, secondo la quale le proprietà degli oggetti non cambiano se le scale di lunghezza vengono moltiplicate per un fattore comune. Ciò significa che il framework DistBelief deve riconoscere chiaramente un'immagine, ad esempio "arancione", indipendentemente dal fatto che sia grande (su uno sfondo del desktop) o minuscola (su un'icona). In entrambi i casi l'oggetto è arancione ed è classificato come "arancione".

È necessario parlare del principio di Hebb, secondo il quale vengono addestrate le reti neurali artificiali. In The Organization of Behavior: A Neuropsychological Theory, il postulato di Hebb è il seguente: "Se l'assone della cellula A è abbastanza vicino da eccitare la cellula B e partecipa ripetutamente o costantemente alla sua eccitazione, allora c'è qualche processo di crescita o cambiamenti metabolici in una o entrambe le cellule, portando ad un aumento dell'efficienza di A come una delle cellule che eccitano B.

Razvan Gavrilas semplifica un po' la citazione: "Le cellule che sparano insieme si legano insieme". Nel caso delle RNA, le "cellule" dovrebbero essere sostituite con "neuroni". Basandosi ulteriormente sull'analogia, il software sarà in grado di educarsi per migliorare continuamente.

Google recluta specialisti nel campo dell'intelligenza artificiale e del riconoscimento delle immagini

Google crea la propria tecnologia di riconoscimento delle immagini sulla base di sviluppi di terze parti, ad esempio, a tale scopo, è stata acquisita una start-up DNNresearch, impegnata nella ricerca nel campo del riconoscimento vocale e di oggetti. DNNresearch è una startup, al momento dell'acquisizione aveva tre dipendenti che sono diventati automaticamente dipendenti di Google. Hanno ricevuto una sovvenzione per sostenere il lavoro nel campo delle reti neurali. Google può utilizzare le nuove tecnologie per migliorare la qualità della ricerca di immagini.

La strategia di Google è quella di mantenere molte soluzioni open source disponibili per altre aziende. Questo viene fatto per sviluppare il mercato. Secondo Razvan, perché strangolare i tuoi concorrenti quando puoi permetterti di acquistarlo dopo un po' di tempo?

Un'altra acquisizione interessante di Google è DeepMind, che ha investito 400 milioni di dollari. Questa e molte altre acquisizioni mirano principalmente ad attirare specialisti qualificati su Google e non alcune soluzioni già pronte. Tali mosse per acquistare società sono la prova della corsa di Google, Facebook e altre società Internet per i "cervelli" per ulteriori sviluppi nel campo dell'intelligenza artificiale.

Google+ sta già utilizzando il rilevamento degli oggetti nelle immagini. Il prossimo passo è Ricerca Google?

In effetti, l'algoritmo di rilevamento delle immagini basato sulla rete neurale è in esecuzione su Google+ da oltre un anno. Parte del codice software presentato all'ILSVRC è stato utilizzato per migliorare gli algoritmi di Google+, in particolare per cercare tipi specifici di foto.

La tecnologia di riconoscimento delle immagini di Google ha le seguenti caratteristiche:

  • L'algoritmo di Google tiene conto della corrispondenza degli oggetti nelle immagini web (primi piani, illuminazione artificiale, dettaglio) con gli oggetti nelle foto naturali (terreno medio, luce naturale con ombre, vari gradi di dettaglio). In altre parole, un fiore dovrebbe rimanere un fiore anche in immagini con risoluzioni o condizioni di illuminazione diverse.
  • Alcune classi visive specifiche sono escluse dall'ambito delle unità generali. Ad esempio, in un ampio elenco di nomi di fiori che l'algoritmo distingue, alcune singole piante sono contrassegnate, ad esempio ibisco o dalia.
  • L'algoritmo di riconoscimento delle immagini di Google è anche riuscito a imparare a lavorare con categorie astratte di oggetti, evidenziando l'una o l'altra serie di immagini che potrebbero essere classificate nelle categorie "danza", "cibo", "baci". Ci vuole molto più tempo della semplice ricerca dei rapporti arancione-arancione.

Anche le classi con significato diverso sono gestite bene. Un esempio è "auto". È davvero l'immagine di un'auto se possiamo vedere l'intera macchina su di essa? Un'immagine dell'interno di un'auto è considerata un'immagine di un'auto o è qualcos'altro? Rispondiamo sì a entrambe le domande, così come l'algoritmo di riconoscimento di Google.

Va notato che il sistema di riconoscimento delle immagini è ancora sottosviluppato. Tuttavia, anche nella sua forma "grezza", l'algoritmo di Google è al di sopra di tutti i precedenti sviluppi nel campo della visione artificiale.

La tecnologia di riconoscimento delle immagini fa parte del Google Knowledge Graph?

Il nuovo algoritmo di Google fa parte del "machine learning", che è in parte implementato nel Knowledge Graph. Contiene entità - oggetti progettati per sostituire caratteri che non possono essere trovati in una forma "pura" nel testo HTML, ad esempio il carattere "

Ogni oggetto e ogni classe di oggetti riceve un codice univoco, in modo che l'animale giaguaro non venga mai confuso con l'omonima marca automobilistica. Sulla base di questi codici, l'algoritmo di riconoscimento può utilizzare la base di conoscenza. Infatti, Google crea una "ricerca intelligente" che comprende e traduce le tue parole e immagini in oggetti con personaggi reali.

In che modo il rilevamento degli oggetti nelle immagini può influire sulla SEO?

La capacità di riconoscere le immagini può essere utile ovunque tu voglia sapere cosa c'è nell'immagine.

Da un punto di vista SEO convenzionale, essere in grado di riconoscere le immagini è un enorme passo avanti. Questo aiuta a migliorare la qualità dei contenuti, poiché diventa quasi impossibile ingannare il motore di ricerca con l'aiuto di un'etichettatura errata delle foto o del loro numero enorme.

È probabile che un buon contenuto visivo (ad es. alta qualità dell'immagine, oggetti chiaramente visibili, rilevanza fotografica) svolga un ruolo importante in tutte le cose della ricerca visiva.

Se vuoi che il tuo disegno sia il primo tra le immagini per le query "Yellow Dog", l'ottimizzazione dovrà iniziare specificando il tipo della tua immagine ed elencando gli oggetti che contiene.

Conclusione

La capacità di una persona di riconoscere molti oggetti e classificarli è una delle possibilità più sorprendenti della percezione visiva, i cui analoghi del computer non sono ancora stati inventati. Tuttavia, Google sta già facendo passi avanti, ad esempio possiede già un brevetto per il riconoscimento automatico di oggetti video su larga scala dal 2012.

Quindi, secondo Razvan Gavrilas, i risultati della ricerca organica di Google verranno modificati nel prossimo futuro. Il motore di ricerca si sposterà "dalle stringhe alle cose", integrando di fatto il suo Knowledge Graph nel panorama di ricerca. Cambieranno anche gli algoritmi di ricerca, che saranno probabilmente correlati agli oggetti reali nel contenuto e alla definizione di come questi oggetti saranno correlati tra loro.

Continuo la serie di articoli dedicati a pattern recognition, computer vision e machine learning. Oggi vi presento una panoramica dell'algoritmo, che si chiama eigenface.

L'algoritmo si basa sull'utilizzo di caratteristiche statistiche fondamentali: media (aspettativa matematica) e matrice di covarianza; utilizzando il metodo delle componenti principali. Toccheremo anche concetti di algebra lineare come autovalori (autovalori) e autovettori (autovettori) (wiki: , eng). E inoltre, lavoreremo in uno spazio multidimensionale.
Non importa quanto possa sembrare spaventoso, questo algoritmo è forse uno dei più semplici che ho considerato, la sua implementazione non supera diverse decine di righe, allo stesso tempo mostra buoni risultati in una serie di attività.


Per me eigenface è interessante perché negli ultimi 1,5 anni ho sviluppato, tra l'altro, algoritmi statistici per l'elaborazione di vari array di dati, dove molto spesso ho a che fare con tutte le "cose" sopra descritte.

Utensili

Secondo la metodologia che si è sviluppata, nell'ambito della mia modesta esperienza, dopo aver considerato qualsiasi algoritmo, ma prima della sua implementazione in C/C++/C#/Python etc., è necessario rapidamente (per quanto possibile) creare un modello matematico e testarlo, contare qualcosa. Ciò consente di apportare le modifiche necessarie, correggere errori, scoprire cosa non è stato preso in considerazione quando si pensa all'algoritmo. Per questo uso MathCAD. Il vantaggio di MathCAD è che, insieme a un numero enorme di funzioni e procedure integrate, utilizza la classica notazione matematica. In parole povere, basta conoscere la matematica ed essere in grado di scrivere formule.

Breve descrizione dell'algoritmo

Come ogni algoritmo della serie di machine learning, eigenface deve essere prima addestrato, per questo viene utilizzato un set di allenamento, che è un'immagine dei volti che vogliamo riconoscere. Dopo che il modello è stato addestrato, forniremo un'immagine all'input e di conseguenza otterremo una risposta alla domanda: quale immagine del set di addestramento corrisponde molto probabilmente all'esempio di input o non corrisponde a nessuna.

Il compito dell'algoritmo è rappresentare un'immagine come somma di componenti di base (immagini):

Dove Ф i è l'i-esima immagine centrata (cioè meno la media) del campione originale, w j sono i pesi e u j sono autovettori (autovettori o, nell'ambito di questo algoritmo, autofacce).

Nella figura sopra, otteniamo l'immagine originale mediante la somma pesata degli autovettori e aggiungendo la media. Quelli. dati w e u, possiamo ripristinare qualsiasi immagine originale.

Il campione di addestramento deve essere proiettato in un nuovo spazio (e lo spazio, di regola, è molto più grande dell'immagine 2D originale), dove ogni dimensione darà un certo contributo alla rappresentazione complessiva. L'analisi delle componenti principali consente di trovare le basi del nuovo spazio in modo tale che i dati in esso contenuti si trovino, in un certo senso, in modo ottimale. Per capire, basta immaginare che nel nuovo spazio alcune dimensioni (dette anche componenti principali o autovettori o autofacce) "trasporteranno" informazioni più generali, mentre altre porteranno solo informazioni specifiche. Di norma, le dimensioni di ordine superiore (corrispondenti ad autovalori minori) portano informazioni molto meno utili (nel nostro caso, utile è inteso come qualcosa che dà un'idea generalizzata dell'intero campione) rispetto alle prime dimensioni, corrispondenti alla maggiore autovalori. Lasciando le dimensioni solo con informazioni utili, otteniamo uno spazio delle caratteristiche in cui ogni immagine del campione originale è rappresentata in una forma generalizzata. Questa, molto semplificata, è l'idea dell'algoritmo.
Inoltre, avendo un'immagine a portata di mano, possiamo mapparla allo spazio creato in anticipo e determinare quale immagine del campione di addestramento è più vicino al nostro esempio. Se si trova a una distanza relativamente grande da tutti i dati, molto probabilmente questa immagine non appartiene affatto al nostro database.

Per una descrizione più dettagliata, ti consiglio di fare riferimento all'elenco dei link esterni di Wikipedia.

Una piccola digressione. Il metodo del componente principale ha un'applicazione abbastanza ampia. Ad esempio, nel mio lavoro lo uso per evidenziare componenti di una certa scala (temporale o spaziale), direzione o frequenza in un array di dati. Può essere utilizzato come metodo per la compressione dei dati o come metodo per ridurre la dimensione originale di un campione multivariato.

Creazione del modello

Per compilare il campione di allenamento è stato utilizzato il Face Database dell'Olivetti Research Lab (ORL), composto da 10 fotografie di 40 persone diverse ciascuna:

Per descrivere l'implementazione dell'algoritmo, inserirò qui schermate con funzioni ed espressioni di MathCAD e le commenterò. Andare.

FaceNums specifica un vettore di numeri di volti da utilizzare nell'allenamento. varNums imposta il numero della variante (secondo la descrizione del database, abbiamo 40 directory, ciascuna con 10 file immagine della stessa faccia). Il nostro set di allenamento è composto da 4 immagini.
Successivamente, chiamiamo la funzione ReadData. Implementa la lettura sequenziale dei dati e la traduzione dell'immagine in un vettore (funzione TwoD2OneD):

Quindi, in uscita abbiamo una matrice Ã, ogni colonna della quale è un'immagine "espansa" in un vettore. Tale vettore può essere visto come un punto in uno spazio multidimensionale, dove la dimensione è determinata dal numero di pixel. Nel nostro caso, le immagini 92x112 danno un vettore di 10304 elementi o definiscono un punto nello spazio 10304-dimensionale.

2. È necessario normalizzare tutte le immagini nel campione di addestramento sottraendo l'immagine media. Questo viene fatto in modo da lasciare solo informazioni univoche, rimuovendo elementi comuni a tutte le immagini.

La funzione AverageImg legge e restituisce un vettore di medie. Se "piegheremo" questo vettore in un'immagine, vedremo una "faccia media":

La funzione Normalizza sottrae un vettore di medie da ciascuna immagine e restituisce il campione medio:

3. Il passaggio successivo consiste nel calcolare gli autovettori (aka autofaces) u e i pesi w per ciascuna immagine nel set di addestramento. In altre parole, è una transizione verso un nuovo spazio.

Calcoliamo la matrice di covarianza, poi troviamo le componenti principali (sono anche autovettori) e calcoliamo i pesi. Chi conoscerà più da vicino l'algoritmo entrerà in matematica. La funzione restituisce una matrice di peso, autovettori e autovalori. Questi sono tutti i dati necessari per mappare il nuovo spazio. Nel nostro caso, stiamo lavorando con uno spazio a 4 dimensioni, in base al numero di elementi nel campione di addestramento, le restanti 10304 - 4 = 10300 dimensioni sono degenerate, non le prendiamo in considerazione.

In generale, non abbiamo bisogno di autovalori, ma da essi possiamo ricavare alcune informazioni utili. Diamo un'occhiata a loro:

Gli autovalori mostrano infatti la varianza lungo ciascuno degli assi delle componenti principali (ogni componente corrisponde ad una dimensione nello spazio). Guarda l'espressione a destra, la somma di questo vettore = 1, e ogni elemento mostra il contributo alla varianza totale dei dati. Vediamo che le componenti principali 1 e 3 sommano fino a 0,82. Quelli. Le dimensioni 1 e 3 contengono l'82% di tutte le informazioni. La 2a dimensione è crollata e la 4a contiene il 18% delle informazioni e non ne abbiamo bisogno.

Riconoscimento

Il modello è stato realizzato. proveremo.

Creiamo una nuova selezione di 24 elementi. I primi 4 elementi sono gli stessi del campione di addestramento. Il resto sono versioni diverse di immagini dall'esempio di formazione:

Successivamente, carichiamo i dati e li passiamo alla procedura Riconosci. In esso, ogni immagine viene mediata, mappata allo spazio dei componenti principali e vengono trovati i pesi w. Dopo che il vettore w è noto, è necessario determinare a quale degli oggetti esistenti è più vicino. Per questo viene utilizzata la funzione dist (invece della classica distanza euclidea nei problemi di riconoscimento di pattern, è meglio usare un'altra metrica: la distanza di Mahalanobis). Viene trovata la distanza e l'indice minimi dell'oggetto a cui l'immagine data è più vicina.

Su un campione di 24 oggetti mostrato sopra, l'efficienza del classificatore è del 100%. Ma c'è un avvertimento. Se inseriamo un'immagine che non è nel database originale, verrà comunque calcolato il vettore w e verrà trovata la distanza minima. Pertanto, il criterio O viene introdotto se la distanza minima< O значит изображение принадлежит к классу распознаваемых, если минимальное расстояние >O, allora non c'è tale immagine nel database. Il valore di questo criterio è scelto empiricamente. Per questo modello, ho scelto O = 2,2.

Facciamo un campione di facce che non sono in quella di addestramento e vediamo con quanta efficacia il classificatore eliminerà i falsi campioni.

Su 24 campioni, abbiamo 4 falsi positivi. Quelli. l'efficienza è stata dell'83%.

Conclusione

In generale, un algoritmo semplice e originale. Ancora una volta dimostra che negli spazi di dimensioni superiori vengono “nascoste” molte informazioni utili, che possono essere utilizzate in vari modi.  Insieme ad altre tecniche avanzate, eigenface può essere utilizzato per migliorare l'efficienza nella risoluzione dei problemi.

Ad esempio, utilizziamo un semplice classificatore di distanza come classificatore. Tuttavia, potremmo applicare un algoritmo di classificazione più avanzato, come

ELABORAZIONE DEL SEGNALE DIGITALE

Argomento 18. RICONOSCIMENTO DI OGGETTI IMMAGINE

Qualsiasi conoscenza umana inizia con l'intuizione, procede verso concetti e termina con le idee.

Emanuele Kant. filosofo tedesco. 18esimo secolo

Quando un computer invece di una persona riconosce un cavallo in un'immagine, non è così lontano dalla verità, sebbene sia solo nella fase iniziale del processo di formazione della sua conoscenza su una persona.

Georgy Korgul, geofisico degli Urali. 20 ° secolo

Introduzione.

1. Pre-elaborazione delle immagini. Correzione della luminosità e del contrasto delle immagini. Istogrammi di luminosità. Allineamento dell'illuminazione delle immagini. Risoluzione spaziale migliorata.

2. Determinazione dei confini degli oggetti nell'immagine. Trovare i bordi in base al gradiente. Trovare i confini in base al laplaciano.

3. Selezione di oggetti nell'immagine. L'algoritmo della bacchetta magica. Algoritmo "forbici intelligenti". Segmentazione mediante tagli su grafici.

4. Selezione delle caratteristiche degli oggetti. Determinazione dell'area e del perimetro. Determinazione dei raggi di cerchi inscritti e circoscritti. Determinazione dei lati del rettangolo circoscritto. Determinazione del numero e della posizione relativa degli angoli. Determinazione dei momenti di inerzia di un oggetto.

5. Rilevamento e riconoscimento di oggetti immagine. Rilevamento di oggetti. Metodo per il confronto diretto di un oggetto con un'immagine di riferimento. metodo di correlazione. Metodi di riconoscimento basati su un sistema di caratteristiche.

INTRODUZIONE

Una considerazione dettagliata degli aspetti teorici di questo argomento va oltre lo scopo di questa sezione. Informazioni più complete su questi problemi possono essere ottenute da altre fonti. Di seguito sono riportati consigli pratici per l'implementazione di metodi individuali che sono direttamente correlati ai problemi più tipici che vengono risolti sulla base dell'uso degli algoritmi discussi nell'argomento precedente.

Il riconoscimento di oggetti nelle immagini dei sensori ottici (foto, immagini aeree, satellitari e altre immagini) è un'area tradizionale di elaborazione delle immagini. Allo stesso tempo, i metodi di riconoscimento degli oggetti hanno iniziato ad essere ampiamente utilizzati nei sistemi di sorveglianza televisiva automatica, nei raggi X e nella risonanza magnetica e in altri tipi di immagini inizialmente digitali, sia per la post-elaborazione che per l'elaborazione in tempo reale.

^ 18.1. Pre-elaborazione dell'IMMAGINE

Le operazioni di riconoscimento sulle immagini di determinati oggetti, di regola, sono precedute dall'elaborazione delle immagini per creare condizioni che aumentino l'efficienza e la qualità della selezione e del riconoscimento degli oggetti desiderati o studiati. I metodi di pre-elaborazione dipendono dagli obiettivi della ricerca, sono abbastanza diversi e possono includere, ad esempio, l'evidenziazione dei frammenti più informativi, il loro ingrandimento, l'ottenimento di immagini tridimensionali, la mappatura dei colori, l'implementazione di un'elevata risoluzione spaziale, l'aumento della risoluzione del contrasto, il miglioramento qualità dell'immagine, ecc. Considera tra loro quelli senza i quali, di regola, non può fare un solo compito tipico.

Luminosità dell'immagine e correzione del contrasto .

Le immagini inserite in un computer sono spesso a basso contrasto. Il contrasto debole, di regola, è dovuto a un'ampia gamma di luminosità riproducibile, spesso combinata con la non linearità delle caratteristiche di trasmissione del livello. Anche la natura della dipendenza della variazione della luminosità della tavolozza dei pixel dal valore minimo al valore massimo influisce sulla qualità dell'immagine. L'ottimale è una funzione lineare di modifica dell'intensità dei pixel. Con una caratteristica concava, l'immagine sarà più scura, con una caratteristica convessa, sarà più chiara. In entrambi i casi, le caratteristiche degli oggetti possono essere distorte e non ben identificate. La correzione (linearizzazione) della luminosità della tavolozza migliora notevolmente la qualità dell'immagine.

Il basso contrasto può anche essere dovuto al fatto che le variazioni nella funzione di luminosità dei pixel nell'immagine sono molto inferiori all'intervallo consentito della scala di luminosità. In questo caso, il contrasto dell'immagine viene aumentato "allungando" la reale gamma dinamica di luminosità al fondo scala utilizzando una trasformazione lineare elemento per elemento.

Un altro modo per correggere la luminosità della tavolozza è invertire l'immagine di input. Poiché è piuttosto difficile distinguere i segnali deboli su uno sfondo scuro, la forma inversa di rappresentazione di tali immagini ha un istogramma di luminosità diverso, che è più accettabile per l'osservazione e l'identificazione visiva.

Alcune attività di elaborazione delle immagini comportano la conversione di un'immagine in scala di grigi (molte gradazioni di luminosità) in un'immagine binaria (due gradazioni). La trasformazione viene effettuata in modo da ridurre la ridondanza informativa dell'immagine, per lasciare in essa solo le informazioni necessarie per risolvere un problema specifico. In un'immagine binaria, devono essere preservati alcuni dettagli (ad esempio, i contorni degli oggetti raffigurati) e devono essere escluse le caratteristiche insignificanti (sfondo).

L'elaborazione della soglia di un'immagine a mezzitoni consiste nel dividere tutti gli elementi dell'immagine in due classi A 1 e A 2 in base alla luminosità con un bordo A gr, ed eseguire l'opportuno filtraggio della soglia sostituendo i pixel dell'immagine con le classi di luminosità impostate. La scelta del bordo è determinata dal tipo di istogramma di luminosità dell'immagine originale. Per le immagini più semplici come disegni, testo dattiloscritto, ecc., che hanno una distribuzione bimodale, il confine è impostato al minimo tra le modalità di distribuzione. Nel caso generale, un'immagine può essere multimodale e se viene stabilita una corrispondenza sufficientemente affidabile tra gli oggetti e le corrispondenti modalità della loro luminosità, il filtraggio della soglia può anche prevedere diverse classi di luminosità dei pixel.

L'intervallo di luminosità dell'immagine nel computer può differire dall'intervallo di luminosità dell'immagine originale, ad esempio a causa della sottoesposizione. Ci sono due modi possibili per correggere la luminosità. Secondo il primo metodo, l'immagine viene visualizzata linearmente nell'intervallo di luminosità dell'immagine originale. Il secondo metodo prevede la limitazione della luminosità dei pixel nell'immagine elaborata ai livelli di soglia massimo e minimo e ha un'applicazione più ampia. La presenza dei toni più chiari e più scuri nell'immagine dà l'impressione di un buon contrasto, tuttavia, un contrasto eccessivo porta al fatto che le gradazioni massime influiscono sui mezzitoni e la maggior parte dei dettagli dell'immagine sono dipinti nei mezzitoni e un contrasto eccessivo può portare alla perdita di questi dettagli o renderne difficile la selezione.

Istogrammi di luminosità. Uno strumento per stimare i livelli di intensità dei pixel è un istogramma: una visualizzazione grafica di una caratteristica quantitativa della distribuzione probabilistica dell'intensità dei pixel (luminosità) in un'area selezionata di un'immagine. Al valore massimo di intensità dei pixel viene assegnato un livello di gradazione di intensità di 255 (colore bianco), al valore più scuro viene assegnato un valore di 0 (colore nero). Le intensità nell'intervallo da 0 a 255 hanno una scala di modifica lineare o impostata in base alla funzione di modifica accettata, ad esempio, migliorando i segnali deboli (scala di grigi) e attenuando i segnali forti (nella regione bianca), che aumenta lo spazio e il contrasto risoluzione dell'immagine o di determinate zone di interesse.

Un noto metodo per il miglioramento delle immagini basato sul calcolo del logaritmo dei coefficienti spettrali della trasformata di Fourier dell'immagine originale (calcolo del cepstrum). Quando il cepstrum viene riconvertito in un'immagine, l'istogramma dell'immagine viene equalizzato a causa della trasformazione logaritmica dello spettro dell'immagine.

Molte immagini sono caratterizzate da istogrammi con un'elevata concentrazione di linee in determinate aree della distribuzione dell'intensità. Spesso l'istogramma della distribuzione della luminosità dell'immagine è inclinato verso livelli bassi (la luminosità della maggior parte degli elementi è inferiore alla media). Uno dei metodi per migliorare la qualità di tali immagini è modificarne l'istogramma. L'equalizzazione dell'istogramma può essere eseguita in base all'esponenziazione del modulo dei coefficienti spettrali della trasformata di Fourier dell'immagine, mantenendo il segno e la fase dei coefficienti. Se indichiamo l'esponente α, allora per α<1 операция извлечения корня степени α уменьшает большие спектральные коэффициенты и увеличивает малые. Такое перераспределение энергии в частотной плоскости изображения приводит к более эффективному использованию динамического диапазона интенсивностей пикселей изображения в пространственной области.

La selezione di una buona maschera di controllo dell'istogramma dell'intensità dei pixel aumenta il contrasto, migliorando così la risoluzione del contrasto dei dettagli. Esistono comandi nei programmi di elaborazione che consentono di impostare i colori nella mappatura dei colori di immagini che presentano transizioni lisce o, al contrario, nitide dei dettagli visualizzati nell'area di interesse. Combinato con l'inversione del contrasto, che converte un'immagine negativa in un'immagine positiva, questo metodo migliora anche il contrasto dei dettagli dell'immagine fini e medi.

Esiste un arsenale abbastanza ampio di modelli e algoritmi matematici, la cui implementazione software può aumentare significativamente la risoluzione del contrasto delle immagini. Questi algoritmi si basano sui processi di filtraggio dell'immagine lineare e non lineare, che trasforma l'istogramma dell'intensità.

Allineamento dell'illuminazione delle immagini. Spesso, alcune aree dell'immagine sono troppo scure per poter vedere qualcosa al loro interno. Se aggiungi luminosità all'intera immagine, le aree chiare inizialmente potrebbero essere sovraesposte. Per migliorare l'aspetto dell'immagine in questi casi, viene applicato il metodo di equalizzazione dell'illuminazione.

L'illuminazione cambia nello spazio abbastanza lentamente e può essere considerata un segnale a bassa frequenza. L'immagine stessa può essere considerata, in media, un segnale a frequenza più alta. Se questi segnali venissero aggiunti durante il processo fotografico, potrebbero essere separati utilizzando filtri convenzionali. Tuttavia, in una fotografia reale, otteniamo il prodotto dell'immagine che vogliamo vedere e la mappa della luce. E poiché questi segnali non vengono aggiunti, ma moltiplicati, non sarà possibile eliminare l'illuminazione irregolare con un semplice filtraggio.

Per risolvere tali problemi, viene utilizzata l'elaborazione omomorfa. L'idea dell'elaborazione è di ridurre un problema non lineare a uno lineare. Ad esempio, si può ridurre il problema della separazione dei segnali moltiplicati al problema della separazione dei segnali combinati. Per fare ciò, devi prendere il logaritmo del prodotto delle immagini, che sarà uguale alla somma dei logaritmi dei fattori. In questo caso, il problema di separare il prodotto dei segnali si riduce al problema di separare la somma dei segnali di bassa frequenza e di alta frequenza e viene risolto utilizzando un filtro ad alta frequenza che rimuove le basse frequenze dalla somma dei segnali. Resta da prendere l'esponente dal segnale ricevuto per tornare alla scala di ampiezza originale.

Il filtro RF può essere implementato come segue. Innanzitutto, all'immagine viene applicata un'operazione di sfocatura (filtro passa-basso), quindi la sfocatura viene sottratta dall'immagine originale. Il miglior raggio di sfocatura dipende dall'immagine specifica. Puoi iniziare a sperimentare con un raggio di circa dieci pixel.

Di solito, per sfocare l'immagine viene utilizzato un filtro gaussiano bidimensionale, che ha la forma h(x, y) = A exp(-(x 2 +y 2) / 2 2). Qui A è una costante di normalizzazione (la somma di tutti i coefficienti del filtro deve essere uguale a 1), σ è la “larghezza” del filtro, che controlla il grado di sfocatura.

Il calcolo diretto di una convoluzione bidimensionale con un tale kernel richiede calcoli di grandi dimensioni anche con una dimensione del kernel relativamente piccola. Tuttavia, un effetto equivalente può essere ottenuto filtrando con una gaussiana unidimensionale prima le righe dell'immagine e poi le colonne dell'immagine risultante. L'effetto ottenuto dall'equalizzazione della luce potrebbe essere troppo forte (le aree scure avranno la stessa luminosità di quelle chiare). Per ridurre l'effetto, puoi semplicemente mescolare l'immagine elaborata con l'originale in una certa proporzione.

Miglioramento della risoluzione spaziale . L'interpretazione delle immagini è strettamente correlata alla qualità della rappresentazione di piccoli dettagli non distorti. Allo stesso tempo, è necessario che con un aumento dei frammenti non vi sia un deterioramento della risoluzione dell'immagine durante l'esecuzione di operazioni matematiche di interpolazione 2D della funzione della distribuzione spaziale dell'intensità dei pixel nelle righe e nelle colonne della matrice dell'immagine . Un fattore importante nell'identificazione degli oggetti è anche la localizzazione e la visualizzazione di zone della stessa luminosità o colore, anche se queste aree hanno dimensioni di diversi pixel.

La nitidezza delle immagini nei programmi professionali viene corretta, di norma, determinando i valori ottimali di luminosità e contrasto selezionando le opzioni appropriate:

A) "valori" - il grado di influenza dell'impatto sulla nitidezza dell'immagine;

B) "raggio" - lo spessore del contorno di nitidezza;

C) "soglia di discriminazione": determinazione dei contorni degli oggetti impostando la differenza tra i valori di intensità dei pixel vicini, sufficiente affinché il programma aumenti il ​​contrasto tra di loro.

Alcuni programmi contengono l'impostazione automatica del rapporto ottimale di contrasto e luminosità, mantenendo la nitidezza dell'immagine richiesta.

Un ruolo importante nell'elaborazione delle immagini è svolto dagli algoritmi di rank filtering che consentono di eliminare la "sfocatura" dei dettagli (migliorarne la messa a fuoco) scegliendo una maschera bidimensionale di n × n pixel, eseguendo un'operazione di variazione dei valori di intensità dei pixel ​​entro la maschera specificata, e assegnando al pixel centrale un valore pari al valore massimo per ranking. Il tipo di rango include anche la procedura di filtraggio mediano, che elimina i segnali casuali non correlati e il rumore dell'impulso nell'immagine senza "sfocare" i bruschi cambiamenti di luminosità ai confini degli oggetti.

L'uso informativo del filtraggio lineare è dovuto alla sua capacità di correggere vari tipi di distorsioni derivanti dall'imperfezione dei dispositivi di formazione dell'immagine. Mediante il filtraggio lineare, è possibile ridurre l'effetto del rumore di fluttuazione e di altri difetti sulle immagini riprodotte nella modalità di aumento del contrasto dei dettagli a basso contrasto con un aumento della scala delle aree di interesse.

La correzione delle distorsioni dell'apertura delle immagini in assenza della componente di rumore del segnale viene effettuata mediante filtraggio inverso (deconvoluzione). Tuttavia, tieni presente che i filtri di deconvoluzione hanno un guadagno di dispersione del rumore maggiore di 1 e, invece di migliorare l'immagine, il rumore potrebbe aumentare.

Sono considerati promettenti metodi di filtraggio non lineare basati su maschere di frequenza, che consentono di ridurre l'influenza delle componenti a bassa frequenza del segnale dell'immagine e migliorare l'influenza delle componenti ad alta frequenza, aumentando la risoluzione spaziale dei dettagli descritti nello spettro dell'immagine da frequenze spaziali più elevate.

^ 18.2. DETERMINAZIONE DEI CONFINI DELL'OGGETTO NELL'IMMAGINE

Dal punto di vista del riconoscimento e dell'analisi degli oggetti nell'immagine, i più informativi non sono i valori della luminosità degli oggetti, ma le caratteristiche dei loro confini: i contorni. In altre parole, l'informazione principale è contenuta non nella luminosità delle singole aree, ma nei loro contorni. Il compito di selezionare i contorni è costruire un'immagine esatta dei confini degli oggetti e dei contorni di aree omogenee.

Di norma, il bordo di un oggetto in una fotografia viene visualizzato da una differenza di luminosità tra due aree relativamente uniformi. Ma la differenza di luminosità può anche essere causata dalla trama del soggetto, dalle ombre, dall'abbagliamento, dalle differenze di luce, ecc.

Chiameremo il contorno dell'immagine l'insieme dei suoi pixel, in prossimità dei quali si verifica un brusco cambiamento nella funzione di luminosità. Poiché nell'elaborazione digitale l'immagine è rappresentata in funzione di argomenti interi, i contorni sono rappresentati da linee con una larghezza di almeno un pixel. Se l'immagine originale, oltre alle aree di luminosità costante, contiene aree con luminosità che cambia in modo graduale, la continuità delle linee di contorno non è garantita. D'altra parte, se c'è del rumore sull'immagine "costante a tratti", allora i contorni "extra" possono essere rilevati in punti che non sono i confini delle regioni.

Quando si sviluppano algoritmi per la selezione dei contorni, è necessario tenere conto delle caratteristiche indicate del comportamento delle curve di livello. La speciale elaborazione aggiuntiva dei contorni selezionati consente di eliminare gli spazi vuoti e di eliminare le false linee di contorno.

La procedura per costruire un'immagine binaria dei confini degli oggetti consiste solitamente in due operazioni successive: il rilevamento del contorno e la loro soglia.

L'immagine originale è sottoposta a un'elaborazione lineare o non lineare, con una risposta ai cambiamenti di luminosità. Come risultato di questa operazione, si forma un'immagine, la cui funzione di luminosità differisce in modo significativo da zero solo nelle aree di brusche variazioni della luminosità dell'immagine. Un oggetto contorno viene formato da questa immagine mediante soglia. La scelta della soglia nella seconda fase dovrebbe essere effettuata sulla base delle seguenti considerazioni. Se la soglia è troppo alta, potrebbero apparire interruzioni di contorno e non verranno rilevate deboli differenze di luminosità. Se la soglia è troppo bassa, possono apparire falsi contorni a causa del rumore e della disomogeneità delle aree.

Trovare i bordi in base al gradiente. Uno dei modi più semplici per identificare i confini è la differenziazione spaziale della funzione di luminosità. Per una funzione di luminosità bidimensionale A(x, y), le differenze nelle direzioni x e y sono registrate dalle derivate parziali A(x, y)/x e A(x, y)/y, che sono proporzionali a i tassi di luminosità cambiano nelle direzioni corrispondenti.

Riso. 18.2.1.


La selezione delle differenze di luminosità è illustrata in Fig. 18.2.1. Si può notare che la sottolineatura dei contorni perpendicolari all'asse x è fornita dalla derivata A(x, y)/x (Fig. b), e la sottolineatura dei contorni perpendicolari all'asse y è fornita da A( x, y)/y (Fig. . in).

Nei problemi pratici, è necessario selezionare i contorni, la cui direzione è arbitraria. A tal fine è possibile utilizzare il modulo gradiente della funzione di luminosità

|A(x, y)| = ,

Che è proporzionale alla velocità di variazione massima (in direzione) della funzione di luminosità in un dato punto e non dipende dalla direzione del contorno. Il modulo del gradiente, a differenza delle derivate parziali, assume solo valori non negativi, pertanto, nell'immagine risultante (Fig. d), i punti corrispondenti ai contorni hanno un livello di luminosità maggiore.

Per le immagini digitali, gli analoghi delle derivate parziali e del modulo del gradiente sono funzioni di differenza.

Un esempio pratico di rilevamento del confine in un'immagine fotografica è mostrato in fig. 18.2.2. L'immagine originale (1) è monocromatica. L'immagine (2) mostra il risultato del calcolo del vettore del gradiente di luminosità Аx, y) = (A/x, A/y). Come si può vedere nella figura, nei punti di grande differenza di luminosità, il gradiente ha una grande lunghezza. Filtrando i pixel con una lunghezza del gradiente maggiore di una certa soglia , otterremo un'immagine dei bordi (3).



Riso. 18.2.2.
Lo svantaggio dell'algoritmo è il salto del bordo con piccole differenze di luminosità e l'inclusione di dettagli dell'immagine con grandi cambiamenti di luminosità (pelle di scoiattolo) nel numero di bordi. Quando l'immagine è disturbata, anche la mappa dei punti limite sarà inquinata dal rumore, poiché non si tiene conto del fatto che i punti limite corrispondono non solo a differenze di luminosità, ma anche a differenze di luminosità tra aree relativamente monotone.

Per ridurre l'influenza di questo svantaggio, l'immagine viene prima sottoposta a un filtraggio gaussiano levigante. Con il filtro anti-aliasing, i dettagli fini e non importanti vengono sfocati più velocemente delle differenze tra le aree. Il risultato dell'operazione è visibile nell'immagine (4). Tuttavia, allo stesso tempo, i confini chiaramente definiti si confondono in linee in grassetto.

Il gradiente di luminosità in ogni punto è caratterizzato da lunghezza e direzione. Sopra, durante la ricerca dei punti limite, è stata utilizzata solo la lunghezza del vettore. La direzione del gradiente è la direzione di massimo incremento della funzione, che consente di utilizzare la procedura di soppressione non massima. In questa procedura, per ogni punto, viene considerato un segmento lungo diversi pixel, orientato nella direzione del gradiente e centrato sul pixel considerato. Un pixel è considerato massimo se e solo se la lunghezza del gradiente in esso contenuto è massima tra tutte le lunghezze dei gradienti dei pixel del segmento. I pixel limite possono essere considerati come tutti i pixel massimi con lunghezze del gradiente maggiori di una certa soglia. Il gradiente di luminosità in ogni punto è perpendicolare al confine, quindi non rimangono linee spesse dopo la soppressione non massima. Su ciascuna sezione perpendicolare della linea spessa, ci sarà un pixel con la lunghezza massima del gradiente.

La perpendicolarità del gradiente di luminosità al bordo può essere utilizzata per tracciare il bordo partendo da alcuni pixel del bordo. Tale tracciamento viene utilizzato nel filtraggio dell'isteresi dei pixel massimi. L'idea del filtro dell'isteresi è che un contorno lungo e stabile del bordo molto probabilmente contiene pixel con una differenza di luminosità particolarmente grande e, partendo da tale pixel, il contorno può essere tracciato spostandosi lungo i pixel del bordo con una differenza di luminosità minore.


Riso. 18.2.3.
Quando si esegue il filtraggio dell'isteresi, non vengono introdotti uno, ma due valori di soglia. Quello più piccolo () corrisponde alla lunghezza minima del gradiente a cui un pixel può essere riconosciuto come pixel limite. Più grande (), corrisponde alla lunghezza minima del gradiente, alla quale il pixel può inizializzare il contorno. Dopo che il contorno è stato inizializzato nel pixel massimo P con una lunghezza del gradiente maggiore di , viene considerato ogni pixel massimo adiacente Q. Se pixel Q ha una lunghezza del gradiente maggiore di  e l'angolo tra i vettori PQ e ( P) è vicino a 90 o , quindi P viene aggiunto al contorno e il processo procede ricorsivamente a Q. Il suo risultato per l'immagine originale in fig. 18.2.2 è mostrato in fig. 18.2.3.

Pertanto, l'algoritmo per trovare i confini in base al gradiente consiste nell'applicazione sequenziale delle seguenti operazioni:

Filtraggio di smoothing gaussiano;

Trovare il gradiente di luminosità in ogni pixel;

Trovare i pixel massimi;

Filtraggio di isteresi dei pixel massimi.

Questo algoritmo è chiamato algoritmo Canny ed è più comunemente usato per trovare i confini.

Trovare i confini in base al laplaciano. È noto che una condizione necessaria e sufficiente per il valore estremo della derivata prima di una funzione in un punto arbitrario è l'uguaglianza della derivata seconda a zero in questo punto, e la derivata seconda deve avere segni diversi sui lati opposti della punto.

Nella versione bidimensionale, l'analogo della derivata seconda è il laplaciano - l'operatore scalare   f) = (2 f/x + 2 f/y).


Riso. 18.2.3.
Trovare i confini dell'immagine usando il laplaciano può essere fatto per analogia con il caso unidimensionale: i punti di confine sono i punti in cui il laplaciano è uguale a zero e attorno ai quali ha segni diversi. La valutazione del Laplaciano mediante filtraggio lineare è preceduta anche da un filtraggio di smoothing gaussiano per ridurre la sensibilità dell'algoritmo al rumore. Il livellamento gaussiano e la ricerca del laplaciano possono essere eseguiti contemporaneamente, quindi trovare i confini utilizzando un tale filtro è più veloce rispetto all'utilizzo dell'algoritmo Canny. Il filtro viene utilizzato nei sistemi in cui sia la qualità del risultato (di solito inferiore all'algoritmo Canny) che la velocità sono importanti. Per ridurre la sensibilità a dettagli irrilevanti, si possono anche escludere dal numero di punti limite quelli in cui la lunghezza del gradiente è inferiore ad una certa soglia (Fig. 18.2.3).

^ 18.3. SELEZIONE DEGLI OGGETTI NELL'IMMAGINE

Quando si lavora con un'immagine, spesso diventa necessario separare una parte significativa per l'utente (l'oggetto) da tutto il resto (lo sfondo). Quindi, ad esempio, nelle immagini mediche, un determinato oggetto viene assegnato per misurarne i parametri. Gli algoritmi per risolvere questo problema sono interattivi, perché solo l'utente può determinare qual è l'oggetto di interesse e qual è lo sfondo.

In linea di principio, il compito può essere risolto nel modo più semplice: l'utente circonda semplicemente l'oggetto con il cursore del mouse, ma per oggetti complessi ciò richiederà sforzi e tempo considerevoli.

Algoritmo "Bacchetta magica" (Bacchetta magica) è stato uno dei primi algoritmi di segmentazione interattiva. L'utente specifica in sequenza i punti dell'oggetto e l'algoritmo seleziona i pixel vicini con un colore simile e (a discrezione dell'utente) aggiunge l'area selezionata all'oggetto. Per valutare la "somiglianza" l'utente imposta la matrice delle soglie di sensibilità per la distanza tra i colori. Più è grande, più pixel verranno selezionati in un passaggio. In questo caso, solo i pixel collegati vengono assegnati all'area dei colori "simili".

L'algoritmo funziona bene quando si selezionano oggetti di colore sufficientemente monotono. Con forti variazioni di colore, è impossibile separare accuratamente l'oggetto dallo sfondo utilizzando questo algoritmo. Se la soglia di sensibilità è troppo bassa, una parte significativa dell'oggetto potrebbe non essere evidenziata. L'aumento della soglia provoca la "fuoriuscita" della selezione all'esterno dell'oggetto. Nel caso di un oggetto colorato o di un bordo sfocato tra lo sfondo e l'oggetto, l'algoritmo è praticamente indifeso.

Algoritmo "forbici intelligenti" utilizzato dal 1996, ha guadagnato popolarità ed è stato integrato nel popolare editor di foto Adobe Photoshop. Quando si utilizza l'algoritmo, l'utente traccia il confine tra l'oggetto e lo sfondo, specificando i punti sul confine con un certo spazio e le "forbici intelligenti" tracciano una linea di confine tra i punti successivamente specificati.


Riso. 18.3.1.
Immagina un'immagine raster come un grafico (Figura 18.3.1) con i bordi formati dai lati dei pixel. Quando l'utente specifica due punti P e Q consecutivi, l'algoritmo "forbici" calcola la distanza minima tra i punti P e Q lungo i bordi del grafico, mentre la lunghezza geometrica condizionale di ciascun bordo lungo questo percorso ha una relazione inversa con il valore della differenza di colore dei pixel lungo i suoi lati. Poiché i bordi corrispondenti a forti variazioni di colore avranno una lunghezza convenzionale inferiore, le "forbici intelligenti" tendono a disegnare il bordo lungo tali bordi.

Le "forbici intelligenti" accelerano notevolmente il processo di selezione di un oggetto. Tuttavia, non funzionano molto bene con uno sfondo colorato e/o un oggetto colorato. In questi casi, è necessario specificare un numero maggiore di punti limite.

Segmentazione mediante tagli su grafici. Anche il terzo modo per evidenziare un oggetto sullo sfondo si basa sulla teoria dei grafi. L'utente contrassegna semplicemente un insieme A di pixel appartenenti all'oggetto e un insieme B di pixel appartenenti allo sfondo. Poiché questi pixel non devono essere vicini al bordo, questo markup non richiede molto sforzo da parte dell'utente. Il risultato dell'algoritmo è una segmentazione in cui l'intero insieme A appartiene all'oggetto e B allo sfondo.

Se il risultato della selezione non soddisfa l'utente la prima volta, aggiunge pixel ai set originali, contrassegnandoli ulteriormente sull'immagine. Ad esempio, se l'algoritmo ha assegnato erroneamente un pezzo di un oggetto allo sfondo, l'utente contrassegna una parte dei pixel di questo pezzo come pixel dell'oggetto (set A). Il risultato del riavvio dell'algoritmo è una segmentazione raffinata.

Vediamo come funziona l'algoritmo. Costruiamo un grafico su un raster come segue. Posizioniamo i vertici dei pixel del grafico al centro di ogni pixel e per colore del vertice indicheremo il colore del pixel. Colleghiamo ogni vertice con i vertici vicini e otteniamo otto bordi che collegano i centri dei pixel vicini. Assegna un peso a ciascun bordo:

(/L) exp(- (C 2 , C 2)),

Dove L è la lunghezza geometrica del bordo, C 1 e C 2 sono i colori dei vertici collegati dal bordo, λ e σ sono alcuni parametri (positivi), (..) è la matrice di sensibilità del gradiente di colore. Questo peso è minore, maggiore è la differenza tra i colori dei vertici.

Aggiungiamo due vertici terminali al grafo, chiamati sorgente e sink, e li colleghiamo con archi a ciascun vertice del grafo. Ai bordi che collegano la sorgente con i vertici dell'insieme A e ai bordi che collegano il sink con i vertici dell'insieme B verrà assegnato un peso infinito.

Considera la distribuzione dei colori dei vertici dell'insieme A (ad esempio, come un istogramma). Per tutti i vertici dei pixel non dell'insieme A, assegniamo ai bordi che li collegano alla sorgente un peso proporzionale alla consistenza del loro colore con questa distribuzione cromatica, e il peso del bordo sarà tanto maggiore quanto più "simile" sarà colore del vertice ai colori dei vertici dell'insieme A. Simile Eseguiamo la procedura per l'insieme B e gli spigoli che collegano i vertici del pixel con il drain.

"Tagliamo" tutti i bordi del grafico in due insiemi non intersecanti - source e sink, e assumiamo che i vertici nel set sorgente corrispondano ai pixel dell'oggetto e il resto nel set sink corrisponda ai pixel di sfondo. Il numero di tagli possibili è 2 P , dove P è il numero di pixel, poiché ogni vertice di pixel può essere assegnato sia alla sorgente che al sink set.


Riso. 18.3.2.
Il peso di taglio è la somma dei pesi di tutti i bordi tagliati, ad eccezione dei bordi con peso infinito. Il taglio minimo è il taglio con il peso minimo, mentre i pixel sorgente di questo taglio saranno rispettivamente relativi ai pixel dell'oggetto, e i pixel stock allo sfondo. Il confine tra l'oggetto e lo sfondo verrà tracciato, se possibile, tra pixel con colori molto diversi.

Una separazione ideale, ovviamente, non può esistere. Ad esempio, un'area dell'immagine può essere di colore simile allo sfondo (pixel del set B), ma circondata da pixel del set A e non separata da essi da un bordo netto. In questi casi, la scelta del parametro λ nella formula del peso del bordo trova un equilibrio tra gli ultimi due punti. All'aumentare del valore di λ, aumenta l'importanza del confine tra lo sfondo e l'oggetto che passa tra pixel con colori diversi, e con una diminuzione, aumenta l'importanza che pixel di colore simile ai pixel dell'insieme A (o B ) sono assegnati all'oggetto ( sfondo). Un esempio di selezione di un oggetto è mostrato in fig. 18.3.2.

^ 18.4. Estrazione delle caratteristiche degli oggetti

L'estrazione delle caratteristiche consente di semplificare l'implementazione del riconoscimento o dell'identificazione degli oggetti. Quando si scelgono le caratteristiche più informative, è necessario tenere conto sia delle proprietà degli oggetti stessi che delle capacità di risoluzione dei generatori di segnali di immagine primari. Eseguiremo l'estrazione delle caratteristiche utilizzando l'esempio dell'elaborazione di immagini monocromatiche (a un solo livello). Nelle immagini a colori, gli algoritmi considerati possono essere applicati a ciascun colore separatamente.

Durante l'elaborazione, sono preferibili le seguenti caratteristiche degli oggetti:

sono l'area e il perimetro dell'immagine dell'oggetto;

- le dimensioni delle forme geometriche più semplici iscritte (cerchi, rettangoli, triangoli, ecc.);

- il numero e la posizione relativa degli angoli;

sono i momenti di inerzia delle immagini degli oggetti.

Una caratteristica importante della maggior parte delle caratteristiche geometriche è l'invarianza rispetto alla rotazione dell'immagine dell'oggetto e, normalizzando le caratteristiche geometriche l'una rispetto all'altra, si ottiene l'invarianza rispetto alla scala dell'immagine dell'oggetto.

Determinazione dell'area e del perimetro. L'area dell'immagine di un oggetto viene calcolata contando il numero di elementi relativi all'oggetto:

A=S(x, y), S(x, y) = ,

Dove L è l'insieme di coordinate dell'array S(x, y) appartenente all'oggetto selezionato.

Il perimetro dell'immagine dell'oggetto P viene calcolato dopo aver selezionato i confini dell'oggetto sommando l'insieme dei punti di contorno dell'immagine dell'oggetto.

In base alle caratteristiche selezionate, una caratteristica normalizzata invariante alla scala dell'immagine U = A/P 2 o V = P/.

Determinazione dei raggi di cerchi inscritti e circoscritti (Fig. 18.4.1) si compone di due fasi.


Riso. 18.4.1.
1. Determinazione delle coordinate del centro geometrico dell'immagine dell'oggetto:

X c \u003d xS (x, y) / S (x, y), Y c \u003d yS (x, y) / S (x, y),

Dove X e y sono i numeri di righe e colonne di tutti i pixel S(x, y) inclusi nell'oggetto.

2. Calcolo delle distanze minima e massima dal centro ai bordi dell'immagine dell'oggetto.

R(x, y) = .

R max \u003d r (x, y max); R min \u003d r (x, y min), dove x, y  P (punti perimetrali).

La caratteristica normalizzata R′ = R max ⁄ R min è invariante rispetto alla scala dell'immagine dell'oggetto.


Riso. 18.4.2.
Determinazione dei lati del rettangolo circoscritto (Fig. 18.4.2) viene eseguita come segue. Vengono determinati i valori massimo e minimo delle ascisse e delle ordinate dell'immagine dell'oggetto x max e x min , y max e y min, dopodiché vengono determinate l'altezza e la base del rettangolo:

L \u003d x max - x min, H \u003d y max - y min.

Questa caratteristica non è invariante rispetto alla rotazione dell'immagine dell'oggetto.

Determinazione del numero e della posizione relativa degli angoli. Il modo classico per determinare i punti d'angolo di un'immagine di un oggetto è analizzare un piccolo frammento del contorno in prossimità di un dato punto e determinare il raggio della sua curvatura. Se il raggio è inferiore alla soglia impostata, è un elemento d'angolo, altrimenti non lo è.


Riso. 18.4.3.
Da un punto di vista pratico, sembra preferibile un algoritmo più semplice. Consiste nella stima delle distanze tra i punti iniziale e finale di un frammento di contorno, ad esempio tra elementi di contorno con numeri di serie k - 2 e k + 2 in Fig. 18.4.3.

Siano x(k) e y(k) rispettivamente l'ascissa e l'ordinata degli elementi di contorno. Quindi la regola decisionale potrebbe assomigliare a questa:

(|x(k-2)−x(k+2)|+|y(k−2)−y(k+2)| ≤H).

Se la condizione è soddisfatta, il punto del profilo dato appartiene all'insieme dei punti d'angolo L. Qui H è il valore di soglia scelto tenendo conto delle proprietà degli oggetti.

Determinazione dei momenti di inerzia di un oggetto. Il termine "momenti di inerzia dell'immagine di un oggetto" non ha nulla a che vedere con la meccanica. Proprio per calcolare l'attributo indicato si utilizzano espressioni matematiche, simili al calcolo dei momenti di inerzia di un corpo materiale, dove al posto dei valori di massa dei singoli punti del corpo, i valori di illuminazione al corrispondente i punti della sua immagine vengono sostituiti. I momenti di inerzia sono caratteristiche informative per il successivo riconoscimento del modello.



Riso. 18.4.4.
Indichiamo i principali momenti di inerzia richiesti dall'immagine dell'oggetto attraverso J 1 e J 2 . Per trovare J 1 e J 2 , è necessario prima determinare i cosiddetti momenti intermedi J x e J y , cioè momenti di inerzia rispetto agli assi verticale e orizzontale del sistema di coordinate, nonché al momento misto J x, y (Fig. 18.4.4a).

Ordine di calcolo:

1. Vengono determinate le coordinate del centro di "gravità" (centro energetico) dell'immagine dell'oggetto.

X ce = xA(x, y) /A(x, y), Y ce = yA(x, y) /A(x, y),

2. Si determinano i momenti intermedi J x , J y , J x , y.

J x = [(x- X ce) 2 A(x, y)], Y x = [(y- Y ce) 2 A(x, y)],

J xy \u003d [(x- X ce) (y- Y ce) A (x, y)].

3. Si calcolano i momenti principali.

J 1,2 = .

^ 18.5. Rilevamento e riconoscimento di oggetti IMAGE

Rilevamento di oggetti. Il rilevamento (rivelazione) di immagini di oggetti in un'immagine distorta da rumore e rumore può essere definito come una procedura per verificare una determinata condizione per confrontare due numeri: il risultato della trasformazione dell'immagine analizzata e un determinato valore di soglia:

L ≥ P. (18.5.1)

Qui L[.] è l'operatore di trasformazione dell'immagine originale, P[.] è l'operatore di formazione del valore di soglia. La decisione sulla presenza di un oggetto viene presa se la condizione è soddisfatta. La qualità del rilevamento è caratterizzata dalla probabilità di soddisfare la condizione in presenza di un oggetto nell'immagine analizzata.

La forma specifica degli operatori L[.], P[.] e la qualità del rilevamento dipendono dalla disponibilità di informazioni a priori sugli oggetti previsti, sul rumore, sull'interferenza e sulla distorsione. La base per determinare i parametri ottimali degli operatori è la teoria delle decisioni statistiche.

Quindi, ad esempio, quando si selezionano oggetti puntiformi, la forma dell'immagine dell'oggetto è determinata in modo univoco dalla funzione del punto di dispersione della lente, che può essere considerata nota, mentre il problema si riduce alla classica procedura per rilevare un segnale di un forma sullo sfondo del rumore normale additivo con un valore medio zero. In questo caso, gli operatori di trasformazione sono integrali di correlazione calcolati utilizzando una data descrizione rispettivamente dell'immagine dell'oggetto noto e del rumore tipico. L'identificazione consiste nel confrontare l'immagine di un oggetto con gli standard di una data classe. La decisione sull'oggetto viene presa sulla base della migliore corrispondenza.

Metodo per il confronto diretto di un oggetto con un'immagine di riferimento. Sia S(x, y) l'immagine originale dell'oggetto, F(x, y) sia l'immagine di riferimento. L'algoritmo di confronto diretto ha la forma:

T = (S(x, y) - F(x, y)) 2 ≤ D, (18.5.2)

Dove D è la soglia di differenza.

Il metodo è semplice e può essere facilmente implementato. Tuttavia, in presenza di fattori destabilizzanti in condizioni reali, l'affidabilità del metodo è bassa. Per un valore maggiore della soglia D, la condizione (18.5.2) può essere soddisfatta da vari oggetti e possono verificarsi errori associati a una errata identificazione dell'oggetto (errori del primo tipo). Quando D diminuisce, possono verificarsi errori come il salto di un oggetto (errori del secondo tipo). Aggiustando il valore di D si può solo modificare il rapporto tra le probabilità di accadimento di errori del primo e del secondo tipo secondo un determinato criterio di ottimalità.

metodo di correlazione basato sul calcolo della correlazione incrociata tra oggetti e standard. Dall'insieme di k opzioni alternative, viene selezionato l'oggetto (o standard), al quale si ottiene la massima quantità di correlazione incrociata:

K(k) = S k (x, y) F k (x, y). (18.5.3)

Quando si identificano gli oggetti, è conveniente utilizzare i coefficienti di correlazione, che, in prima approssimazione, forniscono anche una stima della probabilità di classificare un oggetto secondo un determinato standard:

R(k) = K(k)/K max (k), K max (k) = F k 2 (x, y), (18.5.3)

Dove K max (k) sono i valori di autocorrelazione degli standard.

Il metodo di correlazione è più affidabile, ma richiede molto più calcolo. Ma quando si elaborano immagini binarie, questo non è così significativo, poiché la moltiplicazione di numeri a un bit si riduce a una semplice operazione logica "AND".

I metodi sopra considerati richiedono lo stesso orientamento delle immagini dell'oggetto e dello standard, il loro allineamento in coordinate spaziali e il mantenimento delle stesse scale.

Metodi di riconoscimento basati su un sistema di funzionalità utilizzare anche standard oggetto, ma come elementi di confronto vengono utilizzate le caratteristiche dell'oggetto e lo standard, il che consente di ridurre la quantità di dati di riferimento e il tempo di elaborazione delle informazioni. Tuttavia, va tenuto presente che, in pratica, la selezione delle caratteristiche degli oggetti viene sempre effettuata con qualche errore, e, pertanto, è necessario individuare e tenere conto della natura e del grado di possibile dispersione delle stime di le caratteristiche utilizzate per ciascuno degli oggetti previsti, ad es utilizzare gli istogrammi della distribuzione dei valori delle caratteristiche.

Con un gran numero di possibili varianti di oggetti, si consiglia un algoritmo multistadio (gerarchico). Allo stesso tempo, in ogni fase del riconoscimento, viene utilizzata una delle caratteristiche dell'oggetto (area, perimetro, raggi dei cerchi inscritti e circoscritti, momenti di inerzia, numero e posizione degli angoli, ecc.). Ai livelli inferiori vengono utilizzate funzionalità che non richiedono grandi costi computazionali (ad esempio aree e perimetri di oggetti) e quelle più informative (ad esempio momenti di inerzia) vengono utilizzate al livello superiore, dove il numero di alternative è minima.

AVDavydov.

letteratura

46. ​​Huang T.S. et al.Algoritmi veloci nell'elaborazione di immagini digitali. - M.: Radio e comunicazione, 1984. - 224 p.

47. Soifer VA Elaborazione informatica delle immagini. Parte 2. Metodi e algoritmi. - Giornale educativo Soros n. 3, 1996.

48. Apalkov IV, Khryashchev V.V. Rimozione del rumore dalle immagini in base ad algoritmi non lineari utilizzando statistiche di rango. - Università statale di Yaroslavl, 2007.

49. Andreev AL Sistemi di sorveglianza televisiva automatizzati. Seconda parte. Basi e algoritmi aritmetico-logici. Esercitazione. - San Pietroburgo: San Pietroburgo, GUITMO, 2005. - 88s.

50. Rosenfeld LG Possibilità di post-elaborazione di immagini diagnostiche TC e MRI su personal computer. - Cronaca medica ucraina - N. 6 (56) - XI/XII, 2006.

51. Lukin A. Introduzione all'elaborazione dei segnali digitali (Fondamenti matematici) - M.: MSU, Laboratorio

Articoli correlati in alto