From 2399217ca817cc1a8d308f376298f1a6de27f4c0 Mon Sep 17 00:00:00 2001 From: Tom Selier Date: Fri, 22 Sep 2023 15:57:50 +0200 Subject: [PATCH 1/2] Added the best sift version yet --- src/helpers/algorithms/sift_v3.py | 61 +++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/helpers/algorithms/sift_v3.py diff --git a/src/helpers/algorithms/sift_v3.py b/src/helpers/algorithms/sift_v3.py new file mode 100644 index 0000000..4e4552a --- /dev/null +++ b/src/helpers/algorithms/sift_v3.py @@ -0,0 +1,61 @@ +import numpy as np +import cv2 +import os +import matplotlib.pyplot as plt + +DATASET_PATH = "C:\\Users\\tomse\\Documents\\Dataset\\" +DATASET_FOLDERS_LEN = len(os.listdir(DATASET_PATH)) +EARLY_BREAK = 3 + +sift = cv2.SIFT.create(enable_precise_upscale=True) + +## Create 2D lists ## +max_magnitudes = [[] for x in range(DATASET_FOLDERS_LEN)] +avg_magnitudes = [[] for x in range(DATASET_FOLDERS_LEN)] +counts = [[] for x in range(DATASET_FOLDERS_LEN)] + +## Create other variables ## +labels = ['' for x in range(DATASET_FOLDERS_LEN)] +i = 0 + +for folder in os.listdir(DATASET_PATH): + if EARLY_BREAK: + print("Step %d/%d processing %s:"%(i+1, EARLY_BREAK, folder)) + else: + print("Step %d/%d processing %s:"%(i+1, DATASET_FOLDERS_LEN, folder)) + + for file in os.listdir(DATASET_PATH + folder): + ## Load an image ## + path = DATASET_PATH + folder + "\\" + file + full_image = cv2.imread(path, 0) + image = cv2.resize(full_image, (0, 0), fx=0.25, fy=0.25) + + ## Detect keypoints ## + kp = sift.detect(image, None) + + ## Average and Max size ## + magnitudes = [keypoint.size for keypoint in kp] + max_magnitudes[i].append(np.amax(magnitudes)) + avg_magnitudes[i].append(np.sum(magnitudes)/len(kp)) + + ## Number of keypoints ## + counts[i].append(len(kp)) + + ## Store labels ## + labels[i] = folder + + ## Increment folder ## + i += 1 + + if(i == EARLY_BREAK): + break + +print("Done!") + +## Plots ## +fig, ax = plt.subplots() +for i in range(DATASET_FOLDERS_LEN): + ax.scatter(avg_magnitudes[i], max_magnitudes[i],label=labels[i], alpha=0.7) +ax.legend() +ax.grid(True) +plt.show() From 00e35ad78e52c8b9e4ee5ad7682125f3715149fa Mon Sep 17 00:00:00 2001 From: Tom Selier Date: Fri, 22 Sep 2023 15:58:38 +0200 Subject: [PATCH 2/2] colourspace and histogram examples --- src/helpers/algorithms/colourspace.py | 28 +++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/helpers/algorithms/colourspace.py diff --git a/src/helpers/algorithms/colourspace.py b/src/helpers/algorithms/colourspace.py new file mode 100644 index 0000000..fce8646 --- /dev/null +++ b/src/helpers/algorithms/colourspace.py @@ -0,0 +1,28 @@ +import cv2 +import matplotlib.pyplot as plt + +DATASET_PATH = "C:\\Users\\tomse\\Documents\\Dataset\\" + +full_img = cv2.imread(DATASET_PATH + "alder\\1.jpg", 1) +bgr_img = cv2.resize(full_img, (0, 0), fx=0.2, fy=0.2) +hsv_img = cv2.cvtColor(bgr_img, cv2.COLOR_BGR2HSV) + +cv2.imshow('BGR',bgr_img) +cv2.imshow('HSV',hsv_img) +cv2.imshow('HSV - H',hsv_img[:, :, 0]) +cv2.imshow('HSV - S',hsv_img[:, :, 1]) +cv2.imshow('HSV - V',hsv_img[:, :, 2]) + + +hist = cv2.calcHist([hsv_img], [0], None, [256], [0,256]) +plt.plot(hist, label='H') +hist = cv2.calcHist([hsv_img], [1], None, [256], [0,256]) +plt.plot(hist, label='S') +hist = cv2.calcHist([hsv_img], [2], None, [256], [0,256]) +plt.plot(hist, label='V') +plt.grid() +plt.legend() +plt.show() + +cv2.waitKey(0) +cv2.destroyAllWindows() \ No newline at end of file