Come configurare smartphone e PC. Portale informativo
  • casa
  • In contatto con
  • Qualche parola sul riconoscimento dei modelli. Come Google riconoscerà e classificherà le immagini nel prossimo futuro

Qualche parola sul riconoscimento dei modelli. Come Google riconoscerà e classificherà le immagini nel prossimo futuro

La scansione di un'immagine e il rilevamento degli oggetti in essa contenuti è il compito n. 1 nell'elaborazione delle immagini e nella visione artificiale. Una ricerca di "riconoscimento automatico delle immagini" su Google Academies restituirà molti articoli con equazioni e algoritmi complessi dai primi anni '90 ai giorni nostri. Ciò suggerisce che questo problema ha coinvolto gli scienziati sin dalla comparsa 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 argomento 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à una sorta di ulteriore fattore di classificazione. Ad esempio, l'immagine di un cane blu sarebbe indissolubilmente legata alla parola chiave "cane blu" anziché "cane rosso".

Questo ha due importanti implicazioni per la SEO:

  • il numero di risultati irrilevanti durante la ricerca di una parola chiave specifica sarà inferiore (a seconda di cosa c'è nell'immagine),
  • il riconoscimento dell'oggetto nell'immagine ti aiuterà ad associare il contenuto della pagina a quell'immagine. Se la pagina contiene molte immagini di cani blu e altre cose relative ai cani, la valutazione di questa pagina come dedicata ai cani sarà più alta.

Un'altra domanda: il riconoscimento dei modelli sarà l'inizio di una "nuova era" per la manipolazione degli oggetti nelle immagini come nuova tecnica SEO losca? No, perché oggigiorno gli algoritmi dei motori di ricerca rilevano facilmente questo tipo di spam.

Google, intelligenza artificiale e riconoscimento delle immagini

Nel 2010, la Stanford University ha tenuto la prima competizione ILSVRC (ImageNet su larga scala di riconoscimento visivo), in cui i programmatori dimostrano le capacità dei loro sistemi di riconoscimento delle immagini.

ILSVRC ha tre fasi principali:

  • classificazione,
  • classificazione con localizzazione,
  • rilevamento.

Nel primo caso viene valutata la capacità dell'algoritmo di creare le corrette "didascalie" all'immagine (labeling), la localizzazione prevede la selezione degli oggetti principali nell'immagine, il problema di rilevamento è formulato in modo simile, ma non c'è sono criteri di valutazione più rigorosi.

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

Qualsiasi motore di ricerca con questa capacità renderebbe difficile a chiunque spacciare foto di persone su ciclomotori come foto di conducenti Porsche manipolando i metadati. L'algoritmo in grado di riconoscere gli oggetti è piuttosto avanzato e sarà in grado di analizzare qualsiasi immagine, anche la più complessa.

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

Con il termine "reti neurali" si intendono le reti neurali artificiali (ANN), che sono modelli computazionali basati sui principi dell'apprendimento e del riconoscimento di schemi. Di seguito è mostrato un esempio di come funziona l'algoritmo di rilevamento degli oggetti:

Il team di GoogLeNet utilizza un tipo specifico di ANN, una rete neurale convoluzionale, che funziona in cui i singoli neuroni rispondono ad aree diverse (ma sovrapposte) nel campo visivo. Queste aree possono essere raccolte insieme per creare un'immagine più complessa. Secondo Razvan Gavrilas, questo è simile a lavorare con i livelli in un editor di immagini.

Uno dei vantaggi di una rete neurale convoluzionale è un buon supporto alla traduzione: qualsiasi tipo di movimento di un oggetto da uno spazio all'altro. Infrastruttura DistBelief è in grado di selezionare un oggetto indipendentemente da dove si trova nell'immagine.

Un'altra utile caratteristica dell'infrastruttura è l'invarianza di scala, in base alla 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 di, ad esempio, un "arancione", indipendentemente dal fatto che sia grande (sullo sfondo del desktop) o minuscolo (sull'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 Behavioral Organization: A Neuropsychological Theory, il postulato di Hebb recita: "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 uno o più 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 sono eccitate insieme si legano insieme". Nel caso delle ANN, le "cellule" dovrebbero essere sostituite con i "neuroni". Costruendo un'ulteriore analogia, si può dire che il software sarà in grado di educare se stesso per migliorare continuamente.

Google recluta professionisti dell'intelligenza artificiale e del riconoscimento delle immagini

Google sta creando la propria tecnologia di riconoscimento delle immagini basata su sviluppi di terze parti, ad esempio, per questo è stata acquisita una società startup DNNresearch, impegnata nella ricerca nel campo del riconoscimento di oggetti e voce. DNNresearch è una startup, al momento dell'acquisizione contava tre dipendenti che sono diventati automaticamente dipendenti di Google. Hanno ricevuto una sovvenzione per sostenere il lavoro nel campo delle reti neurali. Nuove tecnologie che Google può applicare per migliorare la qualità della ricerca di immagini.

Secondo la strategia di Google, molte soluzioni open source restano a disposizione di altre aziende. Questo viene fatto per sviluppare il mercato. Secondo Razvan, perché soffocare i tuoi concorrenti quando puoi permetterti di comprarlo dopo un po'?

Un'altra interessante acquisizione di Google è DeepMind, che ha un investimento di 400 milioni di dollari. Questa e molte altre acquisizioni mirano principalmente ad attirare persone qualificate su Google e non alcune soluzioni già pronte. Tali mosse per acquistare società sono una testimonianza di Google, Facebook e altre società Internet che corrono dietro ai "cervelli" per ulteriori sviluppi nel campo dell'intelligenza artificiale.

Google+ utilizza già il rilevamento degli oggetti nelle immagini. Prossimo in linea per Ricerca Google?

In effetti, su Google+ è in esecuzione da oltre un anno un algoritmo di rilevamento delle immagini basato su rete neurale. Parte del codice software presente su ILSVRC è stato utilizzato per migliorare gli algoritmi di Google+ per trovare 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 (primo piano, illuminazione artificiale, dettaglio) con gli oggetti nelle fotografie naturali (piano centrale, luce naturale con ombre, vari gradi di dettaglio). In altre parole, il fiore dovrebbe rimanere un fiore anche in immagini con risoluzioni o condizioni di illuminazione diverse.
  • Alcune classi visive specifiche vengono spostate fuori dalle 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 un certo numero di immagini che potrebbero essere classificate come "danza", "cibo", "baci". Ci vuole molto più tempo che identificare semplicemente i rapporti arancione-arancio.

Anche le classi con significati diversi sono gestite bene. Un esempio è "auto". È un'istantanea di un'auto se ci vediamo sopra tutta l'auto? L'immagine dell'interno di un'auto è considerata una fotografia di un'auto o è qualcos'altro? Risponderemmo affermativamente a entrambe le domande e l'algoritmo di riconoscimento di Google fa lo stesso.

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

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

Il nuovo algoritmo di Google fa parte del "machine learning", che è in parte implementato nel Knowledge Graph. Contiene entità - oggetti destinati a sostituire caratteri che non possono essere trovati nella loro 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'auto omonima. Sulla base di questi codici, l'algoritmo di riconoscimento può utilizzare la base di conoscenza. Google, infatti, crea una "ricerca intelligente" che comprende e traduce le tue parole e le tue immagini in veri e propri oggetti simbolici.

In che modo la tecnologia di rilevamento degli oggetti nelle immagini influisce sulla SEO?

La funzione di riconoscimento delle immagini può essere utile ovunque tu voglia sapere cosa c'è in un'immagine.

Da un punto di vista SEO convenzionale, il riconoscimento delle immagini è un enorme passo avanti. Ciò aiuta a migliorare la qualità dei contenuti, poiché diventa quasi impossibile ingannare un motore di ricerca etichettando erroneamente le foto o un numero enorme di esse.

