Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 02.04.2007, 19:57 Titel: Farb-Rausch Filter |
|
|
Hallöle .. ich suche dringend ein stück Code, mit dem ich ein Farbrauschen aus einem Bild entfernen kann.
Ansich sidn die Pixel von Bild1 udn Bild2 "fast" gleich ... jetzt brauch ich allerdings einen Filter, der mir dieses Problem "wegfiltert".
Als ergebniss soll ein Bild entstehen, das (muss nicht perfekt sein), Pixel anzeiget, die sich öffters an der selben stelle wiederhohlen, und sich nicht so schnell ändern, als bei einem reinen BMP. (JPG will ich auch nicht verwenden, da ich schnell auf die cDIB zugreifen muss, und hohe wiederhohlraten (20FPS) brauche. die Kompression würde zu lange dauern. Desweiteren würde die Integrität des Bildes verlohren gehen.
Gleiches gilt für GIF.
Meine ersten ansätze sind folgende:
Code: | Option Explicit
Public Function Rausch_Filter_1(V_DataIn() As Byte, V_DataOut() As Byte, V_DataC As Long, V_CutValue As Byte)
On Error Resume Next
Dim X As Long
Dim Y As Long
ReDim V_DataOut(UBound(V_DataIn)) As Byte
V_DataOut = V_DataIn
For X = 1 To V_DataC Step 3
For Y = 0 To 2
If V_DataIn(X + Y) <= V_CutValue Then V_DataOut(X + Y) = 0
Next
Next
End Function |
Code: | Option Explicit
Private L_DataD() As Byte
Public Function Rausch_Filter_2(V_DataIn() As Byte, V_DataOut() As Byte, V_DataC As Long, V_DivValue As Byte)
On Error Resume Next
Dim X As Long
ReDim V_DataOut(UBound(V_DataIn)) As Byte
ReDim Preserve L_DataD(UBound(V_DataIn)) As Byte
V_DataOut = V_DataIn
For X = 1 To V_DataC Step 3
If CLng(V_DataIn(X + 0)) >= CLng(L_DataD(X + 0)) - V_DivValue And CLng(V_DataIn(X + 0)) <= CLng(L_DataD(X + 0)) + V_DivValue Then
If CLng(V_DataIn(X + 1)) >= CLng(L_DataD(X + 1)) - V_DivValue And CLng(V_DataIn(X + 1)) <= CLng(L_DataD(X + 1)) + V_DivValue Then
If CLng(V_DataIn(X + 2)) >= CLng(L_DataD(X + 2)) - V_DivValue And CLng(V_DataIn(X + 2)) <= CLng(L_DataD(X + 2)) + V_DivValue Then
V_DataOut(X + 0) = L_DataD(X + 0)
V_DataOut(X + 1) = L_DataD(X + 1)
V_DataOut(X + 2) = L_DataD(X + 2)
End If
End If
End If
Next
L_DataD = V_DataIn
End Function |
Code: | Option Explicit
Private L_DataD() As Byte
Public Function Rausch_Filter_3(V_DataIn() As Byte, V_DataOut() As Byte, V_DataC As Long)
On Error Resume Next
Dim X As Long
Dim NV As Long
ReDim V_DataOut(UBound(V_DataIn)) As Byte
ReDim Preserve L_DataD(UBound(V_DataIn)) As Byte
For X = 1 To V_DataC
NV = CLng(V_DataIn(X)) + CLng(L_DataD(X)) / 2
If NV > 255 Then NV = 255
If NV < 0 Then NV = 0
V_DataOut(X) = NV
Next
L_DataD = V_DataIn
End Function
|
Leider erhalte ich dabei keine besonders guten ergebnisse.Die integrität wird dabei leider auch sehr stark verändert.
Keiner der FIlter scheint mir als geeigent zu sein .. daher suche ich jetzt etwas, das es besser umsetzen kann.
Hat da jemand ne idee?
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
E-P-S
Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 02.04.2007, 21:17 Titel: |
|
|
Wenn es darum geht zu erkennen ob sich von Pic1 zu Pic2 was verändert hat, würde ich eher einen Kanten Algo vorschlagen.
D.h. einen Algorithmus der alle markanten Kanten erkennt und errechnet (bzw. markiert). Das Ergebnis würde ich dann für eine Bewegungserkennung (z.B.) benutzen - natürlich in einer Gewissen Gewichtung, da ja auch die Kanten nicht jedesmal 100% deckungsgeleich sind.
Sollte ich mit meiner Annahme völlig falsch liegen - dann vergiss das geschriebene _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 02.04.2007, 21:38 Titel: |
|
|
Naja.. es läuft darauf hinaus ... allerdings will ich keine reine Bewegungsanalyse machen, sondern eine Objekterkennung.
Das problem was ich jedoch habe ist das Farbrauschen im Bild. Ich muss das irgend wie herausfiltern. Nachts, bzw. in einem künstlichbeleuchtetem Raum ist das nicht so tragisch, es es etwas rauscht, das kann ich bereits filtern, jedoch hab ich am Tag durch sonneneinstrahlung ein sehr hohes intensives rauschen, das sehr viel Bildintegrität zerstört.
Jetzt versuche ich das Rauschen zu minden, so das ich mich der effektiven Objekterkennugn widmen kann.
Wenn das Rauschen weg ist, dann kann ich eine bewegung & Objektanalyse machen.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 02.04.2007, 22:25 Titel: |
|
|
[OT]Sollen deine chatbots jetzt sich auch noch per webcam mit den besuchern unterhalten können?! [/OT] _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 02.04.2007, 22:34 Titel: |
|
|
Nein ... das is für meinen Laufroboter. ... gehört aber alles zusammen ... is ein teil von Lisi
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 02.04.2007, 22:51 Titel: |
|
|
hm, *idee*
wie wärs, wenn du einfach die Farbtiefe herabsetzt?
Dadurch geht ein Teil des Bildes verloren, aber somit auch das Rauschen, wenn du nen gescheiten Algo dafür nutzt.
Vlt. kannst du es dann sogar noch einfacher auslesen... |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 02.04.2007, 22:57 Titel: |
|
|
hab ich auch überlegt, udn getestet, allerdings ist das nicht das, was ich brauche .. wenn ich die Farbtiefe herab setze, dann gehen mir einige Bildinformationen verlohren, die ich allerdings benötige.
ich brauch definitiv eine andere art von Filter.
Zur not kann ich auch mehrere Speicherarray nutzen, um mehr Tests zu machen, aber es soll devinitiv dieses Bild entrauscht werden.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 02.04.2007, 23:06 Titel: |
|
|
Vlt. macht sich der Median-Filter aus IrfanView gut dafür |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 02.04.2007, 23:40 Titel: |
|
|
Ein quellcode dafür wär ideal
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 03.04.2007, 11:53 Titel: |
|
|
vom Ansatz her falsch.
Wie willst du Farbrauschen eliminieren, wenn du die Amplitude des Farbrauschens oder das Verhältnis Signal zu Rauschen nicht kennst.
Der Vergleich von Pixel eines Bildes gibt dir da keine schlüssigen Informationen.
Du musst schon mehrere (möglichst unbewegte) Bilder vergleichen, um einen Wert für das Farbsignal und den Farbrauschanteil ermitteln zu können. ThePuppetMaster hat Folgendes geschrieben: | Ansich sidn die Pixel von Bild1 udn Bild2 "fast" gleich ... | Habe ich da einen Knick in der Pupille .. der Farbrauschanteil ist seeeehr hoch (was bei Webcams leider oft so ist!) _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 03.04.2007, 16:14 Titel: |
|
|
Sebastian hat Folgendes geschrieben: | Hab ich so eine Idee (Cluster-KI mit Laufroboter usw.) nicht schon mal bei irgendeiner Fernsehserie (könnte Akte X gewesen sein) gesehen? | Keine Ahnung ... die folge hab ich dann wohl verpasst
sebastian hat Folgendes geschrieben: | Habe ich da einen Knick in der Pupille .. der Farbrauschanteil ist seeeehr hoch (was bei Webcams leider oft so ist!) |
Naja.. es ist ja keine Webcam. Es ist eien Farbcam, die etwas modifiziert wurde. (IR-Filter wurde ausgebaut, um bessere Nachtsichtfehigkeit zu ermöglichen)
Ich habe jetzt schon etwas gefunden, das sich dafür doch schon recht gut eignet. -> PicCompare Nr.1
Wenn die Werte gut eingestellt wurde, dann erkennt er die Bilder als "gleich" ... das reicht mir aus, um die "unterschiedlichen" Pixel im neuen Bild durch die im Alten zu ersetzen, um den "kleinen" unterschied zu Kompensieren. Danach hab ich ein Bild, das im Grunde "gefiltert" wurde.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 04.04.2007, 08:17 Titel: |
|
|
Während meines Informatikstudiums hatte ich unter anderem ein Fach Grafische Datenverarbeitung, wo wir uns genau mit solchen Dingen auseinandergesetzt haben, weil man ja dies in der Industrie häufig für automatisierte Qualitätskontrollen braucht, z.B. Kamera über Förderband, die jeden Beutel einer Ware abfotografiert und Computer, der mit Hilfe solcher Algorithmen erkennt, ob alle Teile in der korrekten Anzahl, Form und Grösse drin sind.
Bei näherem Interesse könnte ich die eine oder andere Unterlage einmal über Ostern in der Dachbodensammlung "ausgraben" gehen... _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 04.04.2007, 17:35 Titel: |
|
|
das wär ja genial!!!!!!!!
Da danke ich schonmal rechtherzlich im vorraus!!!
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
|