ITTO940774A1 - Coprocessore per riconoscimento caratteri - Google Patents

Coprocessore per riconoscimento caratteri Download PDF

Info

Publication number
ITTO940774A1
ITTO940774A1 IT94TO000774A ITTO940774A ITTO940774A1 IT TO940774 A1 ITTO940774 A1 IT TO940774A1 IT 94TO000774 A IT94TO000774 A IT 94TO000774A IT TO940774 A ITTO940774 A IT TO940774A IT TO940774 A1 ITTO940774 A1 IT TO940774A1
Authority
IT
Italy
Prior art keywords
character
mask
coprocessor
type
pixels
Prior art date
Application number
IT94TO000774A
Other languages
English (en)
Inventor
Pasquale Scelza
Giovanni Borghero
Fabio Caccia
Riccardo Cecinati
Original Assignee
Finmeccanica Spa
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Finmeccanica Spa filed Critical Finmeccanica Spa
Priority to IT94TO000774A priority Critical patent/IT1268611B1/it
Publication of ITTO940774A0 publication Critical patent/ITTO940774A0/it
Priority to EP95115347A priority patent/EP0704817A3/en
Priority to US08/537,282 priority patent/US5787200A/en
Publication of ITTO940774A1 publication Critical patent/ITTO940774A1/it
Application granted granted Critical
Publication of IT1268611B1 publication Critical patent/IT1268611B1/it

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/74Image or video pattern matching; Proximity measures in feature spaces
    • G06V10/75Organisation of the matching processes, e.g. simultaneous or sequential comparisons of image or video features; Coarse-fine approaches, e.g. multi-scale approaches; using context analysis; Selection of dictionaries
    • G06V10/751Comparing pixel values or logical combinations thereof, or feature values having positional relevance, e.g. template matching

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Theoretical Computer Science (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Character Input (AREA)
  • Image Processing (AREA)

Abstract

Coprocessore (1) di tipo SLAVE atto ad essere accoppiato con un processore (3) MASTER ed atto a cooperare con almeno una memoria esterna (5). Il coprocessore (1) comprende una memoria interna (34) che comunica con una linea dati interna (26a, 26b) estendentesi tra un primo ed un secondo circuito di interfaccia (8, 17) comunicanti rispettivamente con il processore (3) e con la memoria esterna (5). La memoria interna (34) è atta a contenere un carattere (Cj) formato da una matrice rettangolare di punti (pixel) corrispondente ad un carattere alfanumerico digitalizzato. Il coprocessore comprende una unità elettronica di calcolo (37) atta a svolgere un operazione di confronto tra un carattere (Cj) proveniente dalla memoria interna (34) ed una matrice (Mi) di riferimento proveniente dalla memoria esterna (5).[Figura 1].

Description

D E S C R I Z IO N E
La presente invenzione è relativa ad un coprocessore per riconoscimento caratteri.
Sono noti coprocessori di tipo SLAVE i quali cooperano con un processore MASTER che controlla il coprocessore attivando e programmando il coprocessore e leggendo i dati elaborati dal coprocessore stesso.
Tali coprocessori poesono cooperare con una memoria esterna atta a contenere dati utilizzati dal coprocessore per il suo funzionamento.
Scopo della presente invenzione è quello di realizzare un coprocessore SLAVE del tipo sopra descritto vantaggiosamente utilizzabile in processi di riconoscimento caratteri (OCR: Optical Character Recognition) .
In particolare, scopo della presente invenzione è quello di realizzare un coprocessore atto a confrontare caratteri incogniti (formati da una matrice rettangolare di punti (pixel) il cui valore binario corrisponde al tratto/allo sfondo di un carattere alfanumerico digitalizzato) con maschere di riferimento.
11 precedente scopo è raggiunto dalla presente invenzione in quanto essa è relativa ad un coprocessore per riconoscimento caratteri di tipo SLAVE atto ad essere accoppiato ad un processore MASTER ed atto a cooperare con almeno una memoria esterna, caratterizzato dal fatto di comprendere:
- primi mezzi di interfaccia e decodifica interna (8) comunicanti con detto processore;
- secondi mezzi di interfaccia e decodifica interna (17) comunicanti con la detta memoria esterna;
- almeno una linea dati interna eetendentesi tra detti primi mezzi di interfaccia e detti secondi mezzi di interfaccia;
- almeno una memoria interna comunicante con detta linea dati interna;
detta memoria interna essendo atta a contenere almeno un carattere (Cj) formato da una matrice binaria rettangolare di punti (pixel);
ciascun carattere (Cj) comprendendo un primo tipo di pixel presentanti un primo valore binario ( "1 ") e corrispondenti al tratto di un carattere alfanumerico digitalizzato ed un secondo tipo di pixel presentanti un secondo valore binario ("0") e corrispondenti allo sfondo del carattere alfanumerico;
detta memoria esterna essendo atta a contenere una pluralità di maschere di riferimento (Hi) ciascuna delle quali è formata da una matrice rettangolare binaria di punti (pixel);
detta pluralità di maschere definendo una classe di maschere atte ad essere confrontate con detto carattere;
detto coprocessore comprendendo inoltre un unità elettronica di calcolo comunicante in ingresso con detti secondi mezzi di interfaccia e con detta memoria interna;
detta unità elettronica di calcolo essendo atta a comunicare in uscita con detto processore MASTER;
detta unità elettronica di calcolo essendo atta a svolgere un'operazione di confronto tra un carattere (Cj) ed almeno una detta maschera (Mi) calcolando almeno una distanza (Di) che esprime la differenza tra il carattere (Cj) e la maschera (Mi).
L'invenzione verrà<" >ora illustrata con riferimento alle figure allegate che rappresentano una preferita forma di realizzazione non limitativa in cui:
la figura 1 illustra in modo schematico un coprocessore per riconoscimento caratteri realizzato secondo i dettami della presente invenzione;
la figura 2 illustra un diagramma logico a blocchi delle operazioni svolte dal coprocessore di figura 1; la figura 3 dettaglia un primo blocco di figura 2; la figura 4 dettaglia un secondo blocco di figura 2; e
le figure 5a-5i e le figure 6a-6e illustrano graficamente alcune operazioni svolte dal processore della presente invenzione.
Con particolare riferimento alla figura 1 è indicato con 1, nel suo insieme, un coprocessore per riconoscimento caratteri realizzato secondo i dettami della presente invenzione.
Il coprocessore 1 è di tipo SLAVE a 32 bit e coopera con un processore MASTER 3 (o HOST) di tipo noto (<'>ad esempio un processore 80386 oppure 80486) che controlla il funzionamento del processore SLAVE 1. Il processore MASTER 3 programma ed attiva il coprocessore SLAVE 1 ed al termine dell'elaborazione legge i risultati.
Il coprocessore .1 coopera inoltre con una memoria esterna 5 (di tipo noto), in particolare una memoria di tipo statico a 32 bit presentante una dimensione massima di 2 Megabyte. La memoria 5 può essere formata da uno o più (ad esempio due o quattro) banchi di memoria.
Il coprocessore 1 comprende un primo circuito di interfaccia e decodifica interna 8 il quale comunica il processore 3 attraverso una linea dati bidirezionale 10 (BUS) utilizzata per la trasmissione dei dati da e verso il processore 3.
Il circuito di interfaccia 8 comunica con il processore 3 attraverso una linea dati 12 (BUS) utilizzata per la trasmissione dei segnali di controllo dal processore 3 al coprocessore 1. Il circuito di interfaccia 8 comunica inoltre con una linea dati 14 (BUS) utilizzata per la trasmissione degli indirizzi dal processore 3 al coprocessore 1.
Il coprocessore 1 comprende un secondo circuito di interfaccia e decodifica interna 17 il quale comunica con la memoria esterna 5 attraverso una linea dati bidirezionale (BUS) 19 utilizzata per la trasmiesione dei dati da e verso la memoria 5.
Il secondo circuito di interfaccia 17 comunica con la memoria 5 attraverso una linea dati 21 (BUS) utilizzata per la trasmissione dei segnali di controllo verso la memoria 5. Il circuito di interfaccia 17 comunica inoltre con una linea dati 23 (BUS) utilizzata per la trasmissione degli indirizzi dal coprocessore 1 alla memoria 5.
Il coproceesore 1 comprende inoltre una prima linea dati interna 26a (BUS) la quale si estende dal primo circuito di interfaccia 8 al secondo circuito di interfaccia 17 ed una seconda linea dati interna 26b (BUS) la quale si estende dal secondo circuito di interfaccia 17 al primo circuito di interfaccia 8.
Dalle linee dati interne 26a, 26b si dipartono rispettive linee dati 28a, 28b che comunicano con una pluralità, di registri 30 di controllo R1,R2,....Rn (descritti in seguito).
Le linee dati interne 26a,26b comunicano inoltre rispettivamente con linee dati 32a (di input) 32b (di output) comunicanti con una seconda memoria interna 34 atta a contenere, come sarà meglio chiarito in seguito, una matrice binaria di punti (pixel) definente un carattere Cj da sottoporre a riconoscimento.
Il coproceesore 1 comprende una unità logica aritmetica 37 (ALU Aritmetic Logic Unit) provvista di registri di ingresso 39 e di registri di uscita 41 comunicanti rispettivamente con il secondo circuito di interfaccia 17 ed il primo circuito di interfaccia 8 mediante rispettive linee dati 43, 44.
I registri di ingresso 39 sono inoltre collegati con la seconda memoria interna 34 attraverso una linea dati 48.
11 coprocessore 1, come sarà meglio chiarito in seguito, è atto a svolgere operazioni di confronto caratteri (PATTERN MATCHING) tra un carattere incognito Cj ed una pluralità di caratteri noti Mi detti in seguito maschere.
I caratteri Cj provengono dalla digitalizzazione di immagini analogiche di caratteri alfanumerici (lettere, numeri, punteggiatura) manoscritti o dattiloscritti e sono definiti da matrici rettangolari formate da punti (pixel) che possono assumere i valori binari zero o uno (Bitmap binarie) .
In particolare, ciascun carattere Cj comprende un primo insieme di pixel (il cui valore binario è pari ad "1") corrispondenti al tratto del carattere ed un secondo insieme di pixel (il cui valore binario è pari a "0") corrispondenti allo sfondo del carattere digitalizzato .
Nella descrizione che segue si intenderà per carattere Cj la matrice formata dal primo e dal secondo insieme di pixel.
La larghezza di ogni carattere Cj è pari a trentadue bit e l'altezza massima di tale carattere Cj è pari a 64 bit. Ciascun carattere Cj è pertanto definito da una matrice binaria rettangolare avente dimensione massima 32x64 bit.
Le maschere MI sono definite da matrici binarie aventi dimensioni massime pari anche esse a 32x64 bit.
La memoria esterna 5 è atta a contenere le maschere Mi mentre i caratteri Cj vengono trasferiti nella memoria 34 al fine di rendere possibile il confronto. Il confronto tra maschere Mi e caratteri Cj è svolto, con le modalità che saranno chiarite in seguito, dalla unità logica matematica 37 che fornisce in uscita una pluralità di valori numerici Di ciascuno dei quali esprime la distanza, secondo una metrica particolare, tra il carattere Cj in esame ed una rispettiva maschera Mi. Tali valori numerici Di vengono successivamente recuperati dal processore 3.
Con particolare riferimento alla figura 2, verrà ora illustrato lo schema a blocchi che definisce l'insieme delle operazioni svolte dal coprocessore 1 della presente invenzione.
Tale schema a blocchi rappresenta un esempio preferito di funzionamento del coprocessore 1 dal momento che alcune fasi in seguito descritte possono essere svolte con modalità e/o ordine diverso da quello rappresentato;" alcune<' >fasi possono inoltre essere assenti.
Alcune operazioni, descritte in modo sequenziale, possono inoltre essere svolte in parallelo.
Inizialmente ai perviene ad un blocco 100 nel quale sono programmati alcuni registri 30 R del coprocessore 1; la programmazione di tali registri consente al coprocessore 1 di operare correttamente. In particolare, nel blocco 100 viene programmato un registro IDWAIT che contiene una pluralità di parametri che definiscono
- l'identificazione del coprocessore 1;
- il numero di passi di attesa (wait) con cui accedere alla memoria esterna 5;
- il numero dei banchi di memoria presenti nella memoria esterna 5;
- le modalità di accesso (INTERRUPT oppure POLLING) al coprocessore 1;
- particolari sul formato dei dati di uscita dal coprocessore 1.
Mei blocco 100 viene inoltre definito un registro HLIMMM che identifica la dimensione massima della memoria esterna 5.
Il blocco 100 è seguito da un blocco 110 in cui viene effettuato il caricamento delle maschere Mi nella memoria esterna 5; in particolare, i dati relativi alle maschere Mi trasferite dal processore 3 transitano nel circuito di interfaccia 8, lungo la linea dati 26a ed il circuito di interfaccia 17 da cui vengono Inviati alla memoria 5 attraverso la linea dati 19.
II blocco 110 è seguito da un blocco 115 in cui viene azzerata una prima variabile j secondo l'operazione logica j=0.
Il blocco 115 è seguito da un blocco 117 in cui viene svolto il caricamento del carattere Cj nella memoria 34 e nell'unità 37; in particolare, i dati relativi al carattere Cj trasferiti dal processore 3 transitano nel circuito di interfaccia 8, lungo la linea dati 26a e la linea dati 32a da cui vengono inviati alla memoria 34.
Nel blocco 117 viene inoltre definito un registro HiGH_CRT che contiene l'altezza HC (espressa in parole a 32 bit) del carattere Cj in esame. Come è già stato detto precedentemente l'altezza carattere HC è compresa tra 1 e 64.
Il blocco 117 è seguito da un blocco 118 in cui viene azzerata una seconda variabile i secondo l'operazione logica i=0.
Il blocco 118 è seguito da un blocco 120 nel quale viene definito un registro STMM che specifica il valore del puntatore della maschera dalla quale deve iniziare il confronto.
Nel blocco 120 viene inoltre definito un registro GOMMANO che contiene una pluralità di parametri che definiscono :
11 numero massimo NUMMSK di maschere da confrontare con il carattere CJ (l'insieme delle NUMMSK maschere che vengono confrontate con un carattere corrisponde in generale ad una classe di maschere);
l'abilitazione/disabilitazione al centraggio della maschera (le operazioni di centraggio saranno descritte in seguito) .
Il blocco 120 è seguito da un blocco 130 nel quale si attende che un registro di comando START venga attivato; quando tale registro è attivato (START=1) dal blocco 130 si passa ad un blocco 135 che provvede a caricare una prima maschera Mi nella unità di input 39 delle unità logica aritmetica 37. Per effettuare tale operazione i dati della maschera Mi transitano dalla memoria esterna 5 alla unità 37 attraverso la linea 19/ il circuito 17 e la linea 43. Il blocco 130 può essere contemporaneo al blocco 120.
Il blocco 135 è seguito da un blocco 140 (dettagliato in seguito) che, se la maschera Mi ed il carattere Cj presente nella memoria 34 hanno altezze diverse, effettua la centratura della maschera Hi adeguando l'altezza HM della maschera a quella del carattere.
Il blocco 140 è seguito da un blocco 145 nel quale viene verificato (esaminando il registro COMMAND) se è Btato richiesto il centraggio della maschera Mi; in caso positivo (richiesta di centraggio) dal blocco 145 si passa contemporaneamente a cinque blocchi 150, 151, 152, 153 e 154 altrimenti (centraggio non richiesto) dal blocco 145 si passa solamente al blocco 154.
Il blocchi 150, 151, 152, 153 e 154 sono seguiti da un blocco 160 nel caso che sia richiesto il centraggio, mentre il blocco 154 è seguito da un blocco 170 nel caso che non sia stato richiesto il centraggio.
Il blocco 160 è comunque seguito dal blocco 170.
Il blocco 154 svolge il confronto tra il carattere Cj e la maschera Mi caricata dal blocco 135; tale confronto ò svolto mediante un algoritmo Hplus (descritto in dettaglio in seguito) che fornisce in CE uscita una distanza Di che esprime una misura della differenza tra il carattere in esame Cj e la maschera di riferimento Mi secondo una espressione del tipo:
La distanza Di diminuisce con l'aumentare della "somiglianza” tra il carattere Cj e la maschera Mi.
I blocchi 150, 151, 152 e 153 sono atti rispettivamente ad applicare quattro traslazioni (rispettivamente a destra, a sinistra, in basso ed in alto) alla maschera Mi (detta posizione centrale) calcolando rispettive maschere Mi-1 (LEFT-SHIFT), Mi-r (RIGHT-SHIFT), Mi-U (UP-SHIFT) e Mi-d (DOWN-SHIFT).
Dal momento che la maschera Mi è definita da una matrice rettangolare di pixel, le quattro maschere Mi-1, Mi-r, Mi-h, Mi-d vengono rispettivamente generate spostando (di un pixel) tutti i pixel significativi della maschera centrale Mi rispettivamente verso un bordo sinistro, destro, alto o basso della matrice rettangolare. Nelle figure 6a-6e sono rispettivamente illustrate una maschera Mi (centrale), sinistra Mi-1 (LEFT-SHIFT), destra Mi-r (RIGHT-SHIFT), spostata in alto Mi-u (UP-SHIFT) e spostata in basso Mi-d (DOWN-SHIFT); l'esempio illustrato è relativo al numero 8".
Il blocchi 150, 151, 152 e 153 sono atti rispettivamente a svolgere, mediante l'algoritmo Hplus [1], il confronto tra il carattere Cj caricato nell'unità 37 e le maschere Mi-1 (LEFT-SHIFT), Mi-r (RIGHT-SHIFT), Mi-u (UP-SHIFT) e Mi-d (DOWN-SHIFT).
Le operazioni svolte dai blocchi 150, 151, 152, 153 e 154 sono svolte in parallelo da circuiti di calcolo distinti ALU1, ALU2, ALU3, ALU4 ed ALU5 (figura 1) dell'unità logico matematica 37.
Ciascun circuito ALU1, ALU2, ALU3, ALU4 ed ALU5 riceve pertanto in ingresso un insieme di pixel che definisce rispettivamente la maschera Mi-1 (LEFT-SHIFT), Mi-r (RIGHT-SHIFT), Mi-u (UP-SHIFT), Mi-d (DOWN-SHIFT) e la maschera Mi (centrata).
Ciascun circuito ALU1, ALU2, ALU3, ALU4 ed ALU5 fornisce pertanto in uscita una distanza 01-1 (LEFT-SHIFT), Di-r (RIGHT-SHIFT), Di-U (UP-SHIFT), Di-d (DOWN-SHIFT) e Di che rappresenta la "distanza<11 >esistente tra la maschera alimentata in ingresso ed il carattere Cj.
Il blocco 160 seleziona tra tutti 1 valori di distanza e Di calcolati dai blocchi 150, 151, 152, 153 e 154, quello (Dimin-ehift) avente valore minimo; a tale valore Dimin-shift corrisponde la maschera che presenta massima verosimiglianza con il carattere Cj tra la maschera Mi e 'T
le sue traslazioni. Tale valore Dmin-shift viene memorizzato in una memoria tampone.
Nel caso che si abbiano eguaglianze tra le distanze calcolate dai blocchi 150-154, il blocco 160 sceglie la maschera vincente con il seguente ordine di priorità! 1°) maschera Mi centrata;
2*) maschera traslata a destra Mi-r;
3") maschera traslata a sinistra Mi-1;
4°) maschera traelata in alto Mi—u;
5”) maschera traslata in basso Ki-d.
Il blocco 170 seleziona tra i valori Di calcolati successivamente dal blocco 154 e tra i valori di Dimin-shift calcolati dal blocco 160 (nel caso che sia richiesto il centraggio) quello (Dimin-abs) avente valore minimo; a tale valore minimo Dimin-abs corrisponde una maschera Mi-max che presenta massima verosimiglianza (maschera "vincente") con il carattere Cj; cioè tra tutte le maschere della classe, e tra tutte le traslazioni svolte su tali maschere, la maschera Mi-max è quella che "assomiglia" di più al carattere Cj in esame. In particolare, il blocco 170 seleziona il Sf minimo tra la maschera vincente appena calcolata e la maschera vincente ottenuta in un calcolo precedente; l'iterazione di tali operazioni per una intera classe di maschere consente di rilevare la maschera Mi-max.
Nel caso di eguaglianza di distanza tra due maschere successive viene scelto il valore cronologicamente calcolato per primo.
Il blocco 170 programma il registro WINADRR caricando l'indirizzo della maschera vincente Mi-max, il valore della distanza minima Dmin e la codifica della posizione vincente (posizione centrale, shift a destra, shift a sinistra, shift in alto e shift in basso).
Il blocco 1706 seguito da un blocco 175 nel quale viene verificato se sono state confrontate con il carattere Cj tutte le NUMMSK maschere di una classe.
In caso positivo (tutte le maschere di una classe confrontate con il carattere Cj) dal blocco 175 si passa ad un blocco 180, altrimenti si passa ad un blocco 176 che aumenta di una unità la variabile i (i=i+l) in modo tale da selezionare nella memoria 5 una maschera successiva a quella utilizzata. Dal blocco 176 si ritorna al blocco 135 che provvede a caricare nell'unità 37 una nuova maschera Mi+1.
Nel blocco 180 il valore Dimin-abs e l'indirizzo della maschera vincente Mi-max vengono letti dal processore 3.
Il blocco 180 è seguito da un blocco 185 in cui viene verificato se sono state confrontate con il carattere Cj tutte le classi previste per il confronto.
In caso positivo (tutte le classi confrontate con il carattere Cj) dal blocco 185 si passa ad un blocco 190, altrimenti si ritorna al blocco 118.
Nel blocco 190 viene verificato se si desidera sottoporre a riconoscimento altri caratteri; in caso negativo dal blocco 190 si passa ad un blocco 191 che termina l'elaborazione, altrimenti dal blocco 190 si passa ad un blocco 192 che aumenta di una unità la variabile j (j=j+l) del carattere in modo tale richiedere un altro carattere da sottoporre a confronto. Dal blocco 192 si ritorna la blocco 117 che provvede a caricare un nuovo carattere Cj+1 nell'unità 37.
Con riferimento alla figura 3 è dettagliato il blocco 140 che esegue la centratura della maschera Mi rispetto al carattere Cj.
In particolare, il blocco 140 comprende un primo blocco 300 nel quale viene rilevata l'altezza HC del carattere Cj e l'altezza HK della maschera Mi in uso.
Il blocco 300 è seguito da un blocco 310 che calcola il valore assoluto della differenza tra l'altezza HC del carattere e l'altezza HM della maschera secondo l'espressione:
dove K è un numero intero.
Se tale differenza K è diversa da zero (cioè se la maschera ed il carattere hanno altezze diverse) il blocco 310 è seguito da un blocco 320, altrimenti (cioè se la maschera e il carattere hanno la stessa altezza) dal blocco 310 si passa al blocco 145 (figura 1).
il blocco 320 verifica se il numero intero K è pari; in caso positivo (K pari) dal blocco 320 si passa ad un blocco 330 altrimenti (K dispari) dal blocco 320 si passa ad un blocco 340.
Il blocco 330, nel caso in cui la maschera presenti altezza HM minore rispetto a quella (HC) del carattere, aggiunge K/2 righe di pixel pari a zero al di sopra della riga superiore dalla maschera Mi e K/2 righe di pixel pari a zero al di sotto della riga inferiore dalla maschera Mi a cui vengono complessivamente aggiunte K righe di zeri; in questo modo la maschera Mi modificata ha la stessa altezza del carattere Cj. Nel caso in cui il carattere presenti altezza HC minore rispetto a quella (HM) della maschera, il blocco 330 aggiunge K/2 righe di pixel pari a zero al di sopra della riga superiore dal carattere Cj e K/2 righe di pixel pari a zero al di sotto della riga inferiore dal carattere Cj a -cui vengono complessivamente aggiunte K righe di zeri; in questo modo il carattere Cj modificato ha la stessa altezza della maschera Mi
Il blocco 340, nel caso In cui la maschera presenti altezza HM minore rispetto a quella (HC) del carattere, aggiunge INTERO(K/2) righe di pixel pari a zero al di sopra della riga superiore dalla maschera Mi e INTERO (K/2) 1 righe di pixel pari a zero al di sotto della riga inferiore dalla maschera Mi a cui vengono complessivamente aggiunte K righe di zeri; in questo modo la maschera Hi modificata ha la stessa altezza del carattere Cj .
Nel caso in cui il carattere presenti altezza HC minore rispetto a quella (HM) della maschera, il blocco 340 aggiunge INTER0(K/2) righe di pixel pari a zero al di sopra della riga superiore dal carattere Cj e INTERO (K/2) 1 righe di pixel pari a zero al di sotto della riga inferiore dal carattere Cj a cui vengono complessivamente aggiunte K righe di zeri; in questo modo il carattere Cj modificato ha la stessa altezza della maschera Mi.
Dai blocchi 330, 340 si passa al blocco 145 (figura 1).
Ad esempio, se HC=10 e HM=7 si ha che K =3 (dispari); in questo caso il blocco 340 aggiunge INTERO(3/2)=l righe zeri al di sopra della riga superiore dalla maschera Mi e INTERO(3/2)+l = 2 righe di zeri al di sotto della riga inferiore dalla maschera Mi a cui vengono complessivamente aggiunte 3 righe di zeri.
Con riferimento alle figure 4 e 5a-5i sono descritte graficamente le operazioni effettuate dai blocchi 150-154 per svolgere il confronto tra la maschera Mi ed il carattere Cj.
Nella descrizione che segue la maschera sarà indicata, per semplicità, con la lettera M ed il carattere con la lettera C.
I blocchi 150-154 comprendono un primo blocco 400 nel quale viene definito un primo insieme di punti (pixel) Bc; in particolare l'insieme dei punti Bc è definito dai punti p del carattere C che soddisfano la seguente relazione:
p=l (p è un pixel che vale 1); e
p è adiacente ad almeno un pixel del carattere C che vale zero.
Tali punti definiscono un contorno interno (fig.
5c) dell'insieme dei pixel a 1 del carattere alfanumerico rappresentato sulla matrice C.
II blocco 400 è seguito da un blocco 410 nel quale viene definito un secondo insieme di punti (pixel) Bm; in particolare l'insieme dei punti Bm è definito dai punti p della maschera M che soddisfano la seguente relazione:
p=l (p è un pixel che vale 1); e
p è adiacente ad almeno un pixel della maschera M che vale zero.
Tali punti definiscono un contorno interno (fig.
5d) dell'insieme dei pixel corrispondenti al tratto del carattere alfanumerico digitalizzato.
Il blocco 410 è seguito da un blocco 420 nel quale viene definito un terzo insieme di punti (pixel) Ac; in particolare l'insieme dei punti Ac è definito dai punti p del carattere C che soddisfano la seguente relazionei p=0 (p è un pixel che vale 0); e
p è adiacente ad almeno un pixel del carattere C che vale uno.
Tali punti definiscono un contorno esterno (fig 5e) all'insieme dei pixel pari a 1 del carattere alfanumerico rappresentato sulla matrice C.
il blocco 420 è seguito da un blocco 430 nel quale viene definito un quarto insieme di punti (pixel) Am; in particolare l'insieme dei punti Am è definito dai punti | p della maschera M che soddisfano la seguente relazione:
P=0 (p è un pixel pari a 0); e
p è adiacente ad almeno un pixel della maschera M che vale uno.
Tali punti definiscono un contorno esterno (fig 5f) all'insieme dei pixel pari a "1" del carattere alfanumerico rappresentato sulla maschera M.
Il blocco 430 è seguito da un blocco 440 nel quale viene calcolata la distanza D secondo la espressione:
dove Bc, Bm, Ac, Am sono gli insiemi di punti definiti dai blocchi 400, 410, 420, 430, AND e EXOR sono gli operatori logico Booleani intersezione ed OR esclusivo e Num. è la funzione di conteggio dei bit che valgono "1" logico.
Nelle figure 5a-5i sono illustrate graficamente le operazioni svolte del blocco 150-154, in particolare:
- la figura 5a rappresenta l'insieme di punti corrispondenti ad un carattere Cj (nell'esempio la lettera "L") da sottoporre a riconoscimento;
- la figura 5b rappresenta l'insieme di punti corriepondenti ad una maschera Mi di riferimento (nell'esempio la lettera "L");
- la figura 5c rappresenta l'insieme di punti Bc; - la figura 5d rappresenta l'insieme di punti Bm; - la figura 5e rappresenta l'insieme di punti Ac; - la figura 5f rappresenta l'insieme di punti Am; - la figura 5g rappresenta l'intersezione (AND) tra l'insieme di punti Bc e l'insieme di punti Am (nell'esempio rappresentato formato otto punti);
- la figura 5h rappresenta l'intersezione (AND) tra l'insieme di punti Bm e l'Insieme di punti Ac (nell'esempio rappresentato formato da 4 punti);
- la figura 5i rappresenta l'EXOR tra la maschera M ed il carattere Cj (nell'esempio rappresentato formato da diciotto punti).
Applicando la [3] nell'esempio rappresentato si ha: D = 18 - 8 - 4 = 6.
Il coprocessore 1 presenta nella versione attuale una frequenza massima operativa pari a 33 MHz ed è alloggiato in un contenitore a montaggio superficiale di tipo PQFP a 160 pin.
Da quanto sopra detto risulta chiaro come il cpprocessore 1 consenta di confrontare rapidamente un carattere incognito Cj con una (o più) classe di maschere Mi rilevando la maschera che meglio approssima il carattere Cj. Il coprocessore 1 è in grado di processare centinaia di caratteri al secondo in dipendenza del numero di maschere confrontate, del clock e del tipo di processore MASTER usato. sti
L'algoritmo [3] utilizzato dall'unità 37 è inoltre estremamente efficace in quanto esso permette di ottimizzare la capacità di riconoscimento e garantisce una sensibile riduzione dell'errore rispetto ai sistemi -noti.
L'operazione di centraggio svolta dal blocco 145 consente inoltre di migliorare il tasso di riconoscimento caratteri .
La parallelizzazione delle operazioni svolte dai blocchi 150-154 consente di aumentare la velocità di elaborazione.
La centratura svolta dal blocco 140 consente inoltre di confrontare caratteri e maschere aventi altezze diverse.
Il coprocessore 1 può inoltre operare con memorie aventi tempo di accesso e dimensioni diverse dal momento che i parametri caratteristici della memoria sono regolabili mediante il registro IDWAIT.
I costi del coprocessore sono inoltre estremamente contenuti.
II coprocessore 1 può inoltre essere impegnato in strutture modulari in cui sono presenti un numero variabile di coprocessori operanti in parallelo e controllati da un unico processore MASTER. In tale caso, i coprocessori possono condividere una unica memoria esterna contenente una stessa classe di maschere oppure ogni processore può essere provvisto di una propria memoria esterna contenente una rispettiva classe di maschere .
Risulta infine chiaro che modifiche e varianti possono essere apportate al coprocessore descritto senza peraltro uscire dall'ambito protettivo dell'invenzione stessa.

