Histogram - definicja, tworzenie, rodzaje, zastosowania, przykłady

HistogramHistogram to jedno z najbardziej podstawowych, a zarazem niezwykle potężnych narzędzi analizy danych. Choć jego konstrukcja jest prosta, dostarcza ogromnej ilości informacji o rozkładzie danych, strukturze populacji, zmienności i tendencjach. Znajduje zastosowanie nie tylko w statystyce, ale także w informatyce, przetwarzaniu obrazów, uczeniu maszynowym, fizyce, biologii, ekonomii i niemal każdej dziedzinie analizy danych ilościowych.

Definicja histogramu

Histogram to wykres przedstawiający rozkład częstości wartości w zbiorze danych liczbowych.

Działa poprzez:

  • podział osi poziomej (np. wartości zmiennej) na przedziały klasowe (bin’y),
  • zliczenie, ile danych mieści się w każdym z przedziałów,
  • reprezentację tej liczby w postaci słupka pionowego.

Elementy histogramu

  • Oś X - zakres wartości (np. długości, temperatury, jasności),
  • Oś Y - liczba (lub częstość względna) obserwacji w danym przedziale,
  • Bin (kosz) - pojedynczy przedział wartości (klasa),
  • Wysokość słupka - liczba obserwacji przypadających na dany przedział.

Histogramy mogą być używane do wizualizacji danych ciągłych (np. pomiary temperatury) lub dyskretnych (np. liczba dzieci w rodzinach).

Histogram - rozkład normalny

Histogram vs. wykres słupkowy - różnice

Choć histogram i wykres słupkowy wyglądają podobnie, mają zasadnicze różnice.

CechaHistogramWykres słupkowy
DaneLiczbowe, ciągłeKategoryczne
Oś XPrzedziały liczbowe (ciągłość)Kategoria (np. kraj, kolor, typ)
Odstępy między słupkamiBrak (przylegające)Obecne
InterpretacjaRozkład wartościPorównanie kategorii

Znaczenie i zastosowania histogramów

Statystyka i analiza danych

  • Ocena rozkładu zmiennej (czy dane są symetryczne, skośne, normalne),
  • Wykrywanie wartości odstających (outliers),
  • Szacowanie parametrów statystycznych (średnia, mediana, wariancja),

Przetwarzanie obrazów

  • Histogramy intensywności (np. poziomu jasności w obrazie),
  • Normalizacja i rozciąganie histogramu (histogram equalization),
  • Detekcja kontrastu i analiza kolorów.

Uczenie maszynowe i AI

  • Inżynieria cech (feature engineering) - histogramy jako wektory cech,
  • Klasyfikacja obrazów (np. histogramy gradientów - HOG),
  • Analiza rozkładu zmiennych w zbiorze treningowym.

Finanse i ekonomia

  • Analiza rozkładu zwrotów inwestycji,
  • Wykrywanie anomalii w transakcjach.

Nauki przyrodnicze i medyczne

  • Histogramy sygnałów biologicznych (np. EKG, EEG),
  • Rozkład rozmiarów cząstek, liczby komórek, intensywności fluorescencji.

Tworzenie histogramu

Jak powstaje histogram?

  • Dany zbiór liczbowy (np. wyniki testów, temperatury, wartości pomiarów) można przedstawić graficznie, dzieląc go na grupy wartości o określonej szerokości - tzw. przedziały klasowe lub kosze (bin’y).
  • Zakres danych dzieli się na równe przedziały, np. 0-10, 10-20, 20-30 itd.
  • Następnie zlicza się, ile wartości mieści się w każdym przedziale.
  • Dla każdego przedziału rysuje się słupek - im więcej wartości w danym zakresie, tym wyższy słupek.

W ten sposób tworzony jest histogram pokazujący rozkład danych. Wersja pokazująca procentowy udział wartości w każdej klasie nazywana jest właśnie histogramem względnym.

Dobór liczby grup (binów)

Wybór liczby przedziałów ma wpływ na czytelność wykresu:

  • zbyt mała liczba przedziałów prowadzi do uproszczenia danych i utraty szczegółów.
  • zbyt duża liczba sprawia, że histogram staje się "zaszumiony" i trudniejszy do interpretacji.

W praktyce stosuje się proste reguły doboru liczby binów, zależne od liczby danych lub ich rozrzutu.

Reguła Sturgesa

