"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Python - 2D array, min max

Hansmaulwurf 17.02.2022 - 17:03 3576 2
Posts

Hansmaulwurf

u wot m8?
Avatar
Registered: Apr 2005
Location: VBG
Posts: 5639
Hi,
Ich hab hier Bilddaten, und im speziellen Koordinaten IM Bild, also nicht am Rand. Ich hab 20 Datenpunkte mit einer x,y Koordinate. Ich will jetzt die äußersten Punkte/Aussenecken der Koordinaten finden, also quasi links oben, rechts oben, links unten und rechts unten. Ich geh davon aus das die in etwa rechteckig verteilt sind, und nicht rund.

Wie finde ich die in einem (numpy) 2d array? Weil ich kann nicht einfach nach dem höchsten Punkt suchen z.B. weil vielleicht gibt es einen der weiter aussen liegt, aber halt nicht ganz oben. Aber auch nicht nur nach dem äußersten, weil dann könnte einer weiter seitlich davon liegen. Also irgendwie muss ich beides zeitgleichen checken.

Gerne auch allgemeine Lösung, irgendwie steh ich komplett am Schlauch, was mich etwas wundert. Danke
Bearbeitet von Hansmaulwurf am 17.02.2022, 17:07

tinker

SQUEAK
Avatar
Registered: Nov 2005
Location: NÖ
Posts: 5200
Hm, mir fällt da jetzt auch keine einfache Lösung ein, aber wenn es um Bilddaten geht denk ich grad an zwei Dinge:
  1. Harris Corner Detector
  2. Contour Features wie "Bounding Rectangle" (zb. mit OpenCV)

sLy-

semiconductor physicist
Avatar
Registered: Aug 2005
Location: AUT
Posts: 1543
ich hab jetzt die Problemstellung nicht ganz verstanden, kannst die nochmal etwas erläutern? Vielleicht ein Beispiel?

Wenns ichs richtig mitbekommen habe (du hast ein set von x,y koordinaten und willst die "äußersten 4 punkte" finden), sollte eine Transformation zu Radial oder Kugelkoordinaten hilfreich sein.

Also einfach alle x,y zu R = x^^2+y^^2 transformieren und dann das max oder halt ein gewünschtes Quantile daraus ziehen. Wenn die Koordinaten nicht schön gleichverteilt in der Ebene liegen, kannst es auch in 4 Quadranten einteilen.
Falls die Koordinaten nicht um 0 liegen, halt zuerst noch den Ursprung in die Mitte legen.
Bearbeitet von sLy- am 17.02.2022, 17:38
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz