an deiner webcam sollte das nicht liegen, das rgb bild ist doch ok..
welchen algorithmus benutzt du zur umwandlung? ich denke da ist der wurm drin.
ich habe hier nur HSL->RBG:
http://codefactory.dead-men.de/index.php?tutorial=51
gruesse
Huhu!
So bin neu hier aber hab schon einen Haufen durch und mitgelesen =)
Ich habe auch vor mir in nächster Zeit einen Robi zu bauen, ein Spaßprojekt, einen interagierenden Roboter. Bevor ich damit anfang wollte ich mir erstmal softwaremäßig einen Überblick machen, was für Möglichkeiten des "Inputs" es gibt.
Ich habe mit dem Bildverarbeitungstut. angefangen, läuft eigentlich auch alles soweit recht gut bis jetz, ich hab nur ein Problem mit den Webcams (ich denke es liegt an denen)
Wenn ich von RGB nach HSV umwandle und mir das "H"-Bild anguck dann seh ich immer Klötzchen (s. Bild). Habs mit ner andern Cam getestet, die hat gegrieselt, da wars ein reines Chaos und man hat gar keine Objekte erkannt. Liegt das an der Komprimierung der Kamera? Oder ist es ein Fehler im Code (das Bspbild vom Tut wandelt er aber genauso um). Gibt es Webcams mit denen ihr gute Erfahrung habt? Denn Objekterkennung wird schwierig wenn man Legosteine im Bild hat
Grüße,
Tim
an deiner webcam sollte das nicht liegen, das rgb bild ist doch ok..
welchen algorithmus benutzt du zur umwandlung? ich denke da ist der wurm drin.
ich habe hier nur HSL->RBG:
http://codefactory.dead-men.de/index.php?tutorial=51
gruesse
Doch zoom mal ran, das sind die typischen Kompressionsklötzchen, oder?
Als Algorythmus hab ich den von hier (is in VB geschrieben):
http://www.aboutvb.de/khw/artikel/khwrgbhlshsv.htm
Und schau mal, wenn ichs mit nem richtigen Foto mache dann geht's auch besser:
EDIT:
2. Anhang, ich hab das mal vergrößter und dunkler gemacht, das liegt doch schon dadran oder?
Hast du die Kantenerkennung über den Farbton-Kanal drüberlaufen lassen? Ich glaube das geht nicht. Zumindest nicht bei hellen und dunklen Flächen.
Aber mit den Klötzchen scheint's auch was zu tun zu haben.
Du siehst ja im H-Kanal schon, dass in den hellen Flächen unten Sprüge drin sind. Das hängt teils mit der Kompression und teils damit zusammen, dass bei Weißtönen sehr kleine Schwankungen starke Farbton-Schwankungen auslösen, z.B. (255 / 255 / 254) = Blau und (254 / 255 / 255) = Rot
Nein hab ich auf dem Screenshot nicht, allerdings funktioniert das wunderbar, habs immer nur mit einem Kanal getestet aber das ging gut. Nur dann hat man halt viel zu viele Kanten...
D.h. wohl neue Webcam oder? Hat ich eh vor, das is so ne billige. Gibts denn welche ohne Kompression?
Hallo troede,
was möchstest Du denn mit deiner Kamera erkennen?
Ich habe mich auch schon mal vor einiger Zeit mit der Bildverarbeitung versucht https://www.roboternetz.de/phpBB2/viewtopic.php?t=15731 . Mit eine Quickcam Pro konnte ich für mich brauchbare Ergebnisse erzielen.
Gruss,
stochri[/url]
Hey!
Wie gesagt ich dachte an einen "humanoiden" Roboter, der z.B. Gesichter erkennen kann und Menschen. Aber auch einfache Gegenstände.
Ist das für privat überhaupt realisierbar? Denn man hat ja nicht immer einfache Hintergründe in ner Wohnung, eher das Gegenteil davon...
Würdet ihr für Menschen lieber eine Infrarotkamera nehmen? Ist ja doch deutlich einfacher oder?
Grüße
EDIT:
Ich hab das grad mal mit deinem Testbild getestet...ich glaub da stimmt wohl doch irgendwas nicht, schauts euch mal im Anhang an.
Und das ist der Code für die Umwandlung, copy&paste deswegen sollte das ja eigentlich gehn oder? Was auf dem Bild ist ist der "H-Kanal".Code:Public Sub RGBColorToHSV(ByVal Color As Long, rH As Integer, _ rS As Integer, rV As Integer, rBack As Integer, gBack As Integer, bBack As Integer) OleTranslateColor Color, 0&, Color nR = Color Mod 256 rBack = nR Color = Color \ 256 nG = Color Mod 256 gBack = nG Color = Color \ 256 nB = Color Mod 256 bBack = nB RGBtoHSV nR, nG, nB, rH, rS, rV End Sub Public Sub RGBtoHSV(ByVal R As Integer, ByVal g As Integer, _ ByVal b As Integer, rH As Integer, rS As Integer, rV As Integer) On Error Resume Next nRR = R / 255 nGG = g / 255 nBB = b / 255 nRGBs(0) = nRR nRGBs(1) = nGG nRGBs(2) = nBB nMax = zMax(nRGBs) nMin = zMin(nRGBs) nV = nMax If nMax <> 0 Then nS = (nMax - nMin) / nMax End If If nS = 0 Then nH = -1 Else nDelta = nMax - nMin Select Case nMax Case nRR nH = (nGG - nBB) / nDelta Case nGG nH = 2 + ((nBB - nRR) / nDelta) Case Else nH = 4 + ((nRR - nGG) / nDelta) End Select nH = nH * 60 If nH < 0 Then nH = nH + 360 End If End If rH = nH rS = nS * 100 rV = nV * 100 End Sub
Oder liegt das wieder nur daran dass das n JPG ist? Hast du das mal probiert, deinen Screenshot umzuwandeln?
OK ich hatte vergessen die Normierung vorzunehmen, von 360 auf 255...![]()
Sieht schon viel besser aus. Wie mach ich denn jetzt weiter am besten?
Und noch eine Frage, manchmal bekomm ich viel bessere Ergebnisse wenn ich den S oder den V-Kanal nehm...nach welchem Kriterium is denn das so?
teste die umwandlung doch mal in matlabn oder scvilab, dann kannt du schauen, ob´s an deinem proghramm oder am bild liegt
Wie geht das?![]()
Lesezeichen