Claims (1)

  1. R I V E N D I C A Z I O N I 1.- Coprocessore per riconoscimento caratteri di tipo SLAVE atto ad essere accoppiato ad un processore (3) MASTER ed atto a cooperare con almeno una memoria esterna (5), caratterizzato dal fatto di comprenderei - primi mezzi di interfaccia e decodifica interna (8) comunicanti con detto processore (3); - secondi mezzi di interfaccia e decodifica interna (17) comunicanti con la detta memoria esterna (5); almeno una linea dati interna (26a,26b) estendentesi tra detti primi mezzi di interfaccia (8) e detti secondi mezzi di interfaccia (17); - almeno una memoria interna (34) comunicante con detta linea dati interna (26a,26b); detta memoria interna (34) essendo atta a contenere almeno un carattere (Cj) formato da una matrice binaria rettangolare di punti (pixel); ciascun carattere (Cj) comprendendo un primo tipo di pixel presentanti un primo valore binario (”1") e corrispondenti al tratto di un carattere alfanumerico digitalizzato ed un secondo tipo di pixel presentanti un secondo valore binario ("0") e corrispondenti allo sfondo del carattere alfanumerico; detta memoria esterna (5) essendo atta a contenere una pluralità di maschere di riferimento (Mi) ciascuna delle quali è formata da una matrice rettangolare binaria di punti (pixel); detta pluralità di maschere definendo una classe di maschere atte ad essere confrontate con detto carattere; detto coprocessore (1) comprendendo inoltre un unità elettronica di calcolo (37) comunicante in ingresso (39) con detti secondi mezzi di interfaccia (17) e con detta memoria interna (34); detta unità elettronica di calcolo (37) essendo atta a comunicare in uscita (41) con detto processore MASTER (3); detta unità elettronica di calcolo (37) essendo atta a svolgere un'operazione di confronto tra un carattere (Cj) ed almeno una detta maschera (Mi) calcolando almeno una distanza (Di) che esprime la differenza tra il carattere (Cj) e la maschera (Mi). 2 .- Coprocessore secondo la rivendicazione 1, caratterizzato dal fatto che la detta unità elettronica di calcolo (37) comprende! - primi mezzi elettronici di calcolo (400) atti a definire un primo insieme di punti (pixel) Bc formato dai punti p del carattere (Cj) che soddisfano la seguente relazione: p è un pixel del primo tipo del carattere (Cj); e p è adiacente ad almeno un pixel del secondo tipo del carattere (Cj); - secondi mezzi elettronici di calcolo (410) atti a definire un secondo insieme di punti (pixel) Bm formato dai punti p della maschera (Mi) che soddisfano la seguente relazione: p è un pixel del primo tipo della maschera (Mi); e p è adiacente ad almeno un pixel del secondo tipo della maschera (Mi); - terzi mezzi elettronici di calcolo (420) atti a definire un terzo insieme di punti (pixel) Ac formato dai punti p del carattere (Cj) che soddisfano la seguente relazione: p è un pixel del secondo tipo del carattere (Cj); e p è adiacente ad almeno un pixel del primo tipo del carattere (C j); - quarti mezzi elettronici di calcolo (430) atti a definire un quarto insieme di punti (pixel) Am formato dai punti p della maschera (Mi) che soddisfano la seguente relazione: P è un pixel del secondo tipo della maschera (Mi); e p è adiacente ad almeno un pixel del primo tipo della maschera (Mi); e quinti mezzi elettronici (440) atti a calcolare la detta distanza (Di) secondo una espressione del tipo: D= Num.(C EXOR M) - Num (Bc AND Am) - Num (Bm AND Ac) dove C ed M rappresentano detto carattere e detta maschera Bc, Bm, Ac, Am sono rispettivamente i detti primi, secondi, terzi e quarti insiemi di punti, AND e EXOR sono gli operatori logico Booleani intersezione ed OR esclusivo e Num. è la funzione di conteggio dei pixel del primo tipo. 3.» Coprocessore secondo la rivendicazione 1 o 2, caratterizzato dal fatto di comprendere mezzi di centratura (140) atti a confrontare il valore (HC) di una dimensione di detto carattere (Cj) con un valore (HM) di una corrispondente dimensione di detta maschera (Mi) ed atti ad adattare detta dimensione (HM) di detta maschera a detta dimensione (HC) di detto carattere. 4.- Coprocessore secondo la rivendicazione 3, caratterizzato dal fatto che i detti mezzi di centratura (140) comprendono t mezzi rilevatori (300) atti a rilevare l'altezza (HC) del carattere (Cj) e l'altezza (HM) della maschera (Mi) in uso in detta unità elettronica di calcolo (37); - primi mezzi-di confronto (310) atti a rilevare il valore assoluto K della differenza tra la detta altezza (HC) del carattere e la detta altezza (HM) della maschera; - secondi mezzi di confronto (320) selezionati da detti primi mezzi di confronto (310) se detto valore assoluto K è diverso da zero ed atti a verificare se il detto valore assoluto K è pari; - primi mezzi di correzione (330), selezionati da detti secondi mezzi di confronto (320) per detto valore assoluto K pari, ed atti ad aggiungere K/2 righe di pixel del secondo tipo al di sopra della riga superiore della maschera in uso (Mi) e K/2 righe di pixel del secondo tipo al di sotto della riga inferiore della maschera in uso (Mi) quando l'altezza: (HM) della maschera è minore della altezza (HC) del carattere; detti primi mezzi di correzione (330) essendo atti ad aggiungere K/2 righe di pixel del secondo tipo al di sopra della riga superiore del carattere in uso (Cj) e K/2 righe di pixel del secondo tipo al di sotto della riga inferiore del carattere uso (Cj) quando l'altezza (HC) del carattere è minore della altezza (HM) della maschera; - secondi mezzi di correzione (340), selezionati da detti secondi mezzi di confronto (320) per detto valore assoluto k dispari, ed atti ad aggiungere INTERO(K/2) righe di pixel del secondo tipo al di sopra della riga superiore dalla maschera (Mi) in uso e INTERO(K/2) l righe di pixel del secondo tipo al di sotto della riga inferiore dalla maschera in uso (Hi) quando l'altezza (HM) della maschera è minore della altezza (HC) del carattere; detti secondi mezzi di correzione (340) essendo atti ad aggiungere INTERO (K/2) righe di pixel del secondo tipo al di sopra della riga superiore del carattere in uso (Cj) e INTERO(K/2) 1 righe di pixel del secondo tipo al di sotto della riga inferiore del carattere uso (Cj) quando l'altezza (HC) del carattere è minore della altezza (HM) della maschera. 5,.r Coprocessore secondo una qualsiasi delle 2 rivendicazioni da 2 a 4, caratterizzato del fatto di comprendere mezzi di centraggio (145) atti ad applicare traslazioni ortogonali alla maschera (Mi) alimentata alla detta unità di calcolo (37) calcolando rispettive maschere traslate a sinistra (M±-l), traslate a destra (Mi-r), traslate in alto (Mi-u) e traslate in basso (Mi-d); detto coprocessore (1) comprendendo primi (150,ALU1), secondi (151,ALU2), terzi (152,ALU3) e quarti (153,ALU4) circuiti di calcolo riceventi in ingresso rispettivamente detta maschera traslata a sinistra (Mi-1), traslata a destra (Mi-r), traslata in alto (Mi-u) e traslata in basso (Mi-d) e generanti in uscita, mediante detta espressione, rispettive distanze intermedie sinistre, destre, traslate in alto e traslate in basso (Di-1, Di-r, Di-u, Di-d); detto coprocessore (1) comprendendo un quinto circuito di calcolo (154,ALU5) ricevente in ingresso detta maschera e generante in uscita, mediante detta espressione, una distanza intermedia centrata; il detto coprocessore (1) comprendendo inoltre mezzi di selezione (170) riceventi in ingresso dette distanze intermedie calcolate dai detti primi (150), secondi (151), terzi (152), quarti (153) e quinti (154) circuiti di calcolo; detti mezzi di selezione (170) essendo atti a calcolare detta distanza (Di) selezionando la minore tra dette distanze intermedie. 6.- Coprocessore secondo la rivendicazione 5, caratterizzato dal fatto che i detti primi (150,ALDI), secondi (151,ALU2), terzi (152,ALU3), quarti (153,ALU4) e quinti (154,ALU5) circuiti di calcolo operano in parallelo. 7.- Coprocessore secondo una qualsiasi delle rivendicazioni precedenti, caratterizzato del fatto di comprendere primi mezzi elettronici di inizializzazione (100, IDWAIT) atti ad inizializzare una pluralità di parametri che definiscono! - l'identificazione del detto coprocessore (1); - il numero di passi di attesa (wait) della memoria esterna (5); - il numero dei banchi di memoria presenti nella memoria esterna (5); - le modalità di accesso al coprocessore (1); - il formato dei dati di uscita dal coprocessore (1)· 8.- Coprocessore secondo una qualsiasi delle rivendicazioni precedenti, caratterizzato del fatto di comprendere secondi mezzi elettronici di inizializzazione (100, HLIMMM) atti a selezionare parametri identificativi della dimensione della detta memoria esterna (5). 9.- Coprocessore secondo una qualsiasi delle rivendicazioni precedenti, caratterizzato del fatto di comprendere terzi mezzi elettronici di inizializzazione (120, COMMAND) atti ad inizializzare una pluralità di parametri che definiscono - il numero massimo NUMMSK di maschere Mi da confrontare con il carattere Cj; - il tipo di algoritmo utilizzato per svolgere il confronto ; l'indirizzo di partenza della memoria esterna (5) 10 .- Coprocessore per riconoscimento caratteri sostanzialmente come descritto ed illustrato con riferimento ai disegni allegati.
IT94TO000774A 1994-09-30 1994-09-30 Coprocessore per riconoscimento caratteri IT1268611B1 (it)

Priority Applications (3)

Application Number Priority Date Filing Date Title
IT94TO000774A IT1268611B1 (it) 1994-09-30 1994-09-30 Coprocessore per riconoscimento caratteri
EP95115347A EP0704817A3 (en) 1994-09-30 1995-09-28 Coprocessor for pattern comparison
US08/537,282 US5787200A (en) 1994-09-30 1995-09-29 Character recognition coprocessor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT94TO000774A IT1268611B1 (it) 1994-09-30 1994-09-30 Coprocessore per riconoscimento caratteri

Publications (3)

Publication Number Publication Date
ITTO940774A0 ITTO940774A0 (it) 1994-09-30
ITTO940774A1 true ITTO940774A1 (it) 1996-03-30
IT1268611B1 IT1268611B1 (it) 1997-03-06

Family

ID=11412802

Family Applications (1)

Application Number Title Priority Date Filing Date
IT94TO000774A IT1268611B1 (it) 1994-09-30 1994-09-30 Coprocessore per riconoscimento caratteri

Country Status (3)

Country Link
US (1) US5787200A (it)
EP (1) EP0704817A3 (it)
IT (1) IT1268611B1 (it)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7185175B2 (en) * 2004-01-14 2007-02-27 International Business Machines Corporation Configurable bi-directional bus for communicating between autonomous units
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3576534A (en) * 1969-08-11 1971-04-27 Compuscan Inc Image cross correlator
DE3069249D1 (en) * 1979-02-13 1984-10-31 Secr Defence Brit Data processing unit and data processing system comprising a plurality of such data processing units
US4380698A (en) * 1980-07-25 1983-04-19 Roper Corporation Multiprocessor control bus
IT1151351B (it) * 1982-01-19 1986-12-17 Italtel Spa Disposizione circuitale atta a realizzare lo scambio di dati tra una coppia di elaboratori operanti secondo il principio master-slave
DE3236299A1 (de) * 1982-09-30 1984-04-05 Siemens AG, 1000 Berlin und 8000 München Verfahren zum digitalen korrelieren von bildpunktfeldern zur erkennung bildhafter muster und schaltungsanordnung zur durchfuehrung des verfahrens
JPH0743755B2 (ja) * 1985-10-09 1995-05-15 日本電気株式会社 文字認識装置
JPH0642268B2 (ja) * 1986-10-31 1994-06-01 日本電気株式会社 文字認識装置
US4985848A (en) * 1987-09-14 1991-01-15 Visual Information Technologies, Inc. High speed image processing system using separate data processor and address generator
US5321772A (en) * 1990-03-05 1994-06-14 Honeywell Inc. Digital image processor
JPH0433869A (ja) * 1990-05-31 1992-02-05 Toshiba Corp データ処理装置
US5546538A (en) * 1993-12-14 1996-08-13 Intel Corporation System for processing handwriting written by user of portable computer by server or processing by the computer when the computer no longer communicate with server

Also Published As

Publication number Publication date
ITTO940774A0 (it) 1994-09-30
US5787200A (en) 1998-07-28
EP0704817A2 (en) 1996-04-03
EP0704817A3 (en) 1996-06-05
IT1268611B1 (it) 1997-03-06

Similar Documents

Publication Publication Date Title
US4408342A (en) Method for recognizing a machine encoded character
TWI435276B (zh) 用以辨識手寫符號之方法及設備
US5684891A (en) Method and apparatus for character recognition
US3492646A (en) Cross correlation and decision making apparatus
US5513277A (en) Measuring character and stroke sizes and spacings for an image
CN107851327B (zh) 粗细搜索方法、图像处理装置及记录介质
US20160092745A1 (en) Image processing apparatus and image processing method
GB2029994A (en) Apparatus and method for recognizing a pattern
US10438083B1 (en) Method and system for processing candidate strings generated by an optical character recognition process
CN111353575A (zh) 用于卷积神经网络的图块化格式
JP6877446B2 (ja) 多重オブジェクト構造を認識するためのシステムおよび方法
JPH0315793B2 (it)
CN111783767A (zh) 文字识别方法、装置、电子设备及存储介质
US3990045A (en) Array logic fabrication for use in pattern recognition equipments and the like
US4776024A (en) System for segmenting character components
CN110597678B (zh) 一种调试方法及调试单元
CN109871743B (zh) 文本数据的定位方法及装置、存储介质、终端
US4048615A (en) Automated character recognition system
ITTO940774A1 (it) Coprocessore per riconoscimento caratteri
US3987410A (en) Array logic fabrication for use in pattern recognition equipments and the like
CN109726722B (zh) 一种字符分割方法及装置
US3152318A (en) Character recognizer
US4615012A (en) Method of generating character patterns
CN113468972B (zh) 用于复杂场景手写识别的手写轨迹切分方法及计算机产品
Naz et al. Challenges in baseline detection of cursive script languages

Legal Events

Date Code Title Description
0001 Granted
TA Fee payment date (situation as of event date), data collected since 19931001

Effective date: 19970929