Randerkennung programmieren ?
Randerkennung programmieren ?
Hallo Leute,
wie könnte man eine automatische Randerkennung für Bilder programmieren ?
Ziel ist es ein Bild mit einem farbigen Polygon (farbige Fläche und farbiger Rand) "zu scannen".
(Also ein Bild mit einem Vieleckigen - Farbigen - Objekt + andersfarbiger Umgebung (z.B. Transparent) )
Das Polygon sollte dann als Ausschnittmaske vorliegen.
(Die detektieren Eckpunkte wären dann am wichtigsten.)
Wie könnte man an so eine Aufgabe herangehen ?
wie könnte man eine automatische Randerkennung für Bilder programmieren ?
Ziel ist es ein Bild mit einem farbigen Polygon (farbige Fläche und farbiger Rand) "zu scannen".
(Also ein Bild mit einem Vieleckigen - Farbigen - Objekt + andersfarbiger Umgebung (z.B. Transparent) )
Das Polygon sollte dann als Ausschnittmaske vorliegen.
(Die detektieren Eckpunkte wären dann am wichtigsten.)
Wie könnte man an so eine Aufgabe herangehen ?
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
- man-in-black
- Beiträge: 362
- Registriert: 21.08.2006 17:39
Re: Randerkennung programmieren ?
Hi,
das hängt doch ganz stark von den Rand-Eigenschaften ab.
Einfarbig? Dann einfach gucken, was bei y/x=0 vorliegt.
einfach? Kontrastsprung zwischen Rand und Bild? Farbspektrum bewerten (Peaks= potenziell Rand?)
Linienerkennung? Zusammenhängende Linien sind potenziell Bild-Randübergänge, wenn auch noch eine gewisse Geradheit vorliegt.
...
MFG
MIB
das hängt doch ganz stark von den Rand-Eigenschaften ab.
Einfarbig? Dann einfach gucken, was bei y/x=0 vorliegt.
einfach? Kontrastsprung zwischen Rand und Bild? Farbspektrum bewerten (Peaks= potenziell Rand?)
Linienerkennung? Zusammenhängende Linien sind potenziell Bild-Randübergänge, wenn auch noch eine gewisse Geradheit vorliegt.
...
MFG
MIB
Re: Randerkennung programmieren ?
Hallo schwarzer Mann,
dass Bild würde 3 farbig sein.
Umgebung = irgendeine andere Farbe (z.B. mit Transparenz)
Rand = z.B Schwarz (voller Kontrast) 1, 2 oder vielleicht 3 Pixel breit
Inhalt = z.B. Orange (oder irgendeine andere Farbe)
(Vectorgrafik / oder Pixel-/Rastergrafik im BMP - Stil (keine großartige Farb/Pixelkomprimierungen)
Der Rand würde auch keine Rundungen/Wölbungen enthalten.
Es ginge mir quasi um das "Scannen" von Polygonen auf Bildern.
Daraus sollte man die Eckpunkte erhalten um eine passgenaue Maske erstellen zu können.
dass Bild würde 3 farbig sein.
Umgebung = irgendeine andere Farbe (z.B. mit Transparenz)
Rand = z.B Schwarz (voller Kontrast) 1, 2 oder vielleicht 3 Pixel breit
Inhalt = z.B. Orange (oder irgendeine andere Farbe)
(Vectorgrafik / oder Pixel-/Rastergrafik im BMP - Stil (keine großartige Farb/Pixelkomprimierungen)
Der Rand würde auch keine Rundungen/Wölbungen enthalten.
Es ginge mir quasi um das "Scannen" von Polygonen auf Bildern.
Daraus sollte man die Eckpunkte erhalten um eine passgenaue Maske erstellen zu können.
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
- NicTheQuick
- Ein Admin
- Beiträge: 8675
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
- man-in-black
- Beiträge: 362
- Registriert: 21.08.2006 17:39
Re: Randerkennung programmieren ?
Hi,
also quasi einfarbig. Dann suche alle Pixel, die einen Farbübergang aufweisen.
Die Liste dann sortieren und nach Partnern suchen, die durch eine Strecke beschrieben werden können. Das so lange wiederholen, bis du keine Vereinfachung mehr machen kannst.
Die Strecken (Start Ende) beschreiben dann dein Polygon.
MFG
MIB
also quasi einfarbig. Dann suche alle Pixel, die einen Farbübergang aufweisen.
Die Liste dann sortieren und nach Partnern suchen, die durch eine Strecke beschrieben werden können. Das so lange wiederholen, bis du keine Vereinfachung mehr machen kannst.
Die Strecken (Start Ende) beschreiben dann dein Polygon.
MFG
MIB
Zuletzt geändert von man-in-black am 27.03.2019 19:52, insgesamt 1-mal geändert.
Re: Randerkennung programmieren ?
Hallo Nic,
um das "Aliasing"-Problem zu umgehen wäre auch eine Randbreite von > 3 Pixel möglich.
Man könnte ja dann in etwa den wirklich nur schwarzen Außenrand (Mittellinie ?) annehmen, oder ?
Ich bin für alles offen.
um das "Aliasing"-Problem zu umgehen wäre auch eine Randbreite von > 3 Pixel möglich.
Man könnte ja dann in etwa den wirklich nur schwarzen Außenrand (Mittellinie ?) annehmen, oder ?
Ich bin für alles offen.
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
- NicTheQuick
- Ein Admin
- Beiträge: 8675
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: Randerkennung programmieren ?
Ich würde jeden Pixel des Bildes durchgehen und schauen wie viele Pixel um ihn herum welche Farbe haben. Wenn um einen Pixel herum die Hälfte transparent und die andere Hälfte Schwarz ist, dann ist da eine Linie. Wenn mehr transparent ist als Schwarz, dann bist du vermutlich an einer Ecke, vorausgesetzt dein Objekt ist konkav. Die Ecken kannst du dann alle nacheinander erkennen und miteinander verbinden.
Oder du versuchst erst einen schwarzen Pixel zu erkennen und verfolgst die Linie dann. Bei einer scharfen Kurve weißt du dann, dass es eine Ecke ist.
Oder du versuchst erst einen schwarzen Pixel zu erkennen und verfolgst die Linie dann. Bei einer scharfen Kurve weißt du dann, dass es eine Ecke ist.
Re: Randerkennung programmieren ?
Danke an auch Beide.
Ich tue mich zwar schwer, aber ich werde mal versuchen etwas in der empfohlene Richtung zu programmieren.
Mal sehen ob ich irgendetwas brauchbares hinkriege.
Ich tue mich zwar schwer, aber ich werde mal versuchen etwas in der empfohlene Richtung zu programmieren.
Mal sehen ob ich irgendetwas brauchbares hinkriege.
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
- alter Mann
- Beiträge: 201
- Registriert: 29.08.2008 09:13
- Wohnort: hinterm Mond
Re: Randerkennung programmieren ?
vielleicht kannst Du ja das viewtopic.php?f=3&t=25430 als Ausgang benutzen
Win11 64Bit / PB 6.0
-
- Beiträge: 120
- Registriert: 01.04.2011 21:59
Re: Randerkennung programmieren ?
Wenn es um die Erkennung der Flächenkanten geht, schau dir das mal an: https://de.wikipedia.org/wiki/Kantendetektion
Du erhälst ein Graustufenbild in dem die Kanten einer Fläche herausgearbeitet sind. Dann musst Du "nur" noch die umschlossenen Flächen finden.
Du erhälst ein Graustufenbild in dem die Kanten einer Fläche herausgearbeitet sind. Dann musst Du "nur" noch die umschlossenen Flächen finden.