úloha 066: Histogram rastrového obrázku

Úkolem je spočítat histogram daného obrázku a nakreslit ho do jednoduchého grafu v samostatném okně.

Screenshot

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:

  // !!!{{
  // !!!}}
Pozn: svoje úpravy kódu nemusíte omezovat na oblast vyznačenou těmito závorkami. Můžete samozřejmě přidat nějakou pomocnou třídu, datovou strukturu, apod. Jen se prosím snažte všechny modifikace soustředit do toho jednoho odevzdávaného souboru.

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


[Cvičení NPGR003]  [Návody k zápočtům v C#]  [Přednášky a semináře]  [Odkazy na demonstrace]

Valid XHTML 1.1 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