Fenêtre coulissante minimum/maximum en 2D

Suppose we are given an integer matrix of pixels of size NxN and an integer k - window size. We need to find all local maximums (or minimums) in the matrix using the sliding window. It means that if a pixel has a minimum (maximum) value compared to all pixels in a window around it then it should be marked as minimum (maximum). There is a well-known sliding window minimum algorithm which finds local minimums in a vector, but not in a matrix http://home.tiac.net/~cri/2001/slidingmin.html

Connaissez-vous un algorithme qui peut résoudre ce problème?

0

1 Réponses

Puisque le filtre minimum est un filtre séparable, vous pouvez calculer la fenêtre glissante 2D minimum en calculant la fenêtre glissante 1D minimum pour chaque dimension. Pour une matrice 4x4 et une fenêtre 2x2, les algorithmes fonctionnent comme suit:

Supposons que c'est la matrice au début

3 4 2 1
1 5 4 6
3 6 7 2
3 2 5 4

D'abord, vous calculez la fenêtre glissante 1D minimum pour chaque rangée de la matrice séparément

3 2 1
1 4 4
3 6 2
2 2 4

Ensuite, vous calculez la fenêtre glissante 1D minimum de chaque colonne du résultat précédent.

1 2 1
1 4 2
2 2 2

Le résultat est le même que si vous calculiez la fenêtre glissante minimum d'une fenêtre 2D directement. De cette façon, vous pouvez utiliser l'algorithme minimum de fenêtre glissante 1D pour résoudre tout problème minimum de fenêtre glissante nD.

0
ajouté
Cela vaut la peine d'ajouter ceci pour une taille de fenêtre arbitraire.
ajouté l'auteur Samizdis, source