Glisantă minimă/maximă în 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

Știți un algoritm care poate rezolva această problemă?

0

1 răspunsuri

Deoarece filtrul minim este un filtru separabil, puteți calcula minimum fereastra de alunecare 2D prin calcularea minimă a ferestrei glisante 1D pentru fiecare dimensiune. Pentru o matrice de 4x4 și o fereastră 2x2, algoritmii funcționează după cum urmează:

Să presupunem că aceasta este matricea la început

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

Mai întâi, calculați minimum fereastra de alunecare 1D pentru fiecare rând al matricei separat

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

Apoi, calculați minimul ferestrei de alunecare 1D a fiecărei coloane a rezultatului anterior.

1 2 1
1 4 2
2 2 2

Rezultatul este același ca și cum ați calcula direct fereastra glisantă a unei ferestre 2D. În acest fel, puteți utiliza algoritmul minim al ferestrei de alunecare 1D pentru a rezolva orice problemă minime a ferestrei glisante nD.

0
adăugat
Merită adăugat această lucrare pentru dimensiunea arbitrară a ferestrei.
adăugat autor Samizdis, sursa
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com