Servus allerseits
ich hab mal wieder ein neues Projekt !
eine webcam liefert graubilder eines Laufbandes Taktgesteuert
Lichtschranken Überwacht.
auf dem sich dreieckige Objekte befinden eine spitze ist länger
nun gilt es die position dieser objekte zum kalibrierten mittelponkt der webcam 1024x800 pixel zu bekommen und auch den Drehwinkel der objekte
grösse der objekte ca 60x40 pixel in der webcam
was schlagt ihr vor in sachen image erkennung PIL oder direkt Image
es wäre besser zum suchen wenn es ein 1bit bild wäre
Image Erkennung der Position von Objekten
Hoi,
es wäre etwas einfacher zu raten, wenn Du in Zukunft ganze deutsche Sätze verwenden würdest ...
Deine Beschreibung ist etwas unspezifisch, aber ich nehme mal an, die Berechnun soll einigermaßen schnell und exakt innerhalb der Auflösung sein. Also würde ich so vorgehen:
- Ein Graustufenbild erstellen (falls das nicht ohnehin vorliegt)
- Eine Kreuzkorrelation zwischen einem Template und dem Bild errechnen, um den Korrelationspeak zu finden: Dort in etwa befindet sich Dein Objekt.
- Dann in groben Schritten das Template drehen und verschieben: In jedem Schritt die Korrelation bestimmen. Der höchste Koeffizient entspricht ungefähr den gesuchten Paramtern in Relation zur ursprünglichen Templateposition.
- ggf. um diese Paramter mit einer verfeinerten Parametersuche wiederholen.
Hierzu brauchst Du PIL und scipy. Oder Du arbeitest Dich in Software zur single particle Rekonstruktion ein, z. B. SPIDER oder EMAN, beide mit inzwischen mit einem (nicht wirklich überzeugendem) Pythoninterface versehen.
Hoffe das hilft Dir weiter. Falls nicht, formuliere Deine Frage vielleicht noch einmal etwas detaillierter.
Gruß,
Christian
es wäre etwas einfacher zu raten, wenn Du in Zukunft ganze deutsche Sätze verwenden würdest ...
Deine Beschreibung ist etwas unspezifisch, aber ich nehme mal an, die Berechnun soll einigermaßen schnell und exakt innerhalb der Auflösung sein. Also würde ich so vorgehen:
- Ein Graustufenbild erstellen (falls das nicht ohnehin vorliegt)
- Eine Kreuzkorrelation zwischen einem Template und dem Bild errechnen, um den Korrelationspeak zu finden: Dort in etwa befindet sich Dein Objekt.
- Dann in groben Schritten das Template drehen und verschieben: In jedem Schritt die Korrelation bestimmen. Der höchste Koeffizient entspricht ungefähr den gesuchten Paramtern in Relation zur ursprünglichen Templateposition.
- ggf. um diese Paramter mit einer verfeinerten Parametersuche wiederholen.
Hierzu brauchst Du PIL und scipy. Oder Du arbeitest Dich in Software zur single particle Rekonstruktion ein, z. B. SPIDER oder EMAN, beide mit inzwischen mit einem (nicht wirklich überzeugendem) Pythoninterface versehen.
Hoffe das hilft Dir weiter. Falls nicht, formuliere Deine Frage vielleicht noch einmal etwas detaillierter.
Gruß,
Christian
danke CM
so ich hab jetzt mal geproggt
also mit genormten objekten klappt das die objekte sind 20x20 pixel
so ich hab jetzt mal geproggt
Code: Alles auswählen
from PIL import Image, ImageDraw
import ImageFilter
im = Image.open("test_small.bmp")
im.convert("1")
im1=im.filter(ImageFilter.CONTOUR)
draw = ImageDraw.Draw(im1)
center=[]
for y in xrange(im.size[1]):
for x in xrange(im.size[0]):
if im1.getpixel((x,y)) == 0 :
center.append((x+9,y+9))
draw.rectangle((x,y,x+19,y+19),fill=255)
print center
imcol=im.convert("RGB")
draw = ImageDraw.Draw(imcol)
for point in center:
draw.line((point[0]-5,point[1],point[0]+5,point[1]),fill=(255,0,0))
draw.line((point[0],point[1]-5,point[0],point[1]+5),fill=(255,0,0))
imcol.show()
Oh, die Objekte, sind immer perfekt ausgerichtet und Du hast kein Rauschen? Dann geht es vielleicht wirklich so einfach. Ansonsten würde ich auf den etwas komplexeren Algorithmus von meinem ersten Post zurückfallen: Das dürfte etwas sicherer sein. Dazu brauchst Du allerdings noch scipy.
HTH
Christian
HTH
Christian