Create algo.py

This commit is contained in:
mathur04
2024-05-14 13:38:19 +02:00
committed by GitHub
parent d5ecbb91e8
commit 8667824470

40
SAFT/algo.py Normal file
View File

@ -0,0 +1,40 @@
import numpy as np
from math import sqrt, pow
def saft_algorithm(image, h, wid, hig, win, A, B):
"""
Implémentation de l'algorithme SAFT pour corriger les images.
:param image: np.array, l'image à traiter sous forme de tableau 2D numpy.
:param h: int, hauteur des données sum_prod.
:param wid: int, largeur de l'image.
:param hig: int, hauteur de l'image.
:param win: int, taille de la fenêtre de moyenne.
:param A: float, coefficient de correction.
:param B: float, coefficient de correction.
:return: np.array, l'image corrigée.
"""
# Initialisation du vecteur sum_prod
sum_prod = np.zeros(h, dtype=np.int32)
k = win // 2
# Parcourir les colonnes principales
for j in range(k, wid - k):
# Parcourir les lignes adjacentes à la colonne en cours
for j1 in range(j - k, j + k):
distx = abs(j - j1)
# Parcourir les lignes de pixels
for i1 in range(hig):
dif_f = sqrt(pow(i1 * A, 2) + pow(distx * B, 2)) - (i1 * A)
dif_i = int(dif_f / A)
if 0 <= i1 - dif_i < hig:
sum_prod[i1] = (image[j1, i1 - dif_i] - 128 * (image[j, i1] - 128) + sum_prod[i1])
# Normalisation des résultats et mise à jour de l'image
for ix in range(hig):
sum_prod[ix] = int(sum_prod[ix] / win)
image[j, ix] = np.clip(sum_prod[ix] + 128, 0, 255).astype(np.uint8)
return image