È probabile che un buon contenuto visivo (ad es. alta qualità dell'immagine, oggetti chiaramente visibili, pertinenza della foto) svolga un ruolo importante in tutto ciò che riguarda la ricerca visiva.

Se vuoi che la tua immagine sia la prima tra le immagini nelle query "Yellow Dog", allora 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 di ricerca organici di Google stanno per cambiare. Il motore di ricerca si sposterà “dalle righe alle cose”, infatti, integrando il proprio knowledge graph nel panorama della ricerca. Cambieranno anche gli algoritmi di ricerca, che probabilmente si riferiranno agli oggetti reali nel contenuto e determineranno come questi oggetti si relazioneranno tra loro.

Il rilevamento e il riconoscimento di oggetti è parte integrante dell'attività umana. Non è ancora del tutto chiaro come una persona riesca a isolare e riconoscere in modo così accurato e così rapido gli oggetti necessari in una varietà di ambienti. Fisiologi e psicologi hanno cercato di scoprirlo per più di cento anni. Tuttavia, qui il nostro obiettivo non è comprendere il meccanismo di percezione degli esseri umani (e animali), ma descrivere i metodi di riconoscimento automatico degli oggetti dalle loro immagini: nuova tecnologia dell'informazione, metodologia potente, pratica e, in un certo senso, universale per elaborare e valutare le informazioni e rivelare schemi nascosti.

Il riconoscimento di oggetti tridimensionali dalle loro immagini bidimensionali è recentemente diventato uno dei compiti più importanti nell'analisi della scena e nella visione artificiale. Le informazioni iniziali per il riconoscimento contengono immagini in varie parti dell'intero spettro di radiazioni (ottico, infrarosso, ultrasonico, ecc.), ottenute con vari metodi (televisione, fotografica, laser, radar, radiazioni, ecc.), convertite in forma digitale e presentato sotto forma di una matrice numerica. Per oggetto intendiamo non solo (e non tanto) una rappresentazione digitale di un frammento locale di una scena bidimensionale, ma una sua descrizione approssimativa, sotto forma di un insieme di proprietà caratteristiche (caratteristiche). Lo scopo principale delle descrizioni (immagini di oggetti) è il loro uso nel processo di stabilire la corrispondenza degli oggetti, effettuato per confronto (collation). Il compito del riconoscimento è determinare l'appartenenza "nascosta" di un oggetto a una particolare classe analizzando il vettore dei valori delle caratteristiche osservate. L'algoritmo di riconoscimento deve estrarre informazioni sulla relazione tra i valori degli attributi di un oggetto e la sua appartenenza a una determinata classe dall'insieme di addestramento di oggetti per i quali sono noti i valori sia degli attributi che delle classi, o solo i valori dei loro attributi. Nel primo caso, il compito è chiamato compito di insegnare il riconoscimento del modello con un insegnante e nel secondo - senza un insegnante. Si assume qui che ogni oggetto "appartiene" a un'immagine di un insieme fisso. Quando si assegnano (classificano) gli oggetti, è necessario applicare alcune regole stabilite in precedenza per decidere a quale immagine (classe) appartiene l'oggetto. Nel problema del riconoscimento con addestramento, la regola di classificazione dovrebbe essere sviluppata sulla base dello studio di un insieme di oggetti con note appartenenti a classi diverse. Questi oggetti sono chiamati collettivamente set di addestramento o campione. Nel problema della formazione automatica delle immagini, gli oggetti vengono presentati all'"osservatore" senza indicare la loro appartenenza alle classi (riconoscimento senza insegnante). L'osservatore (algoritmo di riconoscimento) deve costruire autonomamente un'opportuna definizione di classi (analisi cluster). Naturalmente, un tale approccio all'analisi dell'immagine è adeguato solo a uno dei due aspetti del duplice problema del rilevamento e del riconoscimento degli oggetti in una scena, vale a dire il riconoscimento effettivo di una classe di un frammento di immagine abbastanza definito (selezionato), considerato come manifestazione esterna di qualche immagine nascosta. In questo caso si è costretti a supporre che sia già stato risolto il problema della segmentazione, cioè la determinazione dei confini dei frammenti, ognuno dei quali può essere considerato come un tutto unico (oggetto).

La ricerca sul riconoscimento delle immagini di oggetti spaziali si distingue per una grande varietà nella formulazione dei problemi e nella scelta dei mezzi per risolverli (metodi di elaborazione dei corrispondenti frammenti di immagini), che è una conseguenza della varietà dei campi di applicazione pratica. I compiti tradizionali, che sono stati risolti anche nei primi sviluppi sperimentali dei sistemi di visione artificiale, sono i compiti di rilevare e riconoscere oggetti con una data forma sulla base di immagini rumorose e (possibilmente) deformate. Quindi, uno dei primi problemi pratici che ha stimolato la formazione e lo sviluppo della teoria del riconoscimento degli oggetti è stato il problema dell'identificazione e del riconoscimento dei volti umani

Riso. 9.1. Illustrazione del problema del riconoscimento del volto umano e approcci alla selezione dei frammenti informativi (fonte)

La complessità di questo compito è dovuta alla varietà di possibili angoli (scale, posizioni, angoli di rotazione) delle facce riconosciute (vedi Fig. 9.1). Qui devi prima creare una rappresentazione interna degli oggetti, comprese le proiezioni di immagini. Questa attività è ancora ampiamente utilizzata nei sistemi di sicurezza, verifica delle carte di credito, medicina legale, teleconferenze, ecc. Per risolverlo vengono proposti metodi di riconoscimento basati sulla teoria delle reti di neurocomputer, algoritmi di correlazione-estremali, metodi per il calcolo di momenti statistici e algebrici, analisi di contorno, modellazione 3D, ecc. Tra questi, viene prestata particolare attenzione alla direzione associata alla selezione automatica delle caratteristiche (informative) degli oggetti della scena, in questo caso gli elementi degli occhi, del naso, della bocca, del mento - Fig. 9.1.

Poco dopo, nei compiti di monitoraggio (controllo) dell'ambiente naturale da immagini aerospaziali, sono stati delineati diversi approcci più importanti alla costruzione di elementi informativi. In particolare, quando sono stati ottenuti i primi dati di telerilevamento multispettrale e multispettrale, la maggior parte degli sviluppatori di metodi di interpretazione delle macchine si è dedicata allo studio delle proprietà spettrali degli oggetti naturali, poiché la luminosità degli elementi dell'immagine corrispondenti in diverse gamme spettrali ha permesso di identificarli a costi di calcolo relativamente bassi.

Riso. 9.2. Analisi a grappolo della luminosità spettrale di oggetti naturali, mappato e piano bidimensionale di una coppia di canali spettrali informativi

Il metodo di elaborazione più comune era la "classificazione non supervisionata" basata sull'analisi dei cluster, con l'aiuto della quale lo spazio delle caratteristiche spettrali è stato suddiviso in gruppi distinguibili (cluster, vedi Fig. 9.2), e la classificazione degli elementi dell'immagine ha permesso di simultaneamente segmentare la scena in regioni spettralmente omogenee.

Inoltre, è stato riscontrato che nel riconoscimento delle formazioni naturali, oltre alle caratteristiche spettrozonali, sono risultate estremamente importanti le caratteristiche che caratterizzano l'organizzazione spaziale locale dei mezzitoni (texture) degli oggetti di analisi. Un operatore esperto di decodificatori fa affidamento su tali informazioni (forma, orientamento, distribuzione di elementi caratteristici, contesto e altre caratteristiche spaziali) a volte più che su caratteristiche multispettrali. In ogni caso, l'attrazione di elementi materici può aumentare significativamente l'affidabilità del riconoscimento e aumentare il numero di classi distinguibili di oggetti naturali.

Negli studi sperimentali incentrati sulla risoluzione di problemi specifici, i dati iniziali sono un insieme di frammenti di immagini (oggetti della scena), decifrati da specialisti in materia e che servono come materiale di addestramento e controllo. In questo caso, l'obiettivo principale dello sviluppo di un algoritmo di riconoscimento è rispondere alla domanda se sia possibile l'analisi e la classificazione automatizzate delle immagini corrispondenti degli oggetti e, in tal caso, quale insieme di funzionalità di decrittazione è più efficace e quale struttura dovrebbe governare la decisione e metodo di decrittazione hanno.



(, parte 6.1)

Il riconoscimento delle immagini è un'area che si interseca con il riconoscimento dei modelli, ma si distingue in qualche modo da esso. Una delle principali differenze è che le immagini della stessa immagine possono variare nelle loro caratteristiche geometriche e di luminosità, ma questo non è particolarmente interessante per noi, viene corretto da metodi di pre-elaborazione dell'immagine ben studiati. La seconda delle principali differenze è che le immagini della stessa immagine subiscono deformazioni non banali, ad esempio diverse angolazioni di un oggetto tridimensionale, la direzione dell'illuminazione, cambiamenti di postura/espressioni facciali/gesti, ecc., che non inserirsi nello schema di divisione dello spazio delle immagini. Ed è qui che inizia il divertimento.

In alcuni punti entrerò nei dettagli del riconoscimento delle immagini, poiché l'argomento mi è vicino, e presenterò alcune idee e la mia visione di come dovrebbe essere un riconoscitore di immagini ideale.

Una volta ho descritto in dettaglio molto di questo. Non senza imprecisioni, ma generalmente sano di mente. Indica anche da dove sono state prese le immagini ei dati esatti degli articoli scientifici.

Come viene presentata l'immagine nel sistema di riconoscimento dei modelli. La cosa più semplice è che ogni pixel è un asse nello spazio dell'immagine, la luminosità di un pixel è una posizione in questo spazio. Quindi, la conclusione suggerisce immediatamente da sé che il riconoscitore non tiene in alcun modo conto della natura bidimensionale delle immagini, ma ne parleremo più avanti. Esistono altre rappresentazioni, anch'esse basate sulla luminosità dei pixel e possono rappresentare un po' meglio le relazioni bidimensionali dei pixel (un po'!).

Cosa segue da una simile rappresentazione. Cambiare la posizione dell'oggetto riconosciuto, ruotarlo su un piano bidimensionale, cambiare la scala è un disastro per il riconoscitore. Perché un pixel corrispondente, ad esempio, alla punta del naso, andrà al bordo dell'orecchio, o, dal punto di vista del riconoscitore, il valore di input, che dovrebbe cadere sul suo asse nello spazio dell'immagine, cadrà in un asse completamente diverso (non è chiaro quale!) (altrimenti si chiama cambiamento nella topologia dello spazio). E una tale permutazione degli assi rompe completamente le superfici divisorie nello spazio delle immagini. Puoi, ovviamente, dire, lasciare che il riconoscitore impari tutte le posizioni e le scale dell'oggetto nell'immagine. Ma, sfortunatamente, il numero di tutte le disposizioni possibili è così grande che non è realistico farlo.

La conseguenza successiva è che un cambiamento nella luminosità di un'immagine proietta l'intera immagine in un punto completamente diverso nello spazio delle immagini. Sebbene gli assi rimangano al loro posto, il cambiamento di luminosità è ancora un grosso problema per il riconoscitore.

Di conseguenza, il riconoscitore reagirà non tanto al contenuto dell'immagine quanto alla sua luminosità e dimensione/posizione.

Ma tutto questo non è così spaventoso, gli strumenti di elaborazione delle immagini sono stati in grado di correggere la geometria e la luminosità per molto tempo. (Un altro problema, paragonabile per complessità e metodi applicati al riconoscimento dell'immagine, è determinare la posizione e la dimensione di un oggetto nell'immagine, chiamato rilevamento.) Esistono anche trasformazioni dell'immagine (chiamate momenti), i cui coefficienti sono gli stessi per qualsiasi posizione e dimensione dell'oggetto. Pertanto, una delle prime fasi del riconoscimento delle immagini (che è assente nel riconoscimento dei modelli) è la normalizzazione dell'immagine, che viene risolta da strumenti di elaborazione delle immagini abbastanza semplici. Anche il modo in cui questo viene risolto nel cervello umano è una domanda interessante, diamo un'occhiata oltre.

Ma la cosa più difficile per il riconoscitore sono le deformazioni della proiezione bidimensionale, associate all'essenza tridimensionale dell'oggetto (cambiando l'angolo e la direzione dell'illuminazione) e cambiando l'oggetto stesso (postura, gesti, espressioni facciali, eccetera.). Poiché queste deformazioni non vengono corrette dai metodi di elaborazione delle immagini e, in generale, è necessario prima determinare quale tipo di deformazione si è verificata. Pertanto, il rastrello preferito dei riconoscitori, quando reagiscono di più all'angolo, riconoscendo oggetti diversi nello stesso angolo dello stesso. Con l'illuminazione, uno scherzo simile, ad esempio, nello stesso punto, la transizione dal bianco al nero, quando la direzione dell'illuminazione viene cambiata al contrario, al contrario, diventerà una transizione dal nero al bianco, e non puoi risolverlo normalizzando la luminosità.

In tutta onestà, va notato che ci sono modi in cui viene creato un set di allenamento di grandi dimensioni con immagini appositamente scattate con diverse angolazioni e direzioni di illuminazione, e quindi l'immagine di input, se rientra nei limiti di queste condizioni, è ben riconosciuta. Inoltre, dopo un addestramento così esteso, è possibile inserire nel sistema nuovi oggetti, che non sono stati filmati con una variazione così ampia di angoli e illuminazione. Ma questo metodo è un caso speciale e, inoltre, è piuttosto pesante. E per noi, in generale, questo non è interessante, poiché è più legato alla matematica e alla statistica.

Un altro modo è ripristinare un'immagine tridimensionale da una proiezione bidimensionale. Quindi l'angolo e l'illuminazione non giocano un ruolo e i cambiamenti di postura sono più facili da gestire. È vero, il metodo non è facile da implementare e non tutto è fluido. Quando si restaura un'immagine tridimensionale, di solito è richiesto un modello più generale di un oggetto (senza di esso, il restauro è possibile, ma sarà "zoppo" ed è peggio adatto per il riconoscimento), e la correlazione di una proiezione con tre -dimensionale ha anche elementi di riconoscimento del modello. Ma non ci interessa nemmeno questo, poiché qui c'è una matematica più esatta.

Un riconoscitore "pulito" dovrebbe far fronte da solo alle deformazioni dell'immagine elencate, senza modelli accurati e kit di addestramento appositamente preparati. Il riconoscitore non dovrebbe funzionare con un'immagine, come un array unidimensionale, ma dovrebbe capire che l'immagine è composta da frammenti bidimensionali, il contenuto del frammento può cambiare, sebbene il suo significato rimanga lo stesso (l'esempio sopra riguarda il cambiamento la direzione dell'illuminazione o un'altra espressione facciale), il frammento stesso può spostarsi rispetto al centro dell'immagine e rispetto ad altri pezzi (angolazione diversa o cambiamento nell'espressione facciale), la combinazione di pezzi può cambiare (ad esempio, sono comparsi occhiali, l'acconciatura / la barba sul viso sono cambiate, sebbene il proprietario stesso sia lo stesso).

I riconoscitori che mostrano buoni risultati possono fare molto di quanto sopra, ciascuno a modo suo. Ma! Se per qualche area è stato sviluppato un chiaro riconoscimento privato, sarà difficile competere con uno più generale, sebbene il riconoscimento generale sia applicabile a condizioni più ampie. Ad esempio, nel riconoscimento facciale, i metodi di posizionamento del volto, normalizzazione ed estrazione delle caratteristiche chiave sono ben sviluppati per fotografie scattate in condizioni ben controllate. E secondo queste caratteristiche fondamentali, non i riconoscitori più astrusi funzionano perfettamente, e questo è più che sufficiente. Se un'immagine correttamente preelaborata di un viso viene inviata all'input di una rete neurale (perceptron multistrato), anche questo è considerato un riconoscitore privato, perché per un'immagine non elaborata, tale rete avrà risultati disastrosi.

In che modo esattamente i riconoscitori affrontano le deformazioni dell'immagine di cui sopra.

Evidenziando i punti chiave e il loro contenuto. Ad esempio, per un viso, viene determinata la posizione della punta del naso, delle labbra, degli angoli dell'occhio, il contenuto dei frammenti dell'immagine attorno a questi punti e vengono calcolate le distanze reciproche tra questi punti. Per i caratteri scritti a mano, questi possono essere i punti di piegatura del percorso, l'angolo di tali piegature e la distanza tra gli angoli. In parte per trovare questi punti, vengono utilizzati metodi di riconoscimento dei modelli, in parte si tratta di regole logiche programmate manualmente da un esperto umano. Quindi questi dati vengono inviati a un riconoscitore convenzionale. Poiché le relazioni bidimensionali tra i punti sono già state selezionate ed è stato trovato il contenuto delle vicinanze dei punti, il riconoscitore può già far fronte a deformazioni bidimensionali dividendo lo spazio dell'immagine. Qui la ricerca e il confronto degli assi è già avvenuta, la topologia dell'immagine è adattata alla topologia dello spazio delle immagini del riconoscitore e le distanze tra i punti chiave consentono di misurare le distorsioni di questa topologia , riducendo al minimo le differenze di angolazione e prestando attenzione a quale persona appartiene il viso. Inoltre, la ricerca dei punti chiave è stata:

  • un'iterativa, piuttosto che un'istantanea di input-output, senza costruire lunghe catene logiche, la ricerca è andata "in ampiezza" con l'enumerazione di opzioni locali,
  • non sono state provate tutte le opzioni possibili, ma solo quelle più reali,
  • la ricerca termina quando viene raggiunto il criterio ottimo, l'ottimalità non è garantita.


Punti di identificazione e distanze: a) utilizzati nella fotografia forense; b) il più frequentemente utilizzato nella costruzione di sistemi di identificazione automatizzata.

Lo svantaggio di questo approccio è che viene analizzato solo un piccolo numero di punti, il resto dell'immagine viene espulso, il che può influire sulla qualità del riconoscimento. Ad esempio, se un punto viene trovato in modo errato, questo è già fatale, ma se si analizzano le aree circostanti, l'errore può essere ridotto al minimo. Ma per alcune aree sviluppate (come il riconoscimento facciale), questo approccio è sufficiente.

Il prossimo modo è deformare l'immagine. Un reticolo viene allungato sull'immagine riconosciuta, ai cui nodi diventano i pixel originali. Quindi il reticolo viene distorto (i nodi cambiano la loro posizione) e viene calcolata l'immagine distorta. La differenza viene calcolata tra ciascuna immagine del training set e l'immagine distorta. L'immagine originale, che per un certo numero di iterazioni di distorsione ha dato la minima differenza con l'immagine distorta, è considerata la più simile ad essa (distorsione minima alla corrispondenza massima). Per cercare la direzione della distorsione, può esserci un criterio di minimizzazione basato sull'immagine originale e distorta (entrambi nei flussi ottici), o una ricerca casuale, come la ricottura. Le deformazioni sono elastiche e anelastiche. Elastico significa che quando distorti, i nodi del reticolo non possono saltare l'uno sull'altro, ad esempio, l'orecchio non striscia nel mezzo del naso. Quelli anelastici di conseguenza consentono qualsiasi permutazione dei nodi. Quale è meglio - non ricordo nessun confronto esatto, ma le deformazioni elastiche intuitivamente sono più piacevoli. La distorsione può essere passata con il metodo di ricottura descritto nella parte precedente, a seguito del quale la distorsione "si solidifica" in una delle immagini di allenamento più simili.


Deformazione elastica: fusione dei pixel nell'immagine originale e nuova





Flusso ottico (deformazione anelastica). Mappare un'immagine sconosciuta con una conosciuta, la stessa persona. Da sinistra a destra: immagine sconosciuta, immagine dal database, immagine sconosciuta in cui i blocchi sono sostituiti da blocchi di un'immagine nota.


Flusso ottico (deformazione anelastica). Mappatura di un'immagine sconosciuta su un'immagine dal database. Immagini di persone diverse. La qualità del display è peggiore.


Flusso ottico (deformazione anelastica). Distorsione del reticolo dell'immagine durante la conversione di un'immagine in un'altra. A sinistra - immagini di una persona, a destra - diverse.

Lo svantaggio di questo approccio è che deforma stupidamente l'immagine, cercando di ridurre al minimo la differenza per pixel, senza tener conto del significato dell'immagine. Ad esempio, il sorriso di una persona può essere attenuato nell'espressione di un'altra persona, perché la differenza pixel per pixel è minore. O in altre parole, è consentita qualsiasi traiettoria di distorsione dell'immagine (anche elastica), sebbene per le immagini reali queste traiettorie siano strettamente fisse e siano associate a un cambiamento di prospettiva, espressioni facciali, ecc. Inoltre, non è chiaro cosa accadrebbe se l'area non subisse distorsioni, ma, ad esempio, apparissero occhiali che non erano nell'immagine originale. La deformazione probabilmente "impazzirà" cercando di trasformare gli occhiali in occhi :)

Un altro punto importante è che una tale deformazione è solo alla ricerca di somiglianze, senza cercare di capire i tratti distintivi, la differenza che distingue un oggetto da un altro (come fa la rete neurale nelle parti precedenti). Di conseguenza, sono possibili battute quando un tale riconoscitore verrà catturato per un'acconciatura elegante e identica, ignorando piccoli cambiamenti nella sezione degli occhi (a proposito, i buoni sistemi di riconoscimento eliminano acconciature e altri fattori di "rumore" anche al fase di pre-elaborazione dell'immagine).

C'è una variazione quando non viene tirato un reticolo sull'immagine, ma una cornice più significativa, ad esempio, per il viso, inclusi punti come la punta del naso, la punta delle labbra, occhi, orecchie, sopracciglia. Tali riconoscitori agiscono in modo più significativo, poiché sono già stati passati i dati necessari. Non devi nemmeno cercare questi punti, è sufficiente impostare uno scheletro approssimativo e il resto verrà trovato da solo durante la deformazione. Un'altra cosa è che nel training set, questi punti devono essere chiaramente distanziati (e questo è un compito separato e difficile, o viene eseguito parzialmente manualmente), e quindi puoi confrontare il modello di riferimento con un'incognita distorta non solo dal contenuto di i punti, ma anche dalla natura delle distorsioni reticolari. Questo si chiama grafici dinamici (o elastici, non ricordo bene).


Il metodo successivo si chiama Hidden Markov Models (HMM). La sua essenza è descritta di seguito vagamente (ma brevemente), ma l'esempio con il riconoscimento delle immagini chiarisce tutto. In parole povere, HMM è una matrice di probabilità di transizione tra gli stati di un sistema fisico o segnale. Quando entra in uno stato, il sistema emette uno dei "valori" dall'insieme di "valori" di questo stato. Ogni "valore" di questo stato ha la sua probabilità di essere emesso. Inoltre, alcuni "significati" possono essere caratteristici di altri stati. Di solito non sappiamo quali stati attraversa il processo di un segnale o di un sistema fisico, ma vediamo solo i "valori" che vengono emessi all'esterno, quindi i modelli vengono chiamati nascosti.



Diagramma del modello di Markov, un esempio di una sequenza di osservazioni O e una sequenza di stati S

Per il riconoscimento, gli HMM vengono utilizzati come segue. Ogni immagine è considerata come una sequenza di tali "significati". Per ogni classe viene calcolato il proprio HMM. Quindi, per l'immagine sconosciuta, vengono lanciati tutti i modelli disponibili e tra questi viene cercato quello che produce la sequenza di "valori" più simile. Questo è chiamato problema di riconoscimento ed esiste una formula esatta per risolverlo. Non esistono formule esatte per il problema della sintonizzazione dei modelli dalle immagini disponibili, ma, come nell'addestramento delle reti neurali, esistono metodi euristici (subottimali, una sorta di discesa del gradiente).

Per il riconoscimento delle immagini, gli HMM 2D hanno funzionato bene. In essi, il "valore" è considerato il contenuto di un quadrato di un'immagine con un lato di diversi pixel. Lo stato è la posizione di questo quadrato nell'immagine. L'immagine è densamente ricoperta da un reticolo di tali stati (inoltre, i bordi dei quadrati vicini possono sovrapporsi parzialmente, il che dà il miglior risultato di riconoscimento). La matrice di transizione è costruita in modo tale che le transizioni siano possibili solo tra stati adiacenti al reticolo dell'immagine bidimensionale. Cioè, il quadrato con la punta del naso verrà cercato tra le guance e la bocca, ma non dietro l'orecchio, e se il naso nell'immagine sconosciuta si trova a sinistra, verranno cercati anche i quadrati vicini per la sinistra - guance, naso, mento, ecc.








C'è una variazione dell'addestramento HMM, quando ogni HMM è stato inizialmente "addestrato" su tutte le immagini di allenamento, e solo allora sono state perfezionate con "le proprie", il risultato del riconoscimento è stato più alto. Cioè, l'SMM ha imparato come appare un oggetto tipico e cambia "in generale", e poi si è adattato all'aspetto e ai cambiamenti di un particolare oggetto. E questo non è avvenuto per la conoscenza del modello fisico esatto e specifico, ma per la procedura di allenamento generale e gli esempi specifici del mondo reale.

