Histogram (ve fotografii ) je graf statistického rozložení prvků digitálního snímku s různým jasem , ve kterém vodorovná osa představuje jas a svislá osa představuje relativní počet pixelů se specifickou hodnotou jasu.
Po prostudování histogramu můžete získat obecnou představu o správné expozici , kontrastu a sytosti barev snímku, vyhodnotit požadovanou korekci jak při fotografování (změna expozice, vyvážení barev, osvětlení nebo kompozice snímku), tak i při následném zpracovává se.
Obvykle se na obrazovce digitálního fotoaparátu zobrazuje pouze histogram světlosti (výjimkou jsou drahé zrcadlovky) a histogram pro všechny barevné kanály (viz Separace barev ) je již dostupný na počítači v aplikacích pro zpracování rastrové grafiky .
Histogram obrázku (někdy: graf úrovní nebo jen úrovně ) - histogram úrovní saturace obrázku (celkový nebo dělený barevnými kanály ).
Histogram obrázku umožňuje vyhodnotit množství a rozmanitost tónů v obrázku a také celkovou úroveň jasu v obrázku. Například podexponovaný snímek bude vrcholit v oblasti s nízkými barvami a klesat (nebo nebude mít žádnou úroveň) v oblasti jasných barev, zatímco přeexponovaný snímek bude dělat opak. Snímek s nedostatečným dynamickým rozsahem bude mít úzký záblesk jasu. Akademická reprezentace ideálního tvaru histogramu obrazu je plochý Gaussian, ve kterém je málo velmi tmavých a velmi jasných barev, a jak se přibližují k průměrným barvám, jejich počet se zvyšuje. Platí pro fotografování s dostatečným výplňovým osvětlením (ovlivňujícím celou scénu) a bez světelných zdrojů v záběru.
V obecném případě obrazový histogram nepopisuje umělecké kvality snímku (například fotografování siluety v protisvětle bude na histogramu vypadat jako podexponovaný (nebo přeexponovaný) snímek), ale ve většině případů umožňuje navigaci ve „směru korekce“ obrázku (pokud je taková korekce požadována).
Mnoho editorů fotografií (např . Adobe Photoshop , GIMP ) a programů pro vývoj souborů Raw (UFRAW, PhotoOne, CaptureNX) umožňuje upravovat úrovně obrázků. Lze to provést následujícími způsoby:
Vytvoříme pole, naplníme ho nulami. Obvykle pole [0..255]
Smyčka pro každý pixel:
Vyberte požadovaný barevný kanál nebo najděte jas podle vzorce. Pixel -> hodnota Výsledná hodnota musí být v rozsahu indexu pole, například [0..255]. Zvyšte hodnotu pole[value] o 1.Konec cyklu.
Výsledné pole je histogram, prvky pole jsou výšky sloupců.Implementace v Pythonu :
# coding:utf """Uživatel zadá název souboru s obrázkem, jehož histogramy je třeba sestavit. Histogramy se sestaví pro každý z kanálů, pro jas (Luminance) a histogram RGB. Program vytvoří histogramy a uloží je do aktuální složky Výsledné histogramy se prakticky neliší od histogramů získaných v komerčních programech Program vyžaduje Python 2.7 s nainstalovaným PIL""" z PIL import Image , ImageDraw # moduly z PIL def lum ( c ): #barva RGB pixelu -> hodnota jasu #vzorec , který se běžně používá k určení jasu return int ( 0,3 * c [ 0 ] + 0,59 * c [ 1 ] + 0,11 * c [ 2 ]) def r ( c ): # Barva pixelu RGB -> Návrat hodnoty R c [ 0 ] def g ( c ): # Barva pixelu RGB -> Návrat hodnoty G c [ 1 ] def b ( c ): # Barva pixelu RGB -> B hodnota return c [ 2 ] def drawhist ( hname , H , harr ): """ Nakreslete graf, uložte jej do souboru v aktuální složce hname - název souboru H - výška výkresu harr - pole s výškami sloupců v histogramu " "" W = len ( harr ) # počet prvků pole hist = Obrázek . new ( "RGB" , ( W , V ), "white" ) #vytvoření kresby v paměti draw = ImageDraw . Kreslit ( hist ) #objekt ke kreslení na výkresu maxx = float ( max ( harr )) #výška nejvyšší čáry if maxx == 0 : #bary jsou 0 kreslit . obdélník ((( 0 , 0 ), ( W , V )), fill = "black" ) else : for i in range ( W ): draw . čára ((( i , H ),( i , H - harr [ i ] / maxx * H )), výplň = "černá" ) #draw bars del draw #delete hist object . uložit ( hname ) #uložit obrázek do souboru # seznam s funkcemi a předponami názvů souborů fnlist = [( lum , " luminosity_" ) , ( r , "r_channel_" ), ( g , "g_channel_" ), ( b , "b_channel_" )] fname = input ( "název vstupního souboru: " ) #Název vstupního souboru , histogram cat. potřeba vybudovat im = Image . otevřít ( fname ) # otevřít soubor # získat seznam ve tvaru [(n1, c1), (n2, c2), ...], kde # c je barva pixelu v RGB # n je počet pixely, které mají danou barvu clrs = im . getcolors ( im . size [ 0 ] * im . size [ 1 ]) # šířka, výška histogramu. # Šířka by se neměla měnit, protože všechny funkce jsou zobrazeny v [0..255] W , V = 256 , 100 pro fn , hname ve fnlist : #iterovat přes všechny funkce harr = [ 0 pro i v rozsahu ( W )] #vytvořit pole [0, 0 , 0, ...] délky W pro n , c v clrs : #iterujte přes seznam vytvořený výše index = fn ( c ) #fn - mapujte barvu na jas nebo vyberte barevný kanál #array element indexy ukazují hodnoty jasu a tak dále. Rozsah [0..255] #hodnoty prvků pole = počet pixelů s def. hodnota jasu atd. harr [ index ] += n drawhist ( hname + "hist.png" , H , harr ) # kreslit histogram # Kreslit histogramy podle jasu a kanálů, nyní # Kreslit histogram RGB rharr = [ 0 pro i v rozsahu ( W )] gharr = seznam ( rharr ) bharr = seznam ( rharr ) pro n , c v clrs : rharr [ r ( c )] += n gharr [ g ( c )] += n bharr [ b ( c )] += n harr = [( rharr [ i ] + gharr [ i ] + bharr [ i ]) / 3 pro i v dosahu ( W )] drawhist ( "RGB_hist.png" , H , harr )Některé fotoaparáty umožňují zobrazit histogram pořízených snímků (a některé modely s kontrastním ostřením - během ostření).
měření expozice | |
---|---|
Podmínky měření expozice | |
Manuální ovládání expozice |
|
Automatická kontrola expozice | |
Standardy měření blesku |