This shows you the differences between two versions of the page.
ac-is:teme:tema1 [2023/12/08 23:00] alexandru.predescu [Notare] |
ac-is:teme:tema1 [2023/12/21 18:05] (current) ionut.pascal [Notare] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Tema 1 - Transform the number ====== | + | ====== Tema 1 - Prelucrarea imaginilor ====== |
- | * Responsabili: Ionuț P, Ovidiu M (checker) | + | * Responsabili: Ionuț P, Alex P |
- | * Deadline soft (fără penalizări): **04.12.2022**, ora **23:59** | + | * Soft Deadline: **22.12.2023**, ora **23:59** |
- | * Deadline hard (cu penalizări): **07.12.2022**, ora **23:59** | + | * Hard Deadline: **24.12.2023**, ora **23:59** |
- | * Data publicării: **24.11.2022** | + | * Data publicării: **08.12.2023** |
- | * Data ultimei actualizări: 28.11.2022, 16:02 | + | * Data ultimei actualizări: 08.12.2023, 23:02 |
* Istoric modificări: | * Istoric modificări: | ||
- | * 24.11.2022, 00:00 | + | * 08.12.2023, 00:00 |
* Publicare temă | * Publicare temă | ||
- | * 24.11.2022, 8:35 | + | * 21.12.2023, 18:04 |
- | * Modificare nume modul base2_to_base3, precizare pentru testare div_algo | + | * Adaugare Hard Deadline |
- | * 25.11.2022, 9:00 | + | |
- | * Specificație modul div_algo pur combinațional | + | |
- | * 28.11.2022, 16:02 | + | |
- | * Publicare tester offline | + | |
- | + | ||
- | + | ||
===== Obiective ===== | ===== Obiective ===== | ||
Line 33: | Line 26: | ||
{{:ac-is:teme:tema1:pixel.gif?200|}} | {{:ac-is:teme:tema1:pixel.gif?200|}} | ||
+ | |||
+ | Figura 1. sursa: http://hosting.soonet.ca/eliris/remotesensing/LectureImages/pixel.gif | ||
{{:ac-is:teme:tema1:imgproc_fig2.jpg?200|}} | {{:ac-is:teme:tema1:imgproc_fig2.jpg?200|}} | ||
- | Figurile 1 și 2 au provenit din urmatoarele surse: | + | Figura 2. sursa: https://www.spacetelescope.org/static/projects/img/imgproc_fig2.jpg |
- | * http://hosting.soonet.ca/eliris/remotesensing/LectureImages/pixel.gif | + | |
- | * https://www.spacetelescope.org/static/projects/img/imgproc_fig2.jpg | + | |
Pentru această temă, noi vom folosi imagini RGB în care un pixel este stocat pe 3 canale (Red - Green - Blue), fiecare canal reprezentând saturația culorii respective, stocată pe 8 biți. Imaginea finală este obținută prin compunerea valorilor din cele trei canale. Puteți citi mai multe despre spațiul de culoare RGB [[https://en.wikipedia.org/wiki/RGB_color_spaces|aici]]. | Pentru această temă, noi vom folosi imagini RGB în care un pixel este stocat pe 3 canale (Red - Green - Blue), fiecare canal reprezentând saturația culorii respective, stocată pe 8 biți. Imaginea finală este obținută prin compunerea valorilor din cele trei canale. Puteți citi mai multe despre spațiul de culoare RGB [[https://en.wikipedia.org/wiki/RGB_color_spaces|aici]]. | ||
Line 48: | Line 42: | ||
- Cele 3 cerințe de mai sus trebuie să se comporte ca un proces continuu pe aceeași imagine. Astfel, task-ul 2 va începe automat după task-ul 1, iar task-ul 3 va începe automat după task-ul 2. Pentru a putea fi luate în considerare de tester, semnalele *_done trebuie păstrate pe 1 cel puțin un ciclu de ceas. | - Cele 3 cerințe de mai sus trebuie să se comporte ca un proces continuu pe aceeași imagine. Astfel, task-ul 2 va începe automat după task-ul 1, iar task-ul 3 va începe automat după task-ul 2. Pentru a putea fi luate în considerare de tester, semnalele *_done trebuie păstrate pe 1 cel puțin un ciclu de ceas. | ||
- | Click aici pentru informații despre cum se folosește matricea de convoluție | + | === Cum se folosește matricea de convoluție === |
Fiecare pixel din imaginea nouă reprezintă rezultatul aplicării matricei de convoluție pe pixelii corespunzători din imaginea care se dorește a fi modificată. Astfel, pentru a calcula valoarea pixelului de pe poziția [i, j], vom lua în considerare matricea 3×3 din jurul acestei poziții și vom înmulți element cu element matricea obținută cu cea de convoluție (în același mod în care ați efectua [[https://www.mathworks.com/help/matlab/ref/times.html|înmulțirea element cu element în Matlab]]). Pixelul de pe poziția [i, j] din imaginea nouă va fi dat de suma acestor 9 valori. | Fiecare pixel din imaginea nouă reprezintă rezultatul aplicării matricei de convoluție pe pixelii corespunzători din imaginea care se dorește a fi modificată. Astfel, pentru a calcula valoarea pixelului de pe poziția [i, j], vom lua în considerare matricea 3×3 din jurul acestei poziții și vom înmulți element cu element matricea obținută cu cea de convoluție (în același mod în care ați efectua [[https://www.mathworks.com/help/matlab/ref/times.html|înmulțirea element cu element în Matlab]]). Pixelul de pe poziția [i, j] din imaginea nouă va fi dat de suma acestor 9 valori. | ||
- | Pentru mai multe detalii, citiți informațiile de [[https://docs.gimp.org/en/plug-in-convmatrix.html|aici]]. | + | Pentru mai multe detalii, citiți informațiile de [[https://docs.gimp.org/2.10/en/gimp-filter-convolution-matrix.html|aici]]. |
Line 93: | Line 87: | ||
===== Observații ===== | ===== Observații ===== | ||
- | * Fiecare „pixel” din imagine este de dimensiunea 3 bytes (1 byte pentru fiecare canal). | + | * Fiecare „pixel” din imagine este de dimensiunea 3 bytes (1 byte pentru fiecare canal). |
- | * Imaginile sunt mărginite. Pentru aplicărea filtrului pe pixelii aflați în marginea imaginii se vor lua în considerare doar pixelii din imediata vecinătate. Tot ce iese în afara imaginii va fi egal cu 0. | + | * Imaginile sunt mărginite. Pentru aplicărea filtrului pe pixelii aflați în marginea imaginii se vor lua în considerare doar pixelii din imediata vecinătate. Tot ce iese în afara imaginii va fi egal cu 0. |
- | * Semnalele mirror_done, gray_done și filter_done trebuie să mențină valoarea HIGH timp de un ciclu de ceas pentru a putea fi luate în considerare de tester. În acest ciclu de ceas nu veți face alte procesări și nu veți începe rezolvarea următorului task. | + | * Semnalele mirror_done, gray_done și filter_done trebuie să mențină valoarea HIGH timp de un ciclu de ceas pentru a putea fi luate în considerare de tester. În acest ciclu de ceas nu veți face alte procesări și nu veți începe rezolvarea următorului task. |
- | * Nu este permisă cache-uirea matricei întregi (citerea matricei și salvarea acesteia în cadrul modulului pentru procesare ulterioară). Puteți, în schimb, sa cache-uiți până la 6 rânduri dacă aveți nevoie. Această cache-uire va fi explicată apoi în cadrul readme-ului (motivul folosirii). | + | * Nu este permisă cache-uirea matricei întregi (citerea matricei și salvarea acesteia în cadrul modulului pentru procesare ulterioară). Puteți, în schimb, sa cache-uiți până la 6 rânduri dacă aveți nevoie. Această cache-uire va fi explicată apoi în cadrul readme-ului (motivul folosirii). |
===== Notare ===== | ===== Notare ===== | ||
Line 104: | Line 98: | ||
* 3 pct: grayscale | * 3 pct: grayscale | ||
* 3 pct: sharpness | * 3 pct: sharpness | ||
- | * 1 pct: dacă cele 3 acțiuni (oglindire, grayscale, sharpness) sunt executate în ordine (una dupa | + | * 1 pct: dacă cele 3 acțiuni (oglindire, grayscale, sharpness) sunt executate în ordine (una dupa alta) |
- | alta) | + | |
* -1.5 pct pentru fiecare subpunct în care e folosită matricea cache-uită (total -4.5 puncte dacă e folosită în toate subpunctele) | * -1.5 pct pentru fiecare subpunct în care e folosită matricea cache-uită (total -4.5 puncte dacă e folosită în toate subpunctele) | ||
* -10 pct: folosirea construcțiilor nesintetizabile din Verilog (while, repeat, for cu număr variabil de iterații etc.) | * -10 pct: folosirea construcțiilor nesintetizabile din Verilog (while, repeat, for cu număr variabil de iterații etc.) | ||
* -1 pct: lipsa fișierului README. | * -1 pct: lipsa fișierului README. | ||
- | * -0.5 pct: pentru fiecare zi de întârziere; tema poate fi trimisă cu maxim 7 zile întârziere față de termenul specificat în enunț (față de deadline-ul soft). | + | * -0.5 pct: fiecare zi întârziere după depășirea Soft Deadline |
* -0.2 pct: folosirea incorectă a atribuirilor continue (assign), blocante (''='') și non-blocante (''<=''). | * -0.2 pct: folosirea incorectă a atribuirilor continue (assign), blocante (''='') și non-blocante (''<=''). | ||
* -0.2 pct: indentare haotică | * -0.2 pct: indentare haotică | ||
Line 139: | Line 132: | ||
===== Resurse ===== | ===== Resurse ===== | ||
- | * **Schelet** - [[null|TODO]] | + | * **Schelet** - {{:ac-is:teme:tema1:skel.zip|Schelet}} |
- | * **Tester** - {{:ac-is:teme:tema1:tester_tema1.zip|TODO}} | + | * **Tester** - {{:ac-is:teme:tema1:tester.zip|Tester}} |