Hallo, liebe Profis!
Ich habe versucht, mit meinen bescheidenen Möglichkeiten, einen Code zu basteln, der erkennen kann, ob 2 Bilder identisch sind oder nicht.
Das klappt auch (siehe Code unten).
Mein Ansatz ist aber nicht brauchbar, weil es für einen Vergleich von 2 Bitmaps ungefähr 5 Sekunden braucht und ich mit ungefähr 40.000 Bildern arbeiten muss.
Ich bin gerade dabei Super8-Filme zu digitalisieren und programmiere sehr gerne kleine Tools, die mir die Arbeit leichter machen.
Ich würde gerne ein Tool programmieren, das Bildhänger im Film finden kann - diese können beim Aufnehmen entstehen, wenn der Film hängt - (ich weiß, dass dies eine tolle Erklärung ist ).
Dazu wäre aber ein gewisser Anteil an Unterstützung nötig, da ich zwar etwas programmieren kann, aber kein Profi bin (ist ein Hobby von mir).
"picoflop" hatte im VB-Paradiese-Forum einen "BitmapComparer" erwähnt, mit einer "Performance" Lib: Framewave von AMD.
Dazu hatte er auch ein Beispiel gepostet (Freitag, 8. Juli 2011, 08:20) - Zwei Bilder am schnellsten/besten Vergleichen?
Für Intel soll man IPP (Intel Integrated Performance Primitives) nutzen.
Leider würde ich einen BitmapComparer mit IPP brauchen, da mein PC Intel-Prozessoren hat (habe mir IPP heruntergeladen).
Ich habe versucht Code-Beispiele für die Verwendung von IPP in Verbindung mit VB.Net zu finden - nur ist das mir leider nicht gelungen.
Leider kann ich außer meinem (wahrscheinlich naiven) Ansatz nichts beitragen...
Ich hätte bei meinem Ansatz nur die Idee, dass man (um Zeit zu sparen) nicht jeden Pixel vergleicht, sondern nur jeden 4ten? oder 8ten? - und dass man nicht jedes Bild vergleicht, sondern auch nur jedes 10te?
So könnte man deutlich Zeit einsparen, aber auf Kosten der Zuverlässigkeit (ob identisch oder nicht).
Ich möchte euch bitten, wenn es möglich wäre, mir da etwas "unter die Arme zu greifen".
Ich würde gerne IPP mit VB.Net verwenden um Bildhänger zu finden.
Wenn jemand so freundlich wäre und mir helfen könnte, wie man mit IPP 2 Bmp als identisch einstuft - dazu benötige ich etwas Hilfe.
Ich tüftele natürlich im Rahmen meiner Möglichkeiten mit, aber meine Fähigkeiten/Erfahrung sind nicht so ausgeprägt, wie bei einem Profi.
Es wäre toll, wenn jemand dazu die Lust und die Zeit hätte...
Viele Grüße,
kwon
Hier mein bescheidener Versuch:
Habe als Test 2 identische Bilder verglichen - diese werden als identisch eingestuft.
Dann habe ich in einem der beiden identischen Bildern einen kleinen lila Punkt gesetzt
(und so das Bild mit dem Punkt zu einem nicht identischen gemacht)
- jetzt werden beide Bilder als NICHT identisch eingestuft.
Ich habe versucht, mit meinen bescheidenen Möglichkeiten, einen Code zu basteln, der erkennen kann, ob 2 Bilder identisch sind oder nicht.
Das klappt auch (siehe Code unten).
Mein Ansatz ist aber nicht brauchbar, weil es für einen Vergleich von 2 Bitmaps ungefähr 5 Sekunden braucht und ich mit ungefähr 40.000 Bildern arbeiten muss.
Ich bin gerade dabei Super8-Filme zu digitalisieren und programmiere sehr gerne kleine Tools, die mir die Arbeit leichter machen.
Ich würde gerne ein Tool programmieren, das Bildhänger im Film finden kann - diese können beim Aufnehmen entstehen, wenn der Film hängt - (ich weiß, dass dies eine tolle Erklärung ist ).
Dazu wäre aber ein gewisser Anteil an Unterstützung nötig, da ich zwar etwas programmieren kann, aber kein Profi bin (ist ein Hobby von mir).
"picoflop" hatte im VB-Paradiese-Forum einen "BitmapComparer" erwähnt, mit einer "Performance" Lib: Framewave von AMD.
Dazu hatte er auch ein Beispiel gepostet (Freitag, 8. Juli 2011, 08:20) - Zwei Bilder am schnellsten/besten Vergleichen?
Für Intel soll man IPP (Intel Integrated Performance Primitives) nutzen.
Leider würde ich einen BitmapComparer mit IPP brauchen, da mein PC Intel-Prozessoren hat (habe mir IPP heruntergeladen).
Ich habe versucht Code-Beispiele für die Verwendung von IPP in Verbindung mit VB.Net zu finden - nur ist das mir leider nicht gelungen.
Leider kann ich außer meinem (wahrscheinlich naiven) Ansatz nichts beitragen...
Ich hätte bei meinem Ansatz nur die Idee, dass man (um Zeit zu sparen) nicht jeden Pixel vergleicht, sondern nur jeden 4ten? oder 8ten? - und dass man nicht jedes Bild vergleicht, sondern auch nur jedes 10te?
So könnte man deutlich Zeit einsparen, aber auf Kosten der Zuverlässigkeit (ob identisch oder nicht).
Ich möchte euch bitten, wenn es möglich wäre, mir da etwas "unter die Arme zu greifen".
Ich würde gerne IPP mit VB.Net verwenden um Bildhänger zu finden.
Wenn jemand so freundlich wäre und mir helfen könnte, wie man mit IPP 2 Bmp als identisch einstuft - dazu benötige ich etwas Hilfe.
Ich tüftele natürlich im Rahmen meiner Möglichkeiten mit, aber meine Fähigkeiten/Erfahrung sind nicht so ausgeprägt, wie bei einem Profi.
Es wäre toll, wenn jemand dazu die Lust und die Zeit hätte...
Viele Grüße,
kwon
Hier mein bescheidener Versuch:
Habe als Test 2 identische Bilder verglichen - diese werden als identisch eingestuft.
Dann habe ich in einem der beiden identischen Bildern einen kleinen lila Punkt gesetzt
(und so das Bild mit dem Punkt zu einem nicht identischen gemacht)
- jetzt werden beide Bilder als NICHT identisch eingestuft.
VB.NET-Quellcode
- Public Class Form1
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Dim bild1 As New Bitmap("C:\ident_Bilder_finden\bild1.bmp"), bild2 As New Bitmap("C:\ident_Bilder_finden\bild2.bmp")
- Dim answer As Boolean = False
- answer = ident(bild1, bild2)
- If answer = True Then
- MessageBox.Show("identisch")
- Else
- MessageBox.Show("nicht identisch")
- End If
- End Sub
- Function ident(i1 As Image, i2 As Image) As Boolean
- Dim x As Integer, y As Integer
- Dim b1 As Bitmap = i1, b2 As Bitmap = i2, c As Color, d As Color
- For y = 0 To b2.Height - 1
- For x = 0 To b1.Width - 1
- c = b1.GetPixel(x, y)
- d = b2.GetPixel(x, y)
- If c.ToString <> d.ToString Then
- Return False
- End If
- Next
- Next
- Return True
- End Function
- End Class
-