Si scopre che un modello plausibile dell'oggetto è costruito all'interno dell'HMM (si applica anche alle reti convoluzionali, vedi sotto). Non è questo il modello che si ottiene, ad esempio, con la ricostruzione tridimensionale di un'immagine, e non è il modello quando si determina manualmente un insieme di caratteristiche chiave e le relazioni tra di esse. L'HMM, d'altra parte, non ricrea un modello fisico accurato, ma un modello plausibile. Un modello che produce un comportamento simile di un oggetto, ma a scapito di processi che non hanno nulla a che fare con la fisica reale dell'oggetto. Se impostato correttamente, il modello fisico e plausibile corrisponderà nell'output, nelle condizioni in cui abbiamo addestrato il modello plausibile. Ma al di fuori di queste condizioni iniziano le discrepanze, a volte con effetti interessanti. Ad esempio, una persona può facilmente riconoscere un'altra persona da una caricatura, sebbene matematicamente l'immagine di una caricatura non sia in alcun modo paragonabile a un'immagine digitalizzata del volto di una persona. Altri esempi quotidiani sono facili da trovare. Una persona nelle sue azioni è guidata non dalle leggi esatte della fisica, ma dalla fisica "ingenua", che opera nelle condizioni quotidiane, ma è completamente inapplicabile quando andiamo oltre i confini di queste condizioni. Una cosa simile si può trovare nel pensiero logico e immaginativo, da qui derivano fantasie e creatività, osservando le quali, una persona può confrontarle o sentire processi fisici reali che, da un punto di vista scientifico, non possono essere descritti da tali fantasie. E a proposito, per tali riconoscitori non è difficile invertirli in modo che per un dato oggetto emettano variazioni dei suoi cambiamenti. Naturalmente, oltre alle immagini reali, otterremo anche un sacco di "fantasie" dal riconoscitore, strane secondo noi. Questa è anche la base per la determinazione delle aree chiave dell'immagine, quelle aree che danno il maggior contributo al riconoscimento. Ma torneremo alle fantasie e ai modelli plausibili, ora continueremo sul riconoscimento delle immagini.

Pertanto, HMM è un riconoscitore di immagini quasi perfetto:

  • può far fronte alle deformazioni dell'immagine cercando il pezzo desiderato in un determinato quartiere,
  • deformazione elastica dell'immagine, tenendo conto delle specificità degli oggetti riconosciuti (il naso non va dietro l'orecchio),
  • può far fronte a mutevoli combinazioni di pezzi (come cambiare le acconciature o l'aspetto degli occhiali), a causa del fatto che ogni stato corrisponde a diversi valori dei suoi pezzi,
  • l'immagine è strettamente coperta dalla griglia di ricerca e viene analizzata nel suo insieme.

Ma l'SMM ha uno svantaggio. Gli SMM non possono distinguere tra classi riconoscibili, non riescono a trovare caratteristiche distintive. Le reti neurali, ad esempio, dicono “sì” alla classe riconosciuta e “no” a tutte le altre, mentre l'SMM dice “sì” a tutte le classi, e da questi “sì” viene selezionato il massimo, che è considerato il riconosciuto classe. E, per quanto ho capito, l'HMM non misura la variazione della distanza tra i pezzi, che potrebbe migliorare il risultato, ma cerca solo come disporre meglio i pezzi sull'immagine, tenendo conto della loro vicinanza. Anche se sarebbe interessante mettere il reticolo distorto trovato in questo modo (sotto forma di distanze tra i nodi, dove il nodo è la posizione del pezzo) nel riconoscitore.



L'output della rete neurale durante il riconoscimento - la differenza tra la classe riconosciuta (s11) e tutte le altre è chiaramente visibile. I modelli di Markov non lo fanno.

Il prossimo modo per riconoscere le immagini sono i cognitron, i neocognitron e le reti neurali convoluzionali (CNN). Inizialmente, i cognitron, per così dire, furono inventati sulla base della struttura dei neuroni nella corteccia visiva, quindi furono migliorati e nelle reti convoluzionali, un nucleo razionale fu isolato da questa intera struttura.

Per capire come funzionano queste reti, è necessario comprendere il concetto più importante: le mappe delle caratteristiche. Immagina di scansionare un'immagine con una piccola finestra quadrata. Le posizioni delle finestre nell'immagine possono sovrapporsi. Nel riquadro della finestra, ogni pixel scansionato ha il proprio peso e la finestra emette il valore ponderato sommato di tutti i pixel. Un unico significato. Ma poiché ci sono molte posizioni della finestra, si ottiene un reticolo bidimensionale di tali valori. Questa finestra rileva la presenza di una combinazione di pixel (caratteristica) nell'immagine. Di conseguenza, sulla griglia di output, si otterranno valori alti dove è presente la combinazione di pixel desiderata, e valori bassi, dove il contenuto non è in alcun modo simile a quello che stiamo cercando. Questa griglia è chiamata mappa delle caratteristiche. Inoltre, stiamo cercando non una caratteristica, ma molte diverse, per ognuna di esse una propria finestra con il proprio set di pesi e, di conseguenza, otteniamo diverse mappe parallele di funzionalità in uscita. Ogni mappa delle caratteristiche (come immagine) viene inviata all'input del suo livello di riconoscimento successivo e riceve anche diverse altre mappe parallele all'output. Nello strato finale, tutte le carte vengono inviate all'ingresso del riconoscitore finale, il che può essere abbastanza semplice; nell'originale era utilizzato un perceptron multistrato.



È chiaro che tale elaborazione delle immagini può tenere conto di piccole deformazioni e spostamenti. C'è un'opzione quando le mappe delle caratteristiche vengono ulteriormente parallelizzate aggiungendo mappe in cui i pezzi vengono scansionati ad angoli diversi. A causa di ciò, il riconoscitore può gestire le svolte. Continuando a ragionare in questa direzione, puoi fare molte cose interessanti, come finestre di diverse dimensioni e invarianza alla scala dell'immagine. Puoi fare collegamenti aggiuntivi che andrebbero non solo alle carte precedenti nella gerarchia, ma anche a quelle più distanti (puzza come un'analisi intellettuale della scena). Un'altra opzione interessante è quando la mappa delle caratteristiche del livello successivo eseguirà la scansione non su una mappa precedente, ma tutta in una volta (come era nel neocognitron originale). L'elaborazione diventa subito più pesante (finestra tridimensionale), ma anche più potente, purtroppo non so se tale opzione sia stata studiata in una rete convoluzionale. O invece di questo, almeno, al riconoscitore finale, alimenta le uscite non solo dell'ultima carta, ma tutte dalla gerarchia.



Architettura di rete neurale convoluzionale. Strati convoluzionali e sottocampionamento.

A causa di tali mappe di caratteristiche, le reti convoluzionali ottengono un'elaborazione delle immagini qualitativamente diversa e più potente (pensate perché, immaginate il corso della formazione delle caratteristiche quando salite nella gerarchia). Come puoi vedere, anche qui non ci sono lunghe catene logiche di inferenza ed enumerazione di opzioni, la ricerca è breve e "ampia" (contemporaneamente parallela a tutte le mappe di caratteristiche).

In matematica, ciò che la finestra fa con l'insieme originale di pixel è chiamato convoluzione (una sorta di trasformazione della frequenza spaziale) e i pesi nella finestra fungono da filtro. Pertanto, le reti sono chiamate convoluzionali. I livelli che fanno questo sono anche chiamati livelli convoluzionali.

Solitamente, oltre alle mappe delle caratteristiche, vengono introdotti anche i layer di media che, prima di inviare una mappa al layer successivo, ne riducono le dimensioni facendo la media dei pixel adiacenti (come ridimensionare un'immagine), altrimenti si ottiene una quantità enorme di calcoli, e in inoltre, si ottiene un'ulteriore generalizzazione delle varie distorsioni dell'originale.

Come vengono addestrate tali reti. La prima opzione, puoi costruire una mappa topografica dei pezzi trovati nell'immagine originale, quindi prendere i valori da questa mappa e costruire mappe delle caratteristiche basate su di essi. Le mappe topografiche vengono create allo stesso modo per i livelli successivi nella gerarchia, ma le mappe delle caratteristiche sono già fornite come input. Una mappa topografica, questo significa che dai pezzi mediati trovati nell'immagine si compone una sorta di dizionario. Inoltre, i pezzi, in primo luogo, saranno disposti in un reticolo n-dimensionale, dove i vicini saranno simili, e in secondo luogo, ciò che è più interessante per noi, i pezzi del dizionario sono adatti per la costruzione di mappe di caratteristiche, poiché sono frammenti di immagini caratteristici e frequenti, perché pezzi astratti o rari non saranno inclusi in questa mappa, ma pezzi simili saranno raggruppati in una media. In questa versione, la formazione viene svolta senza un insegnante, poiché non è necessario un errore tra l'output desiderato e quello reale della rete per costruire una mappa topografica, le caratteristiche vengono automaticamente raggruppate in base alla loro somiglianza. Solo il riconoscitore finale viene addestrato con un insegnante, che riceve gli output dalle mappe delle caratteristiche dell'ultimo livello.


Applicazione di mappe Kohonen (bidimensionali) per ridurre la dimensionalità delle aree delle immagini facciali. A sinistra c'è una mappa topografica delle aree dell'immagine prima dell'allenamento, a destra - dopo l'allenamento.

La seconda opzione è che i pesi per le mappe delle caratteristiche siano regolati come i pesi dei neuroni nel caso di propagazione all'indietro dell'errore. Cioè, un'impostazione proviene dall'output di rete, che dice quali caratteristiche devono essere estratte dall'immagine per ottenere il risultato. Nel lavoro originale sulle reti convoluzionali, si sostiene che tale configurazione sia semplice, ma non crederei agli autori a parole, perché ci sono molte opzioni e non tutte daranno qualcosa di buono. Nella versione originale, la rete convoluzionale apprende e funziona molto rapidamente e fornisce una precisione vicina alla CMM (ma ancora meno). L'SMM, d'altra parte, con la sua incredibile precisione, impiega molto tempo per allenarsi.

Quale opzione è migliore - non lo so. In teoria, dato che il riconoscitore finale viene addestrato con un insegnante, i risultati dovrebbero essere simili.

Dalla descrizione dell'architettura delle reti convoluzionali, vediamo cosa possono fare:

  • far fronte alle deformazioni dell'immagine, dovute al fatto che la funzione viene scansionata sull'intera immagine,
  • saper combinare i pezzi (occhiali / acconciatura / ...), grazie a una serie di mappe di caratteristiche parallele,
  • deformazioni elastiche (il naso non va dietro l'orecchio), dovute alla ricerca e alla media nelle vicinanze.

Cosa non possono fare. Innanzitutto, i set di funzionalità vengono compilati per l'intera immagine. In effetti, sarebbe utile che, come nell'HMM, ogni quartiere (più precisamente, per la traiettoria di ricerca) avesse i propri insiemi di caratteristiche. Cioè, in modo che nella zona degli occhi ci siano filtri esclusivamente con diversi frammenti degli occhi, ma non la bocca, anche se non si troverà mai lì. Ciò renderebbe possibile creare un vocabolario più accurato per ciascuna area e non fare la media sull'intera immagine. Ma allo stesso tempo renderebbe il riconoscitore più inibitorio. In secondo luogo (e strettamente connesso al primo), in modo che le traiettorie ammissibili di ciascun frammento siano chiaramente distinte e, nel processo di riconoscimento, vengano misurate le variazioni delle distanze tra frammenti vicini (più precisamente, poiché tutti i vicini nel reticolo sono collegati, in modo che le distorsioni ammissibili dell'intero reticolo siano costruite e quindi verificate). Naturalmente, le reti convoluzionali lo fanno già in qualche forma, ma intuitivamente sembra che possa essere fatto in modo più ottimale. Un'opzione più semplice e veloce consiste nel creare mappe di caratteristiche locali (tenendo conto dell'area tematica). Ad esempio, l'area degli occhi, della bocca, del naso, delle orecchie.

