====== Grafické formáty a redukce barevného prostoru obrazu ====== [[http://www.flickr.com/photos/pitel/2320180227/|{{ http://farm3.static.flickr.com/2085/2320180227_c10286a721_o.png }}]] ===== student.cpp ===== //////////////////////////////////////////////////////////////////////////////////////////////// // Vzorove reseni //////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// // include #include "main.h" #include #include //////////////////////////////////////////////////////////////////////////////////////////////// // Funkce vyplnene ve cvicenich //////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// // funkce prevede obrazek na urovne sedi // void GreyScale() { S_RGBA color; double luma; for (int x = 0; x < frame_w; x++) { for (int y = 0; y < frame_h; y++) { GetPixel(x, y, color); luma = 0.299 * color.red + 0.587 * color.green + 0.114 * color.blue; color.red = ROUND(luma); color.green = ROUND(luma); color.blue = ROUND(luma); PutPixel(x, y, color); } } } //////////////////////////////////////////////////////////////////////////////////////////////// // funkce prevede obrazek na cernobily // // Threshold - prah // void Prahovani(int Threshold) { S_RGBA color; double luma; for (int x = 0; x < frame_w; x++) { for (int y = 0; y < frame_h; y++) { GetPixel(x, y, color); luma = 0.299 * color.red + 0.587 * color.green + 0.114 * color.blue; if (luma <= Threshold) { PutPixel(x, y, COLOR_BLACK); } else { PutPixel(x, y, COLOR_WHITE); } } } } //////////////////////////////////////////////////////////////////////////////////////////////// // Funkce za domaci ukol //////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// // funkce prevede obrazek na cernobily // pomoci matice metodou DITHERINGU, velikost obrazku se tedy nemeni! // pouzijte promenne definovane v main.h: // VelikostMatice - rozmer ctvercove matice // Matice[][] - hodnoty pro porovnavani // void RozptylMatice() { S_RGBA color; double luma; for (int x = 0; x < frame_w; x++) { for (int y = 0; y < frame_h; y++) { GetPixel(x, y, color); luma = 0.299 * color.red + 0.587 * color.green + 0.114 * color.blue; if (luma <= Matice[x % VelikostMatice][y % VelikostMatice]) { PutPixel(x, y, COLOR_BLACK); } else { PutPixel(x, y, COLOR_WHITE); } } } }