Proiect SDA 2014-2015: Diferență între versiuni

De la WikiLabs
Jump to navigationJump to search
Fără descriere a modificării
Linia 1: Linia 1:
== Descriere ==
== Descriere ==


Scopul acestui proiect este realizarea unei aplicații care să aplice un filtru median pe o imagine. Aceasta este o tehnică folosită pentru a uniformiza o imagine cu zgomot. Pentru fiecare pixel din imagine, filtrarea constă în selectarea unei ferestre de n x n pixeli, centrată pe pixelul sursă, calcularea medianei nevelurilor de gri din fereastră, și înlocuirea pixelului original cu valoarea mediană. Mediana este definită ca valoarea din mijlocul secvenței sortate. De exemplu, pentru următoarea fereastră de 3 x 3:
Scopul acestui proiect este realizarea unei aplicații care să aplice un filtru median pe o imagine. Aceasta este o tehnică folosită pentru a uniformiza o imagine cu zgomot. Pentru fiecare pixel din imagine, filtrarea constă în selectarea unei ferestre de n x n pixeli, centrată pe pixelul sursă, calcularea medianei nivelurilor de gri din fereastră, și înlocuirea pixelului original cu valoarea mediană. Mediana este definită ca valoarea din mijlocul secvenței sortate. De exemplu, pentru următoarea fereastră de 3 x 3:


  11 90 74
  11 90 74
Linia 13: Linia 13:
== Cerință ==
== Cerință ==
   
   
Programul vostru trebuie să citească o imagine în format [https://en.wikipedia.org/wiki/Netpbm_format PGM], să aplice o filtrare mediană cu fereastă de '''n''' x '''n''' (cu '''n''' specificat la execuția programului) folosind un algoritm de sortare specificat tot la execuție, și să scrie imaginea rezultată într-un fișier nou. Dacă fișierul executabil obținut la compilare se numește '''filtru.exe''', atunci programul va fi rulat astfel:


filtru.exe <fisier_intrare> <fisier_iesire> [ins|qs|cnt] <n>
Unde ''ins'' - insertion sort, ''qs'' - quick sort, ''cnt'' - counting sort, iar '''n''' este dimensiunea ferestrei. Spre exemplu:
filtru.exe enb.pgm enb_filtered.pgm qs 3
Această comandă va rula filtrul cu o fereastră de 3 x 3 pixeli, folosind quick sort pentru sortare pe fișierul de intrare '''enb.pgm''' și va scrcie rezultatul în '''enb_filtered.pgm'''.
 
<!--
<!--




The result of replacing all pixels with median values is a smoothed image, with almost no background noise, which improves the effectiveness of image-recognition algorithms. On the negative side, the new image is blurrier than the original, that is, it looks like an unfocussed monitor.


Your task is to implement sorting algorithms for median filtering. You should copy the source files median.c and mysort.c to your account; in addition, you need the old files imageio.h and imageio.c. The median.c file contains the filtering procedure, which calls three sorting functions from mysort.c. You should write the code for these functions: insertion_sort, quick_sort, and counting_sort. The mysort.c file already includes the names and argument declarations for the sorting functions, and you need to code their bodies. You should not modify any files except mysort.c, and you should submit only mysort.c to heath@suntan.eng.usf.edu.
Your task is to implement sorting algorithms for median filtering. You should copy the source files median.c and mysort.c to your account; in addition, you need the old files imageio.h and imageio.c. The median.c file contains the filtering procedure, which calls three sorting functions from mysort.c. You should write the code for these functions: insertion_sort, quick_sort, and counting_sort. The mysort.c file already includes the names and argument declarations for the sorting functions, and you need to code their bodies. You should not modify any files except mysort.c, and you should submit only mysort.c to heath@suntan.eng.usf.edu.
Linia 37: Linia 45:
What is the maximal window size for which the smoothed image is still recognizable for the human eye?
What is the maximal window size for which the smoothed image is still recognizable for the human eye?


https://en.wikipedia.org/wiki/Netpbm_format
 


http://www.cprogramming.com/tutorial/c/lesson14.html
http://www.cprogramming.com/tutorial/c/lesson14.html
-->
-->

Versiunea de la data 29 iunie 2015 14:12

Descriere

Scopul acestui proiect este realizarea unei aplicații care să aplice un filtru median pe o imagine. Aceasta este o tehnică folosită pentru a uniformiza o imagine cu zgomot. Pentru fiecare pixel din imagine, filtrarea constă în selectarea unei ferestre de n x n pixeli, centrată pe pixelul sursă, calcularea medianei nivelurilor de gri din fereastră, și înlocuirea pixelului original cu valoarea mediană. Mediana este definită ca valoarea din mijlocul secvenței sortate. De exemplu, pentru următoarea fereastră de 3 x 3:

11	 90	 74
71	 14	 92
20	 87	 68

Secvența sortată a acestor pixeli este <11, 14, 20, 68, 71, 74, 87, 90, 92>, iar valoarea din mijloc este 71, care este valoarea mediană a acestei ferestre. Prin urmare, procedura de filtrare va înlocui valoarea din centrul ferestrei (14) cu valoarea mediană: 71.

Rezultatul înlocuirii tuturor pixelilor din imagine cu valorile mediane este o imagine uniformizată, aproape fără zgomot de fundal, lucru care îmbunătățește performanțele algoritmilor de recunoaștere de imagini. Partea negativă este că în noua imagine se pierd detaliile.

Cerință

Programul vostru trebuie să citească o imagine în format PGM, să aplice o filtrare mediană cu fereastă de n x n (cu n specificat la execuția programului) folosind un algoritm de sortare specificat tot la execuție, și să scrie imaginea rezultată într-un fișier nou. Dacă fișierul executabil obținut la compilare se numește filtru.exe, atunci programul va fi rulat astfel:

filtru.exe <fisier_intrare> <fisier_iesire> [ins|qs|cnt] <n>

Unde ins - insertion sort, qs - quick sort, cnt - counting sort, iar n este dimensiunea ferestrei. Spre exemplu:

filtru.exe enb.pgm enb_filtered.pgm qs 3

Această comandă va rula filtrul cu o fereastră de 3 x 3 pixeli, folosind quick sort pentru sortare pe fișierul de intrare enb.pgm și va scrcie rezultatul în enb_filtered.pgm.