from PIL import Image 

# Za crtanje grafika u python-u koristicemo biblioteku matplotlib
from matplotlib import pyplot as plt 

PATH = "/home/cugur/Downloads/matf/dozs/2024/week3/data/yugo.jpg"

with Image.open(PATH) as img:

    img.load()
    img.show()

    # Dobijanje histograma
    h = img.histogram()
    print("Histogram h:", h)
    print("Tip podataka: ", type(h))
    print("Duzina liste h:", len(h))  # 768 = 256 + 256 + 256 

    # Histogram h moze se posmatrati iz 3 dela [R] + [G] + [B] gde su R, G i B podliste duzine 256 koje odgovaraju bin-count-ovima histograma 
    
    # Crtanje histograma crvene boje: 
    plt.bar(range(0, 256), h[0:256], color='#FF0000')
    plt.title("Histogram vrednosti piksela crvene boje")
    plt.xlabel("Vrednost piksela")
    plt.ylabel("Broj piksela sa tom vrednosti na slici")
    plt.show()

    # Zeleni pikseli
    plt.bar(range(0, 256), h[256:512], color='#00FF00')
    plt.title("Histogram vrednosti piksela zelene boje")
    plt.xlabel("Vrednost piksela")
    plt.ylabel("Broj piksela sa tom vrednosti na slici")
    plt.show()

    # Plavi pikseli
    plt.bar(range(0, 256), h[512:768], color='#0000FF')
    plt.title("Histogram vrednosti piksela plave boje")
    plt.xlabel("Vrednost piksela")
    plt.ylabel("Broj piksela sa tom vrednosti na slici")
    plt.show()

    # Zakljucak: jasno se vidi na histogramu kanala da crvena boja dominira na slici jer imamo dosta piksela sa visokom vrednosti crvene boje. 
    # Sa druge strane zelene boje ima dosta manje na slici i nemo puno piksela sa visokom vrednostima Green kanala. 

    # Domaci odnosno vezba: analizirati histograme piksela za slike river.jpg i strawberry.jpg. Izvesti zakljucke.  