Questo è tutto con i principali metodi di riconoscimento delle immagini (ad esempio, il riconoscimento facciale). Per altri tipi di immagini, i principi di riconoscimento sono gli stessi, adattati alla loro area, alle loro caratteristiche.

La linea di fondo è la seguente. Quando si riconoscono le immagini, l'immagine viene prima preelaborata, quindi le caratteristiche vengono estratte manualmente e/o automaticamente, queste caratteristiche vengono inviate a qualsiasi riconoscitore, il più difficile dei quali sono le superfici di divisione non lineari nello spazio delle caratteristiche. La fase di estrazione delle caratteristiche può avvenire utilizzando modelli fisici per ricostruire l'essenza di un oggetto, ma questa è già matematica esatta. Le regole di riconoscimento possono essere basate sulla logica di un esperto umano in questo campo. Un altro tipo di riconoscitori (deformazioni dell'immagine, modelli di Markov, reti convoluzionali) cerca, utilizzando metodi euristici, di ricreare un modello plausibile del dominio e di sovrapporlo a un'immagine sconosciuta.

E niente miracoli. O formule esatte più la conoscenza di un esperto umano, o modelli plausibili pesanti e universali. Menzionare come si suppone che avvenga il riconoscimento delle immagini negli esseri umani è ancora più belle parole che un'applicazione pratica.

  • Tutorial

Desideravo da tempo scrivere un articolo generale che contenesse le basi del riconoscimento delle immagini, una guida ai metodi di base, che spiegasse quando applicarli, quali compiti risolvono, cosa si può fare la sera in ginocchio e cosa è meglio no a cui pensare senza un team di persone in 20.

Scrivo da tempo alcuni articoli sul Riconoscimento Ottico, quindi un paio di volte al mese diverse 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ù offensiva è che sta cercando di applicare un metodo da un'area di conoscenza vicina, che è logico, ma non funziona completamente in Image Recognition, ma non lo capisce ed è molto offeso se inizia a dire qualcosa fin dalle basi. E considerando che raccontare dalle basi è molto tempo, che spesso non lo è, diventa ancora più triste.

Questo articolo è stato concepito in modo che una persona che non si è mai occupata di 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. Molte delle tecniche qui descritte sono applicabili al radar e all'elaborazione 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, parti sempre dal più semplice. È molto più facile appendere un'etichetta arancione su una persona che seguire una persona, evidenziandola con cascate. È molto più facile prendere una fotocamera con una risoluzione più alta che sviluppare un algoritmo di super risoluzione.
  • Una formulazione rigorosa del problema nei metodi di riconoscimento ottico è ordini di grandezza più importante che nei problemi di programmazione del sistema: una parola in più nella specifica tecnica può aggiungere il 50% del lavoro.
  • Non esistono soluzioni universali ai problemi di riconoscimento. Non è possibile creare un algoritmo che semplicemente "riconoscerà qualsiasi iscrizione". Un cartello per strada e un foglio di testo sono oggetti fondamentalmente diversi. Probabilmente, puoi creare un algoritmo generale (ecco un buon esempio da Google), ma richiederà molto lavoro da parte di un grande team e consisterà in dozzine di subroutine diverse.
  • OpenCV è una 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 puoi effettivamente fare. In uno studio, sono state scritte le conclusioni: "Il problema non è risolto con i metodi OpenCV, quindi è irrisolvibile". Cerca di evitare questo, non essere pigro e valuta in modo sobrio l'attività corrente ogni volta da zero, senza utilizzare i modelli OpenCV.
È molto difficile dare un qualche tipo di consiglio universale o dirti come creare un qualche tipo di struttura attorno alla quale puoi costruire una soluzione a problemi di visione artificiale arbitrari. Lo scopo di questo articolo è strutturare ciò che è possibile utilizzare. Cercherò di dividere i metodi esistenti in tre gruppi. Il primo gruppo è il filtraggio preliminare e la preparazione dell'immagine. Il secondo gruppo è l'elaborazione logica dei risultati di filtraggio. Il terzo gruppo sono gli algoritmi decisionali basati sull'elaborazione logica. I confini tra i gruppi sono molto condizionati. Per risolvere un problema, non è sempre necessario applicare metodi di tutti i gruppi, a volte due, a volte anche uno.

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

Parte 1. Filtrazione

In questo gruppo ho inserito metodi che consentono di evidenziare aree di interesse nelle immagini senza analizzarle. La maggior parte di questi metodi applica una sorta di trasformazione uniforme a tutti i pixel 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.
Binizzazione della soglia, selezione dell'area dell'istogramma
La trasformazione più semplice è la binarizzazione della soglia dell'immagine. Per un'immagine RGB e un'immagine in scala di grigi, la soglia è il valore del colore. Ci sono compiti ideali in cui una tale trasformazione è sufficiente. Supponiamo che tu voglia selezionare automaticamente gli oggetti su un foglio di carta bianco:




La scelta della soglia alla quale avviene la binarizzazione determina in larga misura il processo di binarizzazione stesso. In questo caso, l'immagine è stata binarizzata dal colore medio. Di solito la binarizzazione viene eseguita utilizzando un algoritmo che seleziona in modo adattivo la soglia. Questo 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, anche quando si considera un'immagine non in RGB, ma in HSV. Ad esempio, segmenta i colori di interesse. Questo principio può essere utilizzato per costruire sia un rilevatore di tag che un rilevatore di pelle umana.
Filtraggio classico: Fourier, LPF, HPF
I metodi classici di filtraggio dal radar e dall'elaborazione del segnale possono essere applicati con successo in una varietà di compiti di riconoscimento di pattern. Il metodo tradizionale nel radar, che non viene quasi mai utilizzato nelle immagini pure, è la trasformata di Fourier (più specificamente, la FFT). Una delle poche eccezioni a cui viene utilizzata la trasformata di Fourier unidimensionale è 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 effettivamente lo calcolano, di solito è molto più veloce e più facile da usare la convoluzione della regione di interesse con un filtro pronto affilato per le frequenze alte (HPF) o basse (LPF). Questo metodo, ovviamente, non consente l'analisi dello spettro, ma un'attività di elaborazione video specifica di solito non richiede 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 dell'immagine viene selezionata una finestra e moltiplicata con un filtro della stessa dimensione. Il risultato di questa convoluzione è il nuovo valore in punti. Quando si implementa un filtro passa basso e un filtro passa alto, si ottengono immagini del seguente tipo:



ondine
Ma cosa succede se usiamo qualche funzione caratteristica arbitraria per la convoluzione con un segnale? Quindi si chiamerà "trasformazione Wavelet". Questa definizione di wavelet non è corretta, ma tradizionalmente si è sviluppato che in molti comandi l'analisi wavelet è la ricerca di un pattern arbitrario in un'immagine usando la convoluzione con un modello di questo pattern. Esiste un insieme di funzioni classiche utilizzate nell'analisi wavelet. Questi includono wavelet Haar, wavelet Morlet, wavelet cappello messicano, ecc. I primitivi di Haar, sui quali c'erano molti dei miei articoli precedenti (,), si riferiscono a tali funzioni per lo 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 il bagliore nell'occhio, per il quale il bagliore stesso è la wavelet:

Le wavelet classiche vengono solitamente utilizzate per comprimere le immagini o per classificarle (descritte di seguito).
Correlazione
Dopo una così libera interpretazione delle wavelet da parte mia, vale la pena ricordare l'effettiva correlazione sottostante ad esse. È uno strumento indispensabile per filtrare le immagini. L'applicazione classica è la correlazione del flusso video per trovare turni o flussi ottici. Il rivelatore di spostamento più semplice è anche, in un certo senso, un correlatore delle differenze. Dove le immagini non sono correlate, c'era movimento.

Funzioni di filtraggio
Una classe interessante di filtri è il filtraggio delle funzioni. Si tratta di filtri puramente matematici che consentono di rilevare una semplice funzione matematica nell'immagine (linea, parabola, cerchio). Viene costruita un'immagine accumulatrice nella quale 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), si traccia l'insieme dei punti (a; b) della retta y = ax + b, per cui vale l'uguaglianza. Otteniamo bellissime immagini:


(il primo vantaggio è per chi è il primo a trovare il trucco nella foto e una tale definizione e spiegarlo, il secondo più per chi è il primo a dire ciò che viene mostrato qui)
La trasformata di Hough permette di trovare qualsiasi funzione parametrizzabile. Ad esempio, un cerchio. C'è una trasformazione modificata che ti permette di cercare qualsiasi forma. Questa trasformazione è terribilmente affezionata ai matematici. Ma durante l'elaborazione delle immagini, purtroppo non sempre funziona. Velocità molto lenta, sensibilità molto alta alla qualità della binarizzazione. Anche in situazioni ideali, ho preferito cavarmela con altri metodi.
L'analogo della trasformata di Hough per le linee rette è la trasformata di Radon. Viene calcolato tramite la FFT, che offre un vantaggio in termini di prestazioni in una situazione in cui ci sono molti punti. Inoltre, può essere applicato a un'immagine non binarizzata.
Contorni filtranti
Una classe separata di filtri è il filtraggio dei bordi e dei contorni. I contorni sono molto utili quando vogliamo passare dal lavorare con un'immagine al lavorare con gli oggetti in quell'immagine. Quando un oggetto è abbastanza complesso, ma ben definito, spesso l'unico modo per lavorarci è selezionarne i contorni. Esistono numerosi algoritmi che risolvono il problema del filtraggio dei contorni:

Molto spesso, viene utilizzato Kenny, che funziona bene e la cui implementazione è in OpenCV (anche Sobel è lì, ma sembra peggio per i contorni).



Altri filtri
Sopra ci sono i filtri, le cui modifiche aiutano a risolvere l'80-90% dei problemi. Ma oltre a loro, ci sono filtri più rari utilizzati nelle attività locali. Esistono dozzine di tali filtri, non li elencherò tutti. Interessanti sono i filtri iterativi (ad esempio, un modello di aspetto attivo), nonché le trasformazioni ridgelet e curvlet, che sono una lega del filtraggio wavelet classico e dell'analisi nel campo della trasformata del radon. La trasformazione beamlet funziona magnificamente sul confine della trasformata wavelet e dell'analisi logica, consentendo di evidenziare i contorni:

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

Parte 2. Elaborazione logica dei risultati di filtraggio