Liczba grup k obliczana jest według wzoru:

k=[log2(n)+1]

gdzie n to liczba danych. Reguła ta dobrze sprawdza się dla małych i średnich zbiorów.

Reguła Freedmana-Diaconisa

Używana, gdy dane mają duży rozrzut. Szerokość h binu wyznaczana jest jako:

h=2⋅IQR/(pierwiastek 3 stopnia z (n))

gdzie IQR to rozstęp międzykwartylowy, a n to liczba obserwacji.

Interpretacja kształtu histogramu

Kształt histogramu może sugerować typ rozkładu i właściwości zmiennej:

KształtZnaczenie
SymetrycznyRozkład normalny, brak skośności
Skośny w prawoWięcej wartości małych, długi ogon prawy
Skośny w lewoWięcej wartości dużych, długi ogon lewy
DwumodalnyDwie dominujące grupy (np. dwie populacje)
SpłaszczonyRozkład bardziej rozproszony niż normalny
WąskiDane silnie skupione

Rodzaje histogramów

Istnieje kilka wariantów histogramów, które mają swoje konkretne zastosowania, szczególnie w analizie porównawczej, przetwarzaniu obrazów, statystyce wielowymiarowej i eksploracji danych.

Histogram względny (częstościowy)

Opis
Histogram względny zamiast przedstawiać liczbę obserwacji w każdym przedziale (binie), prezentuje częstość względną, czyli procentowy udział danej klasy w całkowitej liczbie danych.

Zastosowania

  • Porównywanie dwóch lub więcej zbiorów danych o różnej liczności (np. grupa A = 500 osób, grupa B = 2000 osób),
  • Analiza proporcji bez względu na skalę absolutną (np. udział przedziałów wiekowych w różnych populacjach),
  • Przygotowanie danych do wykresów porównawczych (np. wykresy skumulowane lub warstwowe).

Przykład
Jeśli w danym przedziale znajduje się 50 obserwacji z 1000, to słupek ma wysokość 0.05 (5%).

Histogram skumulowany (cumulative histogram)

Opis
W histogramie skumulowanym każdy kolejny słupek przedstawia sumę wszystkich wcześniejszych wartości wraz z aktualnym przedziałem. Taki wykres reprezentuje funkcję rozkładu empirycznego (EDF).

Zastosowania

  • Wyznaczanie kwantyli (np. mediana = wartość dla której skumulowana częstość osiąga 50%),
  • Ocena dystrybucji danych i ich rozkładu (szukanie momentu, w którym dane gwałtownie rosną),
  • Porównania statystyczne - np. testy Kolmogorowa-Smirnowa.

Przykład
Jeśli trzy pierwsze biny mają odpowiednio 10, 15 i 20 obserwacji, to ich wartości skumulowane to 10, 25, 45.

Histogramy 2D i 3D (joint histograms)

Opis
Histogramy 2D (lub 3D) przedstawiają wspólny rozkład dwóch lub trzech zmiennych jednocześnie. Oś X reprezentuje jedną zmienną, oś Y drugą, a wysokość lub kolor słupka - liczbę współwystąpień danej pary wartości.

Zastosowania

  • Analiza współzależności zmiennych - np. związek wzrostu i masy ciała,
  • Przetwarzanie obrazów: wspólna analiza jasności i kontrastu, histogramy kanałów RGB, dopasowanie kolorów,
  • Statystyka wielowymiarowa: badanie korelacji i zależności w dużych zbiorach danych.

Przykład
Histogram 2D może przedstawiać, ile pikseli ma daną kombinację jasności i kontrastu - pozwala to np. na korekcję oświetlenia obrazu.

Histogramy normalizowane

Opis
Histogramy normalizowane mają słupki przeskalowane tak, aby całkowita suma powierzchni wynosiła 1. Dzięki temu histogram może być traktowany jako przybliżenie funkcji gęstości rozkładu.

Zastosowania

  • Porównywanie rozkładów prawdopodobieństwa dla różnych prób,
  • Wykorzystanie histogramów jako wejścia do algorytmów uczenia maszynowego (np. SVM, klasyfikacja obrazów),
  • Wizualizacja danych jako ciągłych rozkładów (gładkie krzywe, funkcje gęstości).

Różnica względem histogramu względnego
Histogram względny pokazuje proporcje (słupki sumują się do 1), ale nie uwzględnia szerokości binów. Histogram normalizowany uwzględnia zarówno liczbę obserwacji, jak i szerokość przedziału, co sprawia, że obszar pod wykresem odpowiada całkowitemu prawdopodobieństwu = 1.

Porównanie rodzajów histogramów

Rodzaj histogramuCo pokazujeDo czego służy
Zwykły (częstości)Liczba obserwacjiKlasyczna analiza rozkładu danych
Względny (częstościowy)Procentowy udziałPorównanie rozkładów o różnych rozmiarach
SkumulowanyNarastająca suma wartościAnaliza kwantyli, estymacja funkcji rozkładu
2D / 3D (joint)Współwystępowanie zmiennychAnaliza korelacji, przetwarzanie obrazów
NormalizowanyGęstość rozkładu (obszar = 1)Estymacja PDF, analiza ciągłych danych

Programowanie i tworzenie histogramów

Histogramy można generować za pomocą wielu narzędzi i języków programowania, np.:

(Python + OpenCV)

import cv2
import matplotlib.pyplot as plt
img = cv2.imread('image.jpg', 0)  # obraz w skali szarości
hist = cv2.calcHist([img], [0], None, [256], [0, 256])
plt.figure(figsize=(8, 4))
plt.title("Histogram obrazu (skala szarości)")
plt.plot(hist, color='gray')
plt.xlabel("Wartości pikseli")
plt.ylabel("Liczba pikseli")
plt.grid(True, linestyle='--', alpha=0.4)
plt.show()

Histogramy w przetwarzaniu obrazów

W przetwarzaniu obrazów histogramy służą nie tylko do analizy rozkładu jasności lub kolorów, ale także do aktywnego przekształcania obrazu w celu poprawy jego jakości i czytelności. Dają one prosty sposób na zrozumienie struktury wizualnej obrazu, a także umożliwiają zastosowanie efektywnych metod korekty, dopasowania i segmentacji.

Histogram equalization (wyrównywanie histogramu)
To technika poprawiająca kontrast obrazu przez przekształcenie jego histogramu tak, by rozkład poziomów jasności był bardziej równomierny. Dzięki temu obraz staje się bardziej czytelny - jasne obszary są rozjaśniane, ciemne pogłębiane, a szczegóły bardziej widoczne. Jest to powszechnie stosowane w obrazach rentgenowskich, satelitarnych czy przy słabym oświetleniu.

Histogram matching (dopasowanie histogramu)
Polega na przekształceniu histogramu jednego obrazu tak, aby upodobnił się do histogramu innego (wzorcowego). Stosuje się go np. w przetwarzaniu wideo, gdzie zachowanie spójności kolorystycznej między klatkami lub scenami jest kluczowe. Pomaga też w analizie obrazów pochodzących z różnych źródeł o różnym oświetleniu.

Segmentacja obrazów (thresholding)
Histogram obrazu umożliwia szybkie wykrycie progów, które oddzielają obiekty od tła. W najprostszej wersji stosuje się jeden próg jasności, dzieląc piksele na ciemne i jasne. Bardziej zaawansowane metody, jak algorytm Otsu, automatycznie znajdują wartość progu minimalizującą niejednorodność w obrazie. To podstawa do dalszego przetwarzania, np. wykrywania krawędzi czy rozpoznawania obiektów.

Przykład
W obrazach czarno-białych histogram pokazuje rozkład poziomów szarości (0-255). Obrazy o niskim kontraście mają wąski histogram skupiony w jednym zakresie.

Analiza histogramu - przykład

Obraz czarno-biały

Histogram jasności

Powyższy wykres przedstawia histogram jasności dla sztucznie utworzonego obrazu w skali szarości, podzielonego na dwie równe części: ciemną (poziom szarości = 50) i jasną (poziom szarości = 200).

Opis histogramu

  • Oś X przedstawia poziomy jasności od 0 (czarny) do 255 (biały)
  • Oś Y pokazuje liczbę pikseli odpowiadających każdemu poziomowi
  • W histogramie widać dwa wyraźne piki:
    • jeden przy poziomie 50 - odpowiada lewej, ciemnej połowie obrazu,
    • drugi przy poziomie 200 - odpowiada prawej, jasnej połowie.

Poziomy pomiędzy (np. 100, 150) są puste, ponieważ w obrazie nie występują piksele o tych wartościach.

Wnioski
Histogram pozwala od razu zrozumieć, że obraz zawiera tylko dwa zakresy jasności.
Jest to przykład dwumodalnego rozkładu jasności, typowego np. dla obrazów binarnych, podzielonych lub segmentowanych.
Histogram tego typu świetnie nadaje się do progującej segmentacji obrazu.

Histogram to jedno z najważniejszych narzędzi eksploracji danych. Łączy prostotę wykonania z głębią interpretacyjną, dając wgląd w naturę zmiennych, rozkład obserwacji i właściwości próbki. Znajduje zastosowanie w niemal każdej dziedzinie, gdzie analizowane są dane ilościowe: od nauki, przez inżynierię i ekonomię, aż po sztuczną inteligencję i grafikę komputerową. Jego poprawna konstrukcja i interpretacja są podstawą każdej rzetelnej analizy statystycznej.

FAQ - Histogram

Czym różni się histogram od wykresu słupkowego?
Histogram przedstawia dane liczbowe i ciągłe, dzielone na przedziały (bin’y), bez odstępów między słupkami. Wykres słupkowy dotyczy danych kategorycznych, a jego słupki mają odstępy. Oba wykresy służą innym typom danych i mają inną interpretację.
Jak wybrać liczbę przedziałów (binów) w histogramie?
Liczba przedziałów wpływa na czytelność histogramu. Zbyt mała liczba upraszcza dane, a zbyt duża wprowadza szum. Często stosuje się reguły Sturgesa lub Freedmana-Diaconisa, które dobierają liczbę binów na podstawie wielkości zbioru lub rozrzutu danych.
Kiedy warto używać histogramu względnego?
Histogram względny pokazuje procentowy udział danych w przedziałach zamiast liczby obserwacji. Dzięki temu można porównywać rozkłady różnych zbiorów, niezależnie od ich rozmiaru. To pomocne przy analizach proporcji lub porównaniach grup.
Co oznaczają różne kształty histogramów?
Kształt histogramu wskazuje na charakter rozkładu danych. Symetryczny oznacza rozkład normalny, skośność sugeruje przewagę wartości większych lub mniejszych, a dwa piki mogą oznaczać obecność dwóch grup. Kształt ujawnia ukryte cechy danych.
Jakie są zastosowania histogramów w przetwarzaniu obrazów?
Histogramy obrazów pozwalają analizować jasność, kontrast i kolory. Są wykorzystywane do poprawy jakości obrazu (equalization), dopasowania stylu (matching) oraz do segmentacji przez wyznaczanie progów jasności. To kluczowe narzędzie w analizie wizualnej.
Czym jest metoda Otsu i jak działa?
Metoda Otsu automatycznie dobiera próg jasności dzielący obraz na obiekt i tło. Wybiera taki próg, który maksymalizuje różnicę między tymi grupami. Działa dobrze przy dwumodalnym histogramie, bez potrzeby ręcznego ustawiania wartości progowej.
Jak można stworzyć histogram w języku Python?
Histogramy można tworzyć w Pythonie za pomocą bibliotek takich jak Matplotlib lub OpenCV. Wystarczy załadować dane lub obraz, obliczyć histogram funkcją `hist` lub `calcHist` i wyświetlić go za pomocą `plot`. To prosty sposób na analizę danych wizualnie.
Co oznacza histogram normalizowany?
Histogram normalizowany to taki, którego słupki zostały przeskalowane tak, aby całkowita suma powierzchni wynosiła 1. Dzięki temu histogram może być traktowany jako przybliżenie funkcji gęstości rozkładu prawdopodobieństwa i porównywany między zbiorami.
Czy histogram działa tylko na danych liczbowych?
Tak, histogramy wymagają danych liczbowych - najlepiej ciągłych lub dyskretnych. Dla danych kategorycznych używa się wykresów słupkowych. Histogramy są idealne do analizy rozkładu pomiarów, zmienności i struktury liczbowych zbiorów danych.
Dlaczego histogramy są ważne w analizie danych?
Histogramy są podstawowym narzędziem eksploracji danych. Pokazują, jak rozłożone są wartości, pozwalają wykrywać nietypowe obserwacje, rozpoznawać rozkłady i wspierają podejmowanie decyzji analitycznych. Są szeroko stosowane w nauce, biznesie i technologii.

Komentarze