Skip to content
Snippets Groups Projects
Commit 80e82aee authored by Mohyeddine2's avatar Mohyeddine2
Browse files

objectTrackign

parent 48365a14
No related branches found
No related tags found
No related merge requests found
......@@ -2,7 +2,7 @@ import cv2
import numpy as np
import os
import matplotlib.pyplot as plt
def calculate_histogram(image, bins=32):
def calculate_histogram(image, bins=255):
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
hist = cv2.calcHist([hsv_image], [0, 1], None, [bins, bins], [0, 180, 0, 256])
return cv2.normalize(hist, hist).flatten()
......@@ -22,6 +22,13 @@ def emd(hist1, hist2):
bins2 = np.array([[i, hist2[i]] for i in range(len(hist2))], dtype=np.float32)
emd_value, _, _ = cv2.EMD(bins1, bins2, cv2.DIST_L2)
return emd_value
def qf_distance(hist1, hist2):
A = np.zeros((len(hist1), len(hist2)))
dist = np.abs(hist1[:, None] - hist2)
A = 1 - dist / np.max(dist)
diff = np.abs(hist1 - hist2)
qf = np.sqrt(np.dot(diff.T, np.dot(A, diff)))
return qf
def find_minimum_distance(reference_image_path, scene_folder, bins=32):
# Charger l'image de référence
reference_image = cv2.imread(reference_image_path)
......@@ -33,14 +40,14 @@ def find_minimum_distance(reference_image_path, scene_folder, bins=32):
'Bhattacharyya': float('inf'),
'Minkowski': float('inf'),
'Matusita': float('inf'),
'Cosine': float('inf'),
'QF': float('inf'),
'EMD': float('inf')
}
closest_images = {
'Bhattacharyya': None,
'Minkowski': None,
'Matusita': None,
'Cosine': None,
'QF': None,
'EMD': None
}
for filename in os.listdir(scene_folder):
......@@ -55,7 +62,7 @@ def find_minimum_distance(reference_image_path, scene_folder, bins=32):
'Bhattacharyya': bhattacharyya_distance(reference_hist, target_hist),
'Minkowski': minkowski_distance(reference_hist, target_hist),
'Matusita': matusita_distance(reference_hist, target_hist),
'Cosine': cosine_distance(reference_hist, target_hist),
'QF': qf_distance(reference_hist, target_hist),
'EMD': emd(reference_hist, target_hist)
}
......@@ -66,7 +73,7 @@ def find_minimum_distance(reference_image_path, scene_folder, bins=32):
return min_distances, closest_images, reference_image,distances
def visualize_results(reference_image, closest_images, min_distances):
metrics = list(closest_images.keys())
fig, axes = plt.subplots(1, len(metrics) + 1, figsize=(15, 5))
fig, axes = plt.subplots(1, len(metrics) + 1, figsize=(15, 10))
axes[0].imshow(cv2.cvtColor(reference_image, cv2.COLOR_BGR2RGB))
axes[0].set_title("Image de Référence")
axes[0].axis('off')
......@@ -80,11 +87,14 @@ def visualize_results(reference_image, closest_images, min_distances):
axes[i + 1].axis('off')
plt.tight_layout()
plt.show()
reference_image_path = "Scene1/158.jpg"
scene_folder = "Scene1"
reference_image_path = "20210617_193155.jpg"
scene_folder = "scene"
min_distances, closest_images, reference_image, dis = find_minimum_distance(reference_image_path, scene_folder)
print("Distances minimales et images correspondantes :")
for metric, distance in min_distances.items():
print(f"{metric} : {distance:.4f} (Image : {closest_images[metric]})")
visualize_results(reference_image, closest_images, min_distances)
h.py 0 → 100644
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment