Differences

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

Link to this comparison view

pgapi:teme:2024:02 [2024/12/13 00:01]
andrei.lambru
pgapi:teme:2024:02 [2024/12/20 10:25] (current)
andrei.lambru
Line 2: Line 2:
  
   * **Responsabili:​** Vlad Novetschi, Robert Caragicu, Cristian Lambru   * **Responsabili:​** Vlad Novetschi, Robert Caragicu, Cristian Lambru
-  * **Lansare:​** ​13 decembrie 2024+  * **Lansare:​** ​14 decembrie 2024
   * **Termen de predare:** 14 ianuarie 2025, ora 23:55    * **Termen de predare:** 14 ianuarie 2025, ora 23:55 
-  * **Regulament:​** https://​ocw.cs.pub.ro/​courses/​spg/​regulament_general+  * **Regulament:​** https://​ocw.cs.pub.ro/​courses/​pgapi/​regulament_general
   * **Notă: Orice informație ce nu a fost acoperită în acest document este la latitudinea voastră!**   * **Notă: Orice informație ce nu a fost acoperită în acest document este la latitudinea voastră!**
  
-===== Privire de ansamblu ​=====+===== Descriere generală ​===== 
 În cadrul acestei teme, urmărim procesarea unei imagini pentru a obține o variantă stilizată a acesteia sub formă de schiță. În cadrul acestei teme, urmărim procesarea unei imagini pentru a obține o variantă stilizată a acesteia sub formă de schiță.
  