Il filtraggio fornisce una serie di dati adatti per l'elaborazione. Ma spesso non puoi semplicemente prendere e utilizzare questi dati senza elaborarli. In questa sezione saranno presenti diversi metodi classici che consentono di passare dall'immagine alle proprietà degli oggetti, oppure agli oggetti stessi.
Morfologia
Il passaggio dal filtraggio alla logica, secondo me, sono i metodi della morfologia matematica (,,). In effetti, queste sono le operazioni più semplici per costruire ed erodere immagini binarie. Questi metodi consentono di rimuovere il rumore da un'immagine binaria aumentando o diminuendo gli elementi esistenti. Sulla base della morfologia matematica, esistono algoritmi di contornatura, ma di solito usano una sorta di algoritmi ibridi o algoritmi in combinazione.
Analisi del contorno
Gli algoritmi per ottenere i limiti sono già stati menzionati nella sezione sul filtraggio. I contorni risultanti vengono semplicemente convertiti in contorni. Per l'algoritmo di Canny, ciò avviene automaticamente; per altri algoritmi è necessaria una binarizzazione aggiuntiva. È possibile ottenere un contorno per un algoritmo binario, ad esempio, mediante l'algoritmo beetle.
Il contorno è una caratteristica unica di un oggetto. Ciò consente spesso 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 necessarie 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 chiara.
Punti speciali
I punti singolari sono caratteristiche uniche di un oggetto che consentono di associare un oggetto a se stesso oa classi di oggetti simili. Ci sono diverse dozzine di modi per evidenziare tali punti. Alcuni metodi evidenziano punti speciali in fotogrammi adiacenti, alcuni dopo un lungo periodo di tempo e quando si cambia l'illuminazione, alcuni consentono di trovare punti speciali che rimangono tali anche quando l'oggetto viene ruotato. Iniziamo con metodi che ci permettono di trovare punti singolari non così stabili, ma calcolabili velocemente, e poi andiamo in complessità crescente:
Primo grado. Punti singolari stabili per secondi. Tali punti vengono utilizzati per guidare l'oggetto tra fotogrammi video adiacenti o per unire immagini da telecamere vicine. Questi punti includono i massimi locali dell'immagine, gli angoli dell'immagine (il migliore dei rivelatori, forse il rivelatore di Haris), i punti in cui vengono raggiunti i massimi di dispersione, determinati gradienti, ecc.
Seconda classe. Punti speciali che sono stabili con cambiamenti di illuminazione e piccoli movimenti del soggetto. Tali punti vengono utilizzati 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 attorno a tali punti. Alcune delle wavelet citate in precedenza possono essere la base per tali punti. Ad esempio, primitive di Haar, ricerca abbagliamento, ricerca di altre funzioni specifiche. Questi punti includono i punti trovati con il metodo dell'istogramma del gradiente direzionale (HOG).
Terza classe. Punti stabili. Conosco solo due metodi che danno stabilità completa e le loro modifiche. Questi sono SURF e SIFT. Ti permettono di trovare punti speciali anche quando ruoti l'immagine. Il calcolo di tali punti richiede più tempo rispetto ad altri metodi, ma un tempo piuttosto limitato. Sfortunatamente, questi metodi sono brevettati. Sebbene, in Russia, gli algoritmi non siano brevettati, quindi usalo per il mercato interno.

Parte 3. Formazione

La terza parte del racconto sarà dedicata ai metodi che non lavorano direttamente con l'immagine, ma che consentono di prendere decisioni. Si tratta principalmente di vari metodi di apprendimento automatico e processo decisionale. Di recente, Yandyks ha pubblicato un corso su questo argomento su Habr, c'è un'ottima selezione. Eccolo nella versione testuale. Per uno studio serio dell'argomento, ti consiglio vivamente di guardarli. Qui cercherò di delineare diversi metodi di base utilizzati nel riconoscimento dei modelli.
Nell'80% delle situazioni, l'essenza dell'apprendimento nel problema del riconoscimento è la seguente:
Esiste un set di test contenente diverse classi di oggetti. Lascia che sia la presenza/assenza di una persona nella foto. Per ogni immagine c'è un insieme di caratteristiche che sono state identificate da qualche caratteristica, sia essa Haar, HOG, SURF o qualche tipo di wavelet. L'algoritmo di apprendimento deve costruire un tale modello, in base al quale sarà in grado di analizzare una nuova immagine e decidere quale degli oggetti è nell'immagine.
Come è fatto? Ciascuna delle immagini di prova è un punto nello spazio delle funzioni. Le sue coordinate sono il peso di ciascuna delle caratteristiche nell'immagine. Lascia che i nostri segni siano: "La presenza degli occhi", "La presenza di un naso", "La presenza di due mani", "La presenza delle orecchie", ecc ... umani. Per una persona in uno spazio del genere, il punto sarà corretto. Per la scimmia, il punto è per il cavallo. Il classificatore viene addestrato su un campione di esempi. Ma non tutte le fotografie mostravano le mani, altre non hanno gli occhi e nel terzo la scimmia ha un naso umano a causa di un errore nel classificatore. Il classificatore umano addestrato 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 è disegnare nello spazio delle caratteristiche le aree che sono caratteristiche per gli oggetti di classificazione. Ecco come apparirà l'approssimazione successiva alla risposta per uno dei classificatori (AdaBoost) nello spazio bidimensionale:


Ci sono molti classificatori. Ognuno di loro lavora meglio in qualche compito per conto proprio. Il compito di selezionare un classificatore per un compito specifico è per molti versi un'arte. Ecco alcune belle immagini sull'argomento.
Caso semplice, separazione unidimensionale
Analizziamo per esempio il caso più semplice di classificazione, quando lo spazio delle caratteristiche è unidimensionale e dobbiamo dividere 2 classi. La situazione si verifica più spesso di quanto si possa immaginare: ad esempio, quando è necessario distinguere tra due segnali, o confrontare un pattern con un campione. Diciamo che abbiamo un campione di allenamento. In questo caso, si ottiene un'immagine, dove sull'asse X ci sarà una misura di somiglianza e sull'asse Y - il numero di eventi con tale misura. Quando l'oggetto cercato assomiglia a se stesso, si ottiene la gaussiana sinistra. Quando non piace - giusto. Un valore di X = 0,4 divide i campioni in modo che una decisione errata riduca al minimo la probabilità che venga presa una decisione sbagliata. È la ricerca di un tale separatore il problema della classificazione.


Una piccola osservazione. Il criterio che minimizza l'errore non sarà sempre ottimale. Il grafico successivo è un grafico di un vero sistema di riconoscimento dell'iride. Per un tale sistema, il criterio è scelto in modo tale da ridurre al minimo la probabilità di una falsa ammissione di una persona non autorizzata all'oggetto. Questa probabilità è chiamata "errore di primo tipo", "probabilità di falso allarme", "falso positivo". Nella letteratura in lingua inglese "False Access Rate".
) AdaBusta è uno dei classificatori più comuni. Ad esempio, la cascata di Haar è costruita su di essa. Solitamente vengono utilizzati quando è necessaria una classificazione binaria, ma nulla vieta di insegnare per un numero maggiore di classi.
SVM (,,,) Uno dei classificatori più potenti con molte implementazioni. Fondamentalmente, 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 di Adabusta ed è necessaria la selezione del nucleo corretto.

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

E infine

Cosa leggere?
1) Una volta mi è piaciuto molto il libro "Digital Image Processing" di B. Yane, che è scritto in modo semplice e chiaro, ma allo stesso tempo presenta quasi tutta la matematica. Ottimo per familiarizzare con i metodi esistenti.
2) I classici del genere sono R. Gonzalez, R. Woods "Digital Image Processing". Per qualche ragione per me è stato più difficile del primo. Molta meno matematica, ma più metodi e immagini.
3) "Elaborazione e analisi delle immagini nelle attività di visione artificiale" - scritto sulla base di un corso tenuto presso uno dei dipartimenti di PhysTech. Ci sono molti metodi e le loro descrizioni dettagliate. Ma a mio avviso il libro ha due grossi inconvenienti: il libro è fortemente incentrato sul pacchetto software che lo accompagna, nel libro troppo spesso la descrizione di un metodo semplice si trasforma in giungla matematica, dalla quale è difficile fare un 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 ELABORAZIONE DEL SEGNALE DIGITALE

Argomento 18. RICONOSCIMENTO DI OGGETTI IMMAGINI

Ogni conoscenza umana inizia con l'intuizione, passa ai concetti e finisce con le idee.

Emanuele Kant. filosofo tedesco. XVIII 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. XX secolo

Introduzione.

1. Pre-elaborazione delle immagini. Corregge la luminosità e il contrasto delle immagini. Istogrammi di luminanza. Livellamento dell'illuminazione delle immagini. Risoluzione spaziale migliorata.

2. Determinazione dei confini degli oggetti nell'immagine. Trova i bordi in base a un gradiente. Trovare i confini in base al Laplaciano.

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

4. Assegnazione 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 dell'oggetto.

5. Rilevamento e riconoscimento di oggetti immagine. Rilevamento di oggetti. Un metodo per confrontare direttamente 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 non è compito di questa sezione. Chiunque può ottenere informazioni più complete su questi problemi da altre fonti. Di seguito sono riportate raccomandazioni pratiche per l'implementazione di singoli metodi direttamente correlati ai problemi più tipici, che vengono risolti in base all'uso degli algoritmi discussi nell'argomento precedente.

Il riconoscimento di oggetti nelle immagini dei sensori ottici (immagini fotografiche, aeree, satellitari e di altro tipo) è un'area tradizionale dell'elaborazione delle immagini. Allo stesso tempo, i metodi di riconoscimento degli oggetti iniziarono ad essere ampiamente utilizzati nei sistemi di osservazione televisiva automatica, nelle immagini a raggi X e di 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 delle IMMAGINI

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 ricercati o studiati. I metodi di pre-elaborazione dipendono dalle attività di ricerca, sono piuttosto diversi e possono includere, ad esempio, la selezione 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 , migliorando la qualità dell'immagine, ecc. Considera tra questi quelli senza i quali, di solito, nessun compito tipico può fare.

Correzione della luminosità e del contrasto delle immagini .

Le immagini inserite in un computer sono spesso a basso contrasto. Lo scarso contrasto, di regola, è dovuto a un'ampia gamma di luminosità riproducibile, che è spesso combinata con la non linearità delle caratteristiche di trasferimento del livello. La natura della dipendenza della variazione della luminosità della tavolozza di pixel dal valore minimo al valore massimo influisce anche sulla qualità dell'immagine. Una funzione lineare di modifica dell'intensità dei pixel è ottimale. 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 grigi. In questo caso, il contrasto dell'immagine viene aumentato "allungando" la reale gamma dinamica di luminosità all'intera scala utilizzando una trasformazione lineare per elemento.

Un altro modo per correggere la luminosità della tavolozza è invertire l'immagine in ingresso. Poiché è piuttosto difficile distinguere tra 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 (molti gradi di luminosità) in un'immagine binaria (due gradi). La trasformazione viene eseguita per ridurre la ridondanza di informazioni 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 esclusi i tratti insignificanti (sfondo).

La soglia di un'immagine in scala di grigi consiste nel dividere tutti gli elementi dell'immagine in due classi A 1 e A 2 in base alla luminosità con un bordo A c, e nell'eseguire il corrispondente filtraggio di soglia con la sostituzione dei 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., aventi una distribuzione bimodale, il confine è fissato al minimo tra le modalità di distribuzione. Nel caso generale, l'immagine può essere multimodale e, se viene stabilita una corrispondenza sufficientemente affidabile tra gli oggetti e le modalità corrispondenti della loro luminosità, il filtraggio di soglia può prevedere anche diverse classi di luminosità dei pixel.

La gamma di luminosità di un'immagine del computer può differire dalla gamma di luminosità originale, ad esempio, a causa di un'esposizione insufficiente. Ci sono due modi possibili per correggere la luminosità. Secondo il primo metodo, l'immagine viene visualizzata linearmente nell'intervallo della luminosità originale. Il secondo metodo prevede di limitare la luminosità dei pixel nell'immagine elaborata ai livelli di soglia massimo e minimo, ed 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 toni medi e la maggior parte dei dettagli dell'immagine sono colorati nei toni medi e contrasto eccessivo può portare alla perdita di questi dettagli o renderne difficile la selezione.

Istogrammi di luminanza. Uno strumento per valutare i livelli di intensità dei pixel è un istogramma, una visualizzazione grafica delle caratteristiche quantitative della distribuzione probabilistica dell'intensità (luminosità) dei pixel in un'area selezionata dell'immagine. Al valore di intensità massima dei pixel viene assegnato un livello di gradazione dell'intensità di 255 (bianco), al valore più scuro viene assegnato un valore di 0 (nero). Le intensità nell'intervallo da 0 a 255 hanno una scala di variazione lineare, oppure impostate secondo la funzione di variazione adottata, ad esempio amplificando i segnali deboli (scala di grigi) e attenuando i segnali forti (nella zona bianca), che aumenta la spazialità e risoluzione del contrasto dell'immagine o di determinate aree di interesse.

Esiste un metodo noto per migliorare le immagini basato sul calcolo del logaritmo dei coefficienti spettrali della trasformata di Fourier dell'immagine originale (calcolo del cepstrum). Nella trasformazione inversa del cepstrum in un'immagine, l'istogramma dell'immagine è allineato 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 è distorto verso livelli bassi (la luminosità della maggior parte degli elementi è inferiore alla media). Uno dei metodi per migliorare la qualità di tali immagini è modificare il loro istogramma. L'equalizzazione dell'istogramma può essere effettuata sulla base dell'elevazione a potenza del modulo dei coefficienti spettrali della trasformata di Fourier dell'immagine, mantenendo segno e fase dei coefficienti. Se indichiamo l'esponente α, allora per α<1 операция извлечения корня степени α уменьшает большие спектральные коэффициенты и увеличивает малые. Такое перераспределение энергии в частотной плоскости изображения приводит к более эффективному использованию динамического диапазона интенсивностей пикселей изображения в пространственной области.

La scelta di una buona maschera di regolazione dell'istogramma dell'intensità dei pixel aumenta il contrasto, migliorando così la risoluzione del contrasto dei dettagli. I programmi di elaborazione dispongono di comandi che consentono di impostare i colori per la mappatura dei colori di immagini che hanno transizioni fluide o, al contrario, nitide dei dettagli visualizzati nell'area di interesse. In combinazione con l'inversione del contrasto, che converte un'immagine negativa in un'immagine positiva, questo metodo migliora anche il contrasto dei dettagli dell'immagine piccoli 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 su processi di filtraggio delle immagini lineari e non lineari che trasformano l'istogramma dell'intensità.

Livellamento dell'illuminazione delle immagini. Spesso, alcune aree di un'immagine sono troppo scure per essere viste. Se aggiungi luminosità all'intera immagine, le aree inizialmente luminose 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 piuttosto lentamente e può essere considerata un segnale a bassa frequenza. L'immagine stessa può essere considerata, in media, come un segnale a frequenza più alta. Se nel corso della fotografia questi segnali venissero aggiunti, allora potrebbero essere separati usando filtri convenzionali. Tuttavia, in una fotografia reale, otteniamo il prodotto dell'immagine che vogliamo vedere e la mappa dell'irradianza. E poiché questi segnali non vengono aggiunti, ma moltiplicati, non sarà possibile eliminare le irregolarità nell'illuminazione 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, il problema della divisione dei segnali moltiplicati può essere ridotto al problema della divisione dei segnali moltiplicati. 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 della divisione del prodotto dei segnali si riduce al problema della divisione della somma dei segnali LF e HF e viene risolto utilizzando un filtro HF che rimuove le basse frequenze dalla somma dei segnali. Resta da prendere un esponente dal segnale ricevuto per tornare alla scala di ampiezza originale.

Un filtro RF può essere implementato come segue. Innanzitutto, viene applicata un'operazione di sfocatura (filtro passa basso) all'immagine, quindi quella sfocata 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 della convoluzione 2D con un tale kernel è intensivo dal punto di vista computazionale, anche con una dimensione del kernel relativamente piccola. Tuttavia, un effetto equivalente può essere ottenuto filtrando prima le linee dell'immagine con una gaussiana unidimensionale e poi le colonne dell'immagine risultante. L'effetto ottenuto dall'equalizzazione dell'illuminazione potrebbe essere troppo forte (le aree scure avranno la stessa luminosità di quelle chiare). Per ridurre l'effetto, puoi semplicemente fondere l'immagine elaborata con l'originale in una certa proporzione.

Migliorare la risoluzione spaziale ... L'interpretazione delle immagini è strettamente correlata alla qualità della presentazione di dettagli fini e non distorti. In questo caso è necessario che all'aumentare dei frammenti non si verifichi un deterioramento della risoluzione dell'immagine quando si eseguono operazioni matematiche di interpolazione 2D della funzione di 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 aree della stessa luminosità o cromaticità, anche se queste aree hanno una dimensione di diversi pixel.

La chiarezza delle immagini nei programmi professionali viene corretta, di regola, determinando i valori ottimali di luminosità e contrasto scegliendo 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" - definire i contorni degli oggetti impostando la differenza nei valori di intensità dei pixel vicini, sufficiente affinché il programma aumenti il ​​contrasto tra di loro.

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

Nell'elaborazione delle immagini giocano un ruolo importante gli algoritmi di filtraggio del rango, che consentono di eliminare la "sfocatura" dei dettagli (per migliorarne la messa a fuoco) scegliendo una maschera bidimensionale n × n di pixel, eseguendo l'operazione di classificazione del pixel valori di intensità all'interno della maschera specificata e assegnando un valore pari al valore massimo al pixel centrale mediante classifica. Il tipo classificato include anche la procedura di filtraggio mediano, che elimina i segnali casuali non correlati e il rumore impulsivo nell'immagine senza "sfocare" i bruschi cambiamenti di luminosità ai bordi degli oggetti.

L'uso informativo del filtraggio lineare è dovuto alla sua capacità di correggere vari tipi di distorsioni derivanti dall'imperfezione dei dispositivi che formano l'immagine. Mediante il filtraggio lineare, è possibile ridurre l'influenza del rumore di fluttuazione e altri difetti sulle immagini riprodotte in modo da aumentare il 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 di una componente di rumore del segnale viene effettuata mediante filtraggio inverso (deconvoluzione). Tuttavia, va tenuto presente che i filtri di deconvoluzione hanno un guadagno di dispersione del rumore maggiore di 1 e, invece di migliorare l'immagine, il rumore può aumentare.

I metodi di filtraggio non lineare basati su maschere di frequenza sono considerati promettenti, consentendo di ridurre l'influenza dei componenti a bassa frequenza del segnale dell'immagine e migliorare l'influenza dei componenti ad alta frequenza, che aumenta la risoluzione spaziale dei dettagli descritti nello spettro dell'immagine da spazi più elevati frequenze.

^ 18.2. DETERMINAZIONE DEI CONFINI DEGLI OGGETTI 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 non risiede nella luminosità delle singole aree, ma nei loro contorni. Il compito di evidenziare i contorni è costruire un'immagine dei confini precisi degli oggetti e dei contorni delle aree omogenee.

In genere, il bordo di un soggetto in una fotografia viene visualizzato dalla differenza di luminosità tra due aree relativamente uniformi. Ma la differenza di luminosità può anche essere causata dalla trama del soggetto, dalle ombre, dalle alte luci, dai cambiamenti di illuminazione, ecc.

Chiameremo un'immagine contorno un insieme dei suoi pixel, in prossimità dei quali si osserva un brusco cambiamento nella funzione di luminosità. Poiché nell'elaborazione digitale l'immagine viene presentata in funzione di argomenti interi, i contorni sono rappresentati da linee larghe almeno un pixel. Se l'immagine originale, oltre alle aree di luminosità costante, contiene aree con luminosità che varia uniformemente, la continuità delle linee di contorno non è garantita. D'altra parte, se c'è rumore in un'immagine "costante a tratti", allora i contorni "extra" possono essere trovati in punti che non sono i confini della regione.

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

La procedura per costruire un'immagine binaria dei confini degli oggetti consiste solitamente in due operazioni sequenziali: la selezione dei contorni e la loro sogliatura.

L'immagine originale è soggetta a 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 significativamente da zero solo nelle aree di brusche variazioni della luminosità dell'immagine. La soglia forma un oggetto contorno da questa immagine. La scelta della soglia nella seconda fase dovrebbe basarsi sulle seguenti considerazioni. Se la soglia è troppo alta, potrebbero apparire interruzioni dei bordi e lievi differenze di luminosità non verranno rilevate. Se la soglia è troppo bassa, possono apparire falsi contorni a causa del rumore e della non uniformità delle aree.

Trova i bordi in base a un gradiente. Uno dei modi più semplici per isolare i confini è la differenziazione spaziale della funzione di luminanza. Per una funzione di luminanza 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 la velocità di variazione della luminosità nelle direzioni corrispondenti.

Riso. 18.2.1.


L'isolamento delle differenze di luminosità è illustrato 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. . v).

Nelle attività pratiche, è necessario selezionare i contorni, la cui direzione è arbitraria. Per questi scopi, puoi utilizzare il modulo gradiente della funzione 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, quindi, nell'immagine risultante (Fig. D), i punti corrispondenti ai contorni hanno un livello di luminosità aumentato.

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

Un esempio pratico di rilevamento dei bordi 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 puoi vedere nella figura, nei punti di una grande differenza di luminosità, il gradiente ha una lunga lunghezza. Filtrando i pixel con una lunghezza del gradiente maggiore di una certa soglia , otteniamo un'immagine dei confini (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à nel numero di bordi (pelle di scoiattolo). Quando l'immagine è rumorosa, la mappa dei punti di confine sarà inquinata e solo rumore, poiché non si tiene conto che i punti di confine corrispondono non solo a differenze di luminosità, ma a differenze di luminosità tra aree relativamente monotone.

Per ridurre l'effetto di questo inconveniente, l'immagine viene prima sottoposta a un filtro di livellamento gaussiano. Con il filtro anti-aliasing, i piccoli dettagli insignificanti vengono sfocati più velocemente delle differenze tra le aree. Il risultato dell'operazione è visibile nell'immagine (4). Tuttavia, in questo caso, i bordi 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 di confine, è 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 con una lunghezza di più pixel, orientato nella direzione del gradiente e con il centro nel 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 nel segmento. Tutti i pixel massimi con lunghezze del gradiente maggiori di una certa soglia possono essere riconosciuti come limite. Il gradiente di luminosità in ogni punto è perpendicolare al bordo, quindi dopo aver soppresso i non massimi, non rimangono linee in grassetto. Ad ogni sezione perpendicolare della linea in grassetto, rimarrà un pixel con la lunghezza massima del gradiente.

La perpendicolarità del gradiente di luminosità al bordo può essere utilizzata per tracciare il bordo a partire da qualche pixel del bordo. Questo tracciamento viene utilizzato nel filtraggio dell'isteresi massima dei pixel. L'idea alla base del filtraggio dell'isteresi è che un contorno di confine lungo e stabile molto probabilmente contiene pixel con una differenza di luminosità particolarmente grande e, a partire da un tale pixel, il contorno può essere tracciato attraverso i pixel di confine con una differenza di luminosità minore.


Riso. 18.2.3.
Quando si esegue il filtraggio dell'isteresi, vengono introdotti non uno, ma due valori di soglia. Quello più piccolo () corrisponde alla lunghezza minima del gradiente alla quale un pixel può essere riconosciuto come pixel di confine. Più grande (), corrisponde alla lunghezza minima del gradiente alla quale un pixel può inizializzare un tracciato. Dopo che il contorno è stato inizializzato al pixel massimo P con una lunghezza del gradiente maggiore di , viene considerato ogni pixel massimo adiacente ad esso Q... Se il pixel Q ha una lunghezza del gradiente maggiore di e un angolo tra i vettori PQ e ( P) è vicino a 90 o, quindi P viene aggiunto al contorno e il processo passa 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 livellamento gaussiano;

Trovare il gradiente di luminosità in ogni pixel;

Trovare i pixel massimi;

Filtraggio dell'isteresi massima dei pixel.

Questo algoritmo è chiamato algoritmo Canny ed è più spesso utilizzato per trovare i confini.

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

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


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

^ 18.3. ISOLARE OGGETTI NELL'IMMAGINE

Quando si lavora con un'immagine, è spesso necessario separare una parte significativa per l'utente (oggetto) da tutto il resto (sfondo). Quindi, ad esempio, nelle immagini mediche un determinato oggetto viene evidenziato 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, l'attività può essere risolta nel modo più semplice: l'utente traccia semplicemente l'oggetto con il cursore del mouse, ma per oggetti complessi ciò richiederà uno sforzo e un tempo significativi.

Algoritmo della 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 circostanti con un colore simile e (a discrezione dell'utente) aggiunge l'area selezionata all'oggetto. Per valutare la "somiglianza", l'utente imposta una matrice di soglie per la sensibilità della distanza tra i colori. Più è grande, più pixel risaltano in un solo 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 abbastanza monotono. Con forti variazioni di colore, è impossibile separare con precisione il soggetto dallo sfondo utilizzando questo algoritmo. Se la soglia di sensibilità è troppo bassa, una parte significativa dell'oggetto potrebbe non risaltare. L'aumento della soglia fa sì che la selezione "fluisca" fuori dall'oggetto. Nel caso di un oggetto variopinto o di un confine sfocato tra lo sfondo e l'oggetto, l'algoritmo è quasi indifeso.

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


Riso. 18.3.1.
Immagina un raster di un'immagine sotto forma di grafico (Fig. 18.3.1) con bordi formati dai lati dei pixel. Quando l'utente specifica due punti consecutivi P e Q, l'algoritmo "a forbice" 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 colore differenza di pixel lungo i suoi lati. Poiché i bordi corrispondenti ai cambiamenti di colore netti avranno una lunghezza condizionale più corta, 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 in presenza di uno sfondo variegato e/o un oggetto variegato. In tali casi, sono necessari più endpoint.

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

Se il risultato della selezione non soddisfa l'utente la prima volta, aggiunge pixel ai set originali, aggiungendoli all'immagine. Ad esempio, se l'algoritmo ha erroneamente attribuito un pezzo di un oggetto allo sfondo, l'utente contrassegna alcuni 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 dei vertici intendiamo il colore del pixel. Colleghiamo ogni vertice con i vertici vicini e otteniamo otto bordi che collegano i centri dei pixel vicini. Aggiungiamo un peso a ciascun bordo:

( / L) esp (-  (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à alla differenza di colore. Maggiore è la differenza tra i colori dei vertici, minore è questo peso.

Aggiungiamo due vertici terminali al grafico, chiamati source e drain, e colleghiamoli con archi a ciascun vertice del grafico. Assegniamo un peso infinito ai bordi che collegano la sorgente con i vertici dell'insieme A e ai bordi che collegano il pozzo con i vertici dell'insieme B.

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

"Tagliamo" tutti i bordi del grafico in due insiemi disgiunti: la sorgente e lo stock, e assumeremo che i vertici che cadono nell'insieme di origine corrispondano ai pixel dell'oggetto, e il resto, che cade in il set di serie, corrispondono ai pixel di sfondo. Il numero di possibili varianti di tagli è pari a 2 P, dove P è il numero di pixel, poiché ogni vertice di pixel può essere assegnato o all'insieme di origine o di drenaggio.


Riso. 18.3.2.
Un peso di taglio è la somma dei pesi di tutti i bordi tagliati, esclusi i bordi con peso infinito. Il taglio minimo è il taglio con il peso minimo, mentre i pixel di origine di questo taglio verranno assegnati rispettivamente ai pixel dell'oggetto e ai pixel di stock - allo sfondo. Il confine tra il soggetto e lo sfondo verrà tracciato, se possibile, tra pixel con colori molto diversi.

Naturalmente, non può esserci una separazione ideale. Ad esempio, un'area di un'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 tali casi, la scelta del parametro λ nella formula del peso del bordo stabilisce 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 di colore diverso, e al diminuire del valore di , l'importanza del fatto che pixel di colore simile ai pixel dell'insieme A ( o B) sono assegnati all'oggetto (sfondo). Un esempio di selezione degli oggetti è mostrato in Fig. 18.3.2.

^ 18.4. Isolamento 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 prendere in considerazione sia le proprietà degli oggetti stessi sia le capacità di risoluzione degli shaper del segnale dell'immagine primaria. Effettueremo la selezione delle caratteristiche usando l'esempio dell'elaborazione di immagini monocromatiche (a un livello). Nelle immagini a colori, gli algoritmi considerati possono essere applicati a ciascun colore separatamente.

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

- area e perimetro dell'immagine dell'oggetto;

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

- il numero e la posizione relativa degli angoli;

- 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 delle coordinate dell'array S (x, y) appartenente all'oggetto selezionato.

Il perimetro dell'immagine dell'oggetto P viene calcolato dopo che i confini dell'oggetto sono stati selezionati sommando una pluralità di 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:

Xq = xS (x, y) / S (x, y), Y q = yS (x, y) / S (x, y),

Dove X e - numero 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 = r (x, y max); R min = r (x, y min), dove x, y  P (punti perimetrali).

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


Riso. 18.4.2.
Determinazione dei lati del rettangolo circoscritto (fig. 18.4.2) si esegue 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 = x max - x min, H = 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 consiste nell'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, è 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 del frammento di contorno, ad esempio tra gli 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 del profilo. Quindi la regola di decisione potrebbe assomigliare a questa:

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

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

Determinazione dei momenti di inerzia dell'oggetto. Il termine "momenti di inerzia dell'immagine di un oggetto" non è correlato alla meccanica. Semplicemente per calcolare la caratteristica indicata, vengono utilizzate espressioni matematiche, simili al calcolo dei momenti di inerzia di un corpo materiale, dove invece dei valori delle masse dei singoli punti del corpo, i valori di illuminazione a vengono sostituiti i punti corrispondenti della sua immagine. I momenti di inerzia sono segnali informativi per il successivo riconoscimento di schemi.



Riso. 18.4.4.
Indichiamo i principali momenti di inerzia richiesti dell'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 attorno agli assi verticale e orizzontale del sistema di coordinate, nonché il 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 tse = xA (x, y) / A (x, y), Y tse = yA (x, y) / A (x, y),

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

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

J xy = [(x- X tse) (y- Y tse) A (x, y)].

3. Vengono calcolati i punti principali.

J 1,2 = .

^ 18.5. rilevamento e riconoscimento di oggetti IMMAGINI

Rilevamento di oggetti. Il rilevamento (identificazione) di immagini di oggetti in un'immagine distorta da rumore e interferenze può essere definito come una procedura per verificare una certa condizione per confrontare due numeri: il risultato della trasformazione dell'immagine analizzata e un certo 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 disponibilità 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.

Il tipo specifico di operatori L [.], P [.] e la qualità del rilevamento dipendono dalla disponibilità di informazioni a priori su oggetti previsti, rumore, interferenze e distorsioni. La base per determinare i parametri ottimali degli operatori è la teoria delle soluzioni 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 dell'obiettivo, che può essere considerato noto, e il problema si riduce alla procedura classica per rilevare un segnale di un noto forma sullo sfondo di un rumore normale additivo con un valore medio nullo. In questo caso, gli operatori di trasformazione sono integrali di correlazione calcolati utilizzando rispettivamente una data descrizione di un'immagine nota di un oggetto e un rumore tipico. L'identificazione consiste nel confrontare l'immagine di un oggetto con gli standard di una data classe. L'oggetto è deciso dalla migliore corrispondenza.

Un metodo per confrontare direttamente un oggetto con un'immagine di riferimento. Sia S (x, y) - l'immagine originale dell'oggetto, F (x, y) - l'immagine di riferimento. L'algoritmo di confronto diretto è il seguente:

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. Ad un valore maggiore della soglia D, la condizione (18.5.2) può essere soddisfatta da vari oggetti e possono verificarsi errori associati ad una errata identificazione dell'oggetto (errori del primo tipo). Al diminuire di D, possono verificarsi errori come la mancanza di un oggetto (errori del secondo tipo). Aggiustando il valore di D si può solo modificare il rapporto tra le probabilità di occorrenza di errori di prima e seconda specie 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) in corrispondenza del quale si ottiene la somma massima della correlazione incrociata:

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

Nell'identificazione degli oggetti è conveniente utilizzare i coefficienti di correlazione, che in prima approssimazione danno anche una stima della probabilità di riferire un oggetto a un dato standard:

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

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

Il metodo di correlazione è più affidabile, ma richiede molti più calcoli. Ma quando si elaborano immagini binarie, questo non è così importante, 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 del riferimento, il loro allineamento in coordinate spaziali e il mantenimento delle stesse scale.

Metodi di riconoscimento basati sul sistema di funzionalità utilizzano anche gli standard degli oggetti, ma come elementi di confronto vengono utilizzate le caratteristiche dell'oggetto e lo standard, 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 eseguita con qualche errore e, pertanto, è necessario identificare e tenere conto della natura e del grado di possibile dispersione delle stime del caratteristiche utilizzate per ciascuno degli oggetti previsti, vale a dire utilizzare istogrammi della distribuzione dei valori delle caratteristiche.

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

AV Davydov.

letteratura

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

47. Soifer V.A. Elaborazione di immagini al computer. Parte 2. Metodi e algoritmi. - Soros Educational Journal n. 3, 1996.

48. Apalkov I.V., 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 A.L. Sistemi automatizzati di sorveglianza televisiva. Seconda parte. Fondamenti e algoritmi aritmetici e logici. Tutorial. - SPb: SPb, GUITMO, 2005 .-- 88p.

50. Rosenfeld L.G. e altri Possibilità di post-elaborazione di immagini diagnostiche TC e RM su un personal computer. - Chasopis medico ucraino - № 6 (56) - XI / XII, 2006.

51. Lukin A. Introduzione all'elaborazione del segnale digitale (fondamenti matematici) .- M .: Università statale di Mosca, laboratorio

Principali articoli correlati