Úkolem je spočítat histogram daného obrázku a nakreslit ho do jednoduchého grafu v samostatném okně.
Základem poslouží projekt 066histogram z repository grcis. Je připravena jednoduchá aplikace, ve které uživatel zadává vstupní obrázek a ihned se automaticky spouští metoda Form1.ComputeHistogram() přepočítávající histogram a kreslící výstup do samostatného okna (viz screenshot). Tuto metodu musíte přeprogramovat, příslušný úsek kódu je ve zdrojáku Histogram.cs označen závorkami:
// !!!{{ // !!!}}
Technicky: vstupní obrázek je předán Vaší metodě v parametru Bitmap input, můžete z něj číst metodou BitMap.GetPixel(x,y) (detaily viz referenci Bitmap). Pilotní řešení tento přístup ukazuje, tak se inspirujte. Je potřeba, abyste reagovali na uživatelem zadávaný textový parametr a vykreslovali histogram červené, zelené, modré barvy nebo celkového jasu. Navrhovaný formát parametru: red, green, blue, gray. Pokročilejší řešení může používat převod do některého alternativného barevného systému (opět naznačeno ve zdrojáku) - např. HSV barevný kruh. Za takové vylepšení obdržíte body navíc.
Kreslení grafu: v metodě Form1.ComputeHistogram() dostanete předán rastrový obrázek Bitmap graph, do kterého musíte vykreslit výsledný graf. Obrázek již má správnou velikost (je naškálován na rozměr výstupního okénka), Vy byste měli rozměry respektovat a grafy kreslit tak, aby vyplnily danou oblast. Nadstandardně pěkné výstupy ocením bonusovými body, naopak pokud se nebude vaše implementace chovat správně (např. nebude škálovat), body Vám strhnu. Za co můžete získat body navíc: popisy os, měřítka, alternativní barevné prostory, apod.
Jako řešení úlohy posílejte mailem pouze modifikovaný zdrojový soubor Histogram.cs! Doplňte návod, které hodnoty textového parametru akceptujete. Nepřijímám celé VS2010 projekty. Vaše řešení budu zoušet na několika různých vstupních datech!
Podpora: Funkce pro převody mezi RGB a HSV najdete v souboru common/MathSupport.cs. Funkci na převod do odstínů šedé najdete v common/RasterDrawing.cs
TERMÍN: do 17. 11. 2013
BODY: základ 8 bodů (red, green, blue, gray), další barevný systém 3 body, složitější diagram (např. barevný kruh) 5 bodů
PROJEKT: 066histogram
ZDROJOVÝ SOUBOR: Histogram.cs
DATA: můžete použít pár obrázků přímo z repository, z adresáře data
Copyright (C) 2013 J.Pelikán,
last change: $Date: 2014-10-03 15:44:39 +0200 (Fri, 03 Oct 2014) $
Send comments/requests to
pepca.at.cgg.mff.cuni.cz