Line 15: Line 16:
   * [[https://​www1.udel.edu/​artfoundations/​drawing/​crosshatch.html|Linii de hașură]] arată locurile unde imaginea este mai închisă la culoare. Liniile de hașură sunt cu atât mai dese într-o zonă cu atât culorile imaginii sunt mai întunecate în acea zonă.   * [[https://​www1.udel.edu/​artfoundations/​drawing/​crosshatch.html|Linii de hașură]] arată locurile unde imaginea este mai închisă la culoare. Liniile de hașură sunt cu atât mai dese într-o zonă cu atât culorile imaginii sunt mai întunecate în acea zonă.
  
-O privire de ansamblu asupra pașilor de realizare ai schiței poate fi vizualizată în imaginea ​de mai jos. Acești pași sunt prezentați în detaliu în secțiunile urmatoare.+În imaginea mai jos, puteți vizualiza mai multe rezultate obținute ​în urma aplicării abordării pe care trebuie să o implementați în cadrul acestei teme.
  
-{{ :​pgapi:​teme:​2024:​sketch.png?500 |}}+{{ :​pgapi:​teme:​2024:​colaj_tema_2_2.png?600 |}}
  
-De asemeneaîn imaginea mai jos puteți vizualiza mai multe rezultate obținute ​în urma aplicării abordării pe care trebuie să o implementați în cadrul acestei teme. +În cadrul temeitrebuie să implementați o anumită metodă propusă, ce este descrisă ​în secțiunile următoare. O privire de ansamblu asupra pașilor de realizare ai schiței prin această metodă poate fi vizualizată în imaginea de mai jos. Acești pași sunt prezentați în detaliu în secțiunile urmatoare.
- +
-{{ :​pgapi:​teme:​2024:​colaj_tema_2_2.png?600 |}}+
  
-În continuare vor fi prezentați algoritmii necesari realizării procesării.+{{ :​pgapi:​teme:​2024:​sketch.png?600 |}}
  
 <note important>​Algoritmii de mai jos au ca parametrii diferite valori de prag, direcții de hașurare, densitatea hașurării etc. Aceste valori sunt la libertatea voastră de a îi seta cu condiția ca programul vostru să aibă rezultate vizuale pe diferite imagini în care să se vadă clar contururi ale imaginii și linii de hașură.</​note>​ <note important>​Algoritmii de mai jos au ca parametrii diferite valori de prag, direcții de hașurare, densitatea hașurării etc. Aceste valori sunt la libertatea voastră de a îi seta cu condiția ca programul vostru să aibă rezultate vizuale pe diferite imagini în care să se vadă clar contururi ale imaginii și linii de hașură.</​note>​
 +
 +===== Filtru Sobel + binarizare =====
 +
 +Pentru a construi contururile schiței, vom aplica filtrul Sobel pe imaginea originală și vom binariza ([[pgapi:​laboratoare:​09|]]).
 +Pentru a binariză, vom stabili că un pixel este negru dacă în urma filtrului Sobel valoarea este mai mare decât un prag. Dacă valoarea este mai mică decât un prag, atunci pixelul va fi alb.
 +Valoarea de prag este la alegerea voastră.
 +
 +{{ :​pgapi:​teme:​2024:​sobel.png?​600 |}}
  
 ===== Filtru de netezire separabil ===== ===== Filtru de netezire separabil =====
Line 50: Line 57:
 Această metodă reduce numărul total de eșantionări a texturii pentru fiecare pixel de la 625 la 50. Această metodă reduce numărul total de eșantionări a texturii pentru fiecare pixel de la 625 la 50.
  
 +===== Filtru de hașurare ======
  
-===== Filtru Sobel + binarizare ​=====+==== Model de hașurare ​=====
  
-Pentru ​a construi contururile schiței, vom aplica ​filtrul ​Sobel pe imaginea originală ​și vom binariza ([[pgapi:​laboratoare:​09|]]). +Pentru filtrul ​de hașurareprimul pas este creearea unui model de hașurareformat din linii subțiri, paralele.
-Pentru a binarizăvom stabili că un pixel este negru dacă în urma filtrului Sobel valoarea este mai mare decât un prag. Dacă valoarea este mai mică decât un pragatunci pixelul va fi alb. +
-Valoarea de prag este la alegerea voastră.+
  
-{{ :pgapi:​teme:​2024:​sobel.png?​600 |}}+Din ecuația liniei avem:
  
-===== Filtru ​de hașurare ====== +$$ 
-TODOVlad+a \cdot x + b \cdot y + c 
 +$$ 
 + 
 +unde  $\{x, y\}  \in [0, 1]$   ​reprezintă coordonata unui pixel în spațiul texturii. 
 + 
 +Pentru a obține linii paralele, este suficient să schimbăm parametrul ​  $c$ . 
 + 
 + 
 +$$ 
 +a\cdot x + b\cdot y + c_1 0 \\ 
 +a\cdot x + b\cdot y + c_2 
 +$$ 
 + 
 + 
 + 
 +Pentru a obține o fâșie (o linie de o anumită grosime), putem rearanja ecuația în: 
 + 
 + 
 + 
 +$$ 
 +a\cdot x + b\cdot y \in[-c_1,​-c_2] 
 +$$ 
 + 
 + 
 + 
 + 
 +  
 +Pentru a obține fâșii paralele ce se repetă la infinit, putem aplica în stânga ecuației o funcție periodică precum sinus sau cosinus: 
 + 
 + 
 + 
 +$$ 
 +sin(a\cdot x + b\cdot y) \in[-c_1,​-c_2] 
 +$$ 
 + 
 + 
 + 
 + 
 +Pentru că funcția sinus produce valori între -1 și 1, putem simplifica ecuația prin utilizarea unei singure inegalități:​ 
 +  
 + 
 + 
 + 
 +$$ 
 +sin(a\cdot x + b\cdot y) > c 
 +$$ 
 + 
 + 
 + 
 + 
 +  
 +unde modificarea parametrului ​   $c$  va duce la schimbarea grosimii liniilor, iar modificarea parametrilor ​   $a$  și    $b$  va duce la schimbarea frecvenței și a direcției acestora. 
 + 
 +Mai multe rezultate pentru aplicarea modelului de hașurare descris mai sus cu diferite valori ale lui    $a$ ,    $b$  și    $c$  pot fi vizualizate în imaginea de mai jos. 
 + 
 +{{ :​pgapi:​teme:​2024:​sketch2.png?​600 |}} 
 + 
 +==== Aplicare model de hașurare ​==== 
 + 
 +Pentru a realiza procesul de hașurare doar pentru anumite zone din imagine și astfel să urmărim detaliile prezente în ea, trebuie să utilizăm modelul de hașurare doar pentru pixelii care respectă anumite criterii. Cel mai simplu criteriu este să transformăm culoarea pixelului din modelul RGB în nuanță de gri, precum în [[pgapi:​laboratoare:​08]],​ să considerăm faptul că această nuanță de gri este intensitatea culorii din pixel și să utilizăm modelul de hașurare doar în situația în care pixelul are intensitatea mai mică decât un prag. 
 + 
 +În rezultatul final, trebuie utilizate 3 filtre de hașurare, toate cu direcții și praguri de intensitate diferite. Alegerea acestor valori rămâne la latitudinea voastră. 
 + 
 +Pentru o diversificare a rezultatelor,​ trebuie să introduceți în cel puțin unul din cele 3 filtre de hașurare utilizarea unor linii albe pe fundal negru și în cel puțin un alt filtru de hașurare linii negre pe fundal alb. Fundalul negru se consideră doar pentru pixelii care respectă pragul de intensitate. 
 + 
 +===== Prezentare rezultat ​====== 
 + 
 +Pentru a se prezenta mai ușor rezultatul obținut, aplicația realizată de către voi trebuie să permită vizualizarea individuală arezultatelor pentru toți pașii intermediari ai metodei. Se vor folosi tastele de la tastatură după cum urmează: 
 +  * Tasta **0** - Vizualizare imagine originală;​ 
 +  * Tasta **1** - Vizualizare rezultat filtru Sobel + binarizare;​ 
 +  * Tasta **2** - Vizualizare rezultat filtru de netezire orizontal;​ 
 +  * Tasta **3** - Vizualizare rezultat filtru de netezire final - orizontal și vertical. În continuare se consideră că acesta este și rezultatul filtrului de netezire; 
 +  * Tasta **4** - Vizualizare rezultat filtru de netezire + aplicare filtru de hașurare 1; 
 +  * Tasta **5** - Vizualizare rezultat filtru de netezire + aplicare filtru de hașurare 2; 
 +  * Tasta **6** - Vizualizare rezultat filtru de netezire + aplicare filtru de hașurare 3; 
 +  * Tasta **7** - Vizualizare rezultat filtru de netezire + aplicare toate cele 3 filtre de hașurare;​ 
 +  * Tasta **8** - Vizualizare rezultat final al metodei. 
 + 
 +Implicit, aplicația se va deschide cu vizualizarea rezultatului final.
  
 <note important>​ <note important>​
Line 70: Line 154:
  
 ===== Notare (200) ===== ===== Notare (200) =====
 +   * +25p - Filtru Sobel + binarizare
    * +50p - Filtru de netezire separabil cu mască de convoluție de dimensiune cel puțin 25x25    * +50p - Filtru de netezire separabil cu mască de convoluție de dimensiune cel puțin 25x25
      * Această cerinta se punctează doar în situația în care filtrul de netezire este implement în 2 pași.      * Această cerinta se punctează doar în situația în care filtrul de netezire este implement în 2 pași.
-   * +25p - Filtru Sobel + binarizare 
    * +75p - Filtru de hașurare    * +75p - Filtru de hașurare
    * +25p - Aplicare 3 filtre de hașurare cu parametri diferiți    * +25p - Aplicare 3 filtre de hașurare cu parametri diferiți
-   * +25p - Vizualizare ​individuală +   * +25p - Vizualizarea ​individuală ​a rezultatelor pentru pașii intermediari ai metodei 
-     * Vizualizare rezultat filtru ​de netezire +     ​* ​+5p - Vizualizare rezultat filtru ​Sobel + binarizare; 
-     * Vizualizare rezultat filtru de netezire ​+ filtru Sobel + binarizare +     ​* ​+5p - Vizualizare rezultat filtru de netezire; 
-     * Vizualizare rezultate filtru de netezire + aplicare filtru de hașurare cu parametri diferiți +     ​* ​+10p - Vizualizare rezultate filtru de netezire + aplicare filtru de hașurare cu parametri diferiți; 
-     * Vizualizare rezultat filtru de netezire + filtru de hașurare+     ​* ​+5p - Vizualizare rezultat filtru de netezire + filtru de hașurare.
  
 ===== Bonusuri posibile ===== ===== Bonusuri posibile =====
pgapi/teme/2024/02.1734040905.txt.gz · Last modified: 2024/12/13 00:01 by andrei.lambru
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