Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.183 Beiträge
 
Delphi 12 Athens
 
#44

Re: Bilder schnell miteinander vergleichen

  Alt 17. Aug 2009, 07:04
Zitat von Deviloper:
Also es ist klar wenn ich wissen möchte ob Dateien von der Struktur und gesamten Inhalt her gleich sind, dann verwende ich Hashes (Checksummen) um ihre eindueitge Übereinstimmung festzustellen.
Hashs sind nicht eindeutig!
Man kann damit nur prüfen, ob es vermutlich eindeutig ist, da ja nach Hashgröße dennoch mehrere Dateien die selben Hashs haben.
z.B. CRC32 und 6 Byte große Dateien, da haben dennoch durchschnittlich je 65.000 Dateien den selben Hash, auch wenn es in freier Wildbahn nicht so drastisch dein wird, da es dort nicht jede Bytekombination geben wird.

Zitat von Deviloper:
Heißt Also pixelweise Bild abgleichen ?
Pixelweise und dann auch nur auf Ähnlichkeit, da JPEG je formatbebingte Verluste hat und sich somit schon, Aufgrund der Komprimierung, Unterschiede eingeschlichen haben.

Zitat von Deviloper:
Lassen sich beide Bilder wie Klarsichtfolien übereinander legen so das Unterschiede direkt ersichtlich wären ?
Ja, einfach die Differenz aller Pixel in ein neues Bild übertragen.
Also praktisch je Pixel und Farbkanal (RGB):
BildDiff.Pixel[x,y].Kanal[z] := Abs(Bild1.Pixel[x,y].Kanal[z] - Bild2.Pixel[x,y].Kanal[z]);
Zitat von Deviloper:
Existieren Komponenten/Schnipsel die Bildähnlichkeiten feststellen können, unabhängig vom Dateiformat, Bittiefe,etc. ?
bestimmt.
aber du kannst ja erstmal alles sozusagen in ein Bitmap, mit gleichen Ausmaßen übertragen
- vergiß nicht, das vorallem bei den Fotos auch mal die Auslösung, das Format und die Komprimierungsstärke unterschiedlich sein können.
- ok, es kann sich auch der Bildausschnitt, Blickwinkel, Belichtung (Helligkeit, Kontrast usw.) unterscheiden und schlimm wird es, wenn sich die selbe Person in unterschiedlichen Umgebungen befindet

Zitat von Deviloper:
Ist es möglich festzustellen ob EXIF Informationen geändert wurden oder original sind?
ich glaub nicht und selbst wenn, dann kann man dieses fälschen


ja, dann erstmal willkommen
und wie du letztenlich am Besten vergleichen könntest, das entscheidet sich erstmal grundsätzlich darin, welche Unterschiede zu erwarten wären.

- Also wenn sich nur Bildformat bzw. Komprimierungsstärke unterscheiden, dann sollte es reichen, wenn du die Pixel vergleichst und die Abweichungen berechnest.
- bei Unterschieden in der Auflösung, solltest du vorher diese angleichen
- bei Unterschieden in den Farben (Helligkeit, Kontrast, Weißabgleich usw.) müßte man vorher die Bilder analysieren und auch diese Werte angleichen
- bei anderem Bildausschnitt, wo man also auf den Bildern unterschieliche Aus-/Abschnitte sieht, wird es schwer, da du dann ja erstmal irgendwie ähnliche Bildausschnitte finden müßtest
- usw.

Das Problem ist also erstmal zu entscheiden welche Informationen uninteressant sind und diese rauszufiltern, bzw. zu ignorieren und dann nur den Rest zu vergleichen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat