Differences

This shows you the differences between two versions of the page.

Link to this comparison view

spg:teme:2021:02 [2021/12/17 11:24]
anca.morar
— (current)
Line 1: Line 1:
-==== Tema 1 - Mini OCR ==== 
  
-  * **Responsabili:​** Anca Morar, Alexandru Grădinaru 
-  * **Lansare:​** 17 decembrie 2021 
-  * **Termen de predare:** 23 ianuarie 2022, ora 23:55 
-  * **Regulament:​** https://​ocw.cs.pub.ro/​courses/​spg/​regulament_general 
-  * **Notă: Orice informație ce nu a fost acoperită în acest document este la latitudinea voastră!** 
- 
-În cadrul acestei teme va trebui să implementați un OCR simplu. 
- 
- 
-=== Descrierea aplicației === 
-Aplicația va permite încărcarea unei imagini de intrare, identificarea literelor individuale și afișarea textului din acea imagine. Se va pune la dispoziție de asemenea o imagine șablon cu literele alfabetului și un fișier text care realizează corespondența dintre caractere și literele din imaginea șablon. ​ 
-Imaginea de intrare este următoarea:​ 
- 
-{{ :​spg:​teme:​2021:​imageonline-co-noisedimage.png?​300 |}} 
- 
-Imaginea șablon cu literele alfabetului este următoarea:​ 
- 
-{{ :​spg:​teme:​2021:​sablon.png?​300 |}} 
- 
-Fișierul text care realizează corespondența între caractere și literele din șablon conține pe fiecare linie următoarele elemente: 
-<​code> ​ caracterul x y </​code>​ 
-x și y reprezintă adresa pixelului de unde începe dreptunghiul încadrator al caracterului,​ în imaginea șablon. 
-Fișierul text poate fi descărcat de aici: {{:​spg:​teme:​2021:​sablon.txt|}} 
- 
-De exemplu, dacă pe prima linie in fișier avem următoarele elemente: 
-<​code> ​ A 280 233 </​code>​ 
-înseamnă că în imaginea șablon, la rezoluția originală (1920 x 1080), imaginea cu caracterul "​A"​ se găsește într-un dreptunghi încadrator care are colțul din stânga-sus la pixelul (280,233): 
- 
-{{ :​spg:​teme:​2021:​sablon_exemplu.png?​200 |}} 
- 
-Textul din imaginea de intrare se va afișa în consolă: MERRY CHRISTMAS AND A HAPPY NEW YEAR ! 
- 
-=== Pași === 
-Pașii algoritmului de identificare a textului sunt următorii: 
-  * **Aplicarea unui filtru median pentru eliminarea zgomotului din imagine** 
-    * Filtrul median constă în ordonarea intensităților pixelilor dintr-o vecinătate a pixelului curent și selectarea intensității de pe poziția din mijloc (de exemplu, dacă alegem o vecinătate 3x3, cu 9 pixeli, se va alege intensitatea de pe poziția a 5-a în vectorul ordonat de intensități). 
-    * Filtrul median va fi aplicat pe fiecare canal (R,G,B), independent 
-    * Rezultatul filtrului median aplicat pe imaginea de intrare este următorul: 
- 
-{{ :​spg:​teme:​2021:​merry_median.png?​300 |}} 
- 
-  * **Conversia pixelilor imaginii filtrate din spațiul RGB în spațiul HSV (Hue, Saturation, Value) ** 
-  * **Segmentarea imaginii utilizând nuanța (Hue) pe post de criteriu de similaritate** 
-    * Puteti folosi orice metodă de segmentare a imaginii, dar sunteți încurajați să aplicați un algoritm simplu de segmentare prin extindere (region growing): 
-      - Se consideră că toți pixelii imaginii sunt nevizitați 
-      - Se parcurg (și se bifează ca fiind vizitați) pixelii imaginii de sus în jos și de la stânga la dreapta. Dacă în parcurgerea scan-line se identifică un pixel de foreground (care are nuanța verde), atunci acesta primește un ID neutilizat până atunci, și este inserat într-o coadă, el reprezentând un pixel germen. Urmează o parcurgere în lățime (BFS), în care se procesează elementele din coadă (cât timp aceasta conține elemente). Procesarea unui element din coadă constă din următorii pași: 
-        - se identifică toți pixelii vecini nevizitați,​ care au o nuanță similară, și se introduc în coadă 
-        - pixelii vecini se marchează ca fiind nevizitați și primesc același ID al pixelului germen 
-        - se scoate din coadă elementul care a fost procesat ​ 
-    * Această parcurgere în lățime conduce la identificarea unei regiuni de foreground, a unei litere individuale din imaginea de intrare. În imaginea de mai jos se poate observa rezultatul segmentării:​ 
- 
-{{ :​spg:​teme:​2021:​merry_segmented.png?​300 |}} 
- 
-  * **Identificarea dreptunghiurilor încadratoare ale regiunilor de foreground individuale și afișarea acestora** 
-    * Se calculeaza minimul și maximul pe x si pe y ale adreselor pixelilor dintr-o regiune 
-    * Se afișează dreptunghiurile încadratoare pe imaginea segmentată. În imaginea de mai jos se poate observa rezultatul acestui pas: 
- 
-{{ :​spg:​teme:​2021:​merry_segmented_-bbox2.png?​300 |}} 
-  ​ 
-=== Bonusuri Posibile === 
- 
-   * B1 
- 
- 
-=== Indicații Suplimentare === 
- 
-Tema se poate implementa in orice limbaj sau framework. Dacă folosiți biblioteci ajutătoare (ex, OpenCV), acestea pot fi utilizate numai pentru încărcarea/​afișarea imaginii sau pentru operații de citire/​scriere pe pixelii imaginii. Nu se pot folosi funcții deja implementate în biblioteci pentru: 
- 
-  * implementarea filtrului median 
-  * trecerea din spațiul RGB în spațiul HSV 
-  * segmentarea imaginii și identificarea regiunilor de foreground (a literelor individuale) 
-  * determinarea dreptunghiurilor încadratoare regiunilor (literelor) 
-  * compararea pixelilor din dreptunghiurile încadratoare din imaginea de intrare cu informația din șablonul cu alfabetul  ​ 
- 
-=== Arhivarea ​ proiectului === 
- 
-<​note>​ 
-Arhiva trebuie sa contina toate resursele necesare compilarii si rularii. 
-Dacă folosiți framework-ul de la laborator, realizați următorii pași: 
-  * inainte de a face arhiva asigurati-va ca ati curatat proiectul Visual Studio: 
-      * click dreapta pe proiect in **Solution Explorer** -> **Clean Solution** 
-      * si stergeti folderul __**/​build/​.vs**__ (daca nu il vedeti, **este posibil sa fie ascuns**) 
-    * SAU stergeti complet folderul __**/​build**__ 
-  * in cazul in care arhiva tot depaseste limita de 50MB (nu ar trebui), puteti sa stergeti si folderul __**/​deps**__ sau __**/​assets**__ intrucat se pot adauga la testare. Nu este recomandat sa faceti acest lucru intrucat ingreuneaza mult testarea in cazul in care versiunea curenta a librariilor/​resurselor difera de versiunea utilizata la momentul scrierii temei. 
-</​note>​ 
spg/teme/2021/02.1639733084.txt.gz · Last modified: 2021/12/17 11:24 by anca.morar
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0