# Chargement des librairies nécessaire à l'exécution du code
from skimage.feature import local_binary_pattern
from skimage import data
import matplotlib.pyplot as plt
import numpy as np
import cv2
#Ouverture en niveau de gris des images à traiter
grass=cv2.imread ("grass.jpeg",0)
sky=cv2.imread ("sky.jpeg",0)
sand=cv2.imread ("sand.jpeg",0)
#Calcul de la transformée et de l'histogramme lbp de l'image grass
lbp_grass=local_binary_pattern(grass, 8, 3, 'uniform')
n_bins = int(lbp_grass.max() + 1)
hist_lbp_grass,bins_grass=np.histogram(lbp_grass, density=True, bins=n_bins, range=(0, n_bins))
#Calcul de la transformée et de l'histogramme lbp de l'image sky
lbp_sky=local_binary_pattern(sky, 8, 3, 'uniform')
n_bins = int(lbp_sky.max() + 1)
hist_lbp_sky,bins_sky=np.histogram(lbp_sky, density=True, bins=n_bins, range=(0, n_bins))
#Calcul de la transformée et de l'histogramme lbp de l'image sand
lbp_sand=local_binary_pattern(sand, 8, 3, 'uniform')
n_bins = int(lbp_sand.max() + 1)
hist_lbp_sand,bins_sand=np.histogram(lbp_sand, density=True, bins=n_bins, range=(0, n_bins))
#Normalisation des tranfomées lbp des images afin de pouvoir les afficher
img_lbpgrass=cv2.normalize(np.array(lbp_grass), None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)
img_lbpsand=cv2.normalize(np.array(lbp_sand), None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)
img_lbpsky=cv2.normalize(np.array(lbp_sky), None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)
#Affichage des transformées LBP
cv2.imshow("lbp grass", img_lbpgrass)
cv2.imshow("lbp sand", img_lbpsand)
cv2.imshow("lbp sky", img_lbpsky)
#Affichage des histogrammes LBP
plt.figure()
plt.hist(hist_lbp_grass)
plt.title("grass")
plt.figure()
plt.hist(hist_lbp_sky)
plt.title("sky")
plt.figure()
plt.hist(hist_lbp_sand)
plt.title("sand")
plt.show()