![]() |
Re: Bilder schnell miteinander vergleichen
Zitat:
|
Re: Bilder schnell miteinander vergleichen
Genau, "SetLength" kann man viel optimieren und auch den aufruf
Delphi-Quellcode:
kann man wie folgt optimieren:
changes[Length(changes) - 1].Color := Bitmap2.Canvas.Pixels[x, y];
Delphi-Quellcode:
changes[Length(changes) - 1].Color := RGB(P2^.rgbtRed, P2^.rgbtGreen, P2^.rgbtBlue);
|
Re: Bilder schnell miteinander vergleichen
Hallo miteinander,
Dieser Thread ist beachtlich alt, aber wie ich sehe bin ich nicht der einzigste mit Fragen die auch bei ausgiebiger Recherche nicht leicht zu beantworten sind. :wink: Gleich ist eben doch nicht gleich oder dasselbe :) 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. Folgendes Szenario : In xyz existiert eine Datenbank mit Bildern (evtl mehrere pro Person) vermeidlicher Verbrecher Angenommen in der Datenbank liegt eine Portraitaufnahme des 'Gangsters' als JPG Datei vor und ich bekam per Email dasselbe Bild, jedoch als BMP Datei. Dateistruktur Unterschiede sind demnach klar, prüfsummencheck somit sinnlos. Heißt Also pixelweise Bild abgleichen ? Lassen sich beide Bilder wie Klarsichtfolien übereinander legen so das Unterschiede direkt ersichtlich wären ? Existieren Komponenten/Schnipsel die Bildähnlichkeiten feststellen können, unabhängig vom Dateiformat, Bittiefe,etc. ? Ist es möglich festzustellen ob EXIF Informationen geändert wurden oder original sind? Ich stelle diese Fragen da ich an einem wichtigen Projekt arbeite (Freeware) was in naher Zukunft hoffentlich ne Menge Leute ihr Geld in den Taschen behalten lässt :wink: Fragen hierzu bitte privat,wäre seeehr dankbar für weiterführnede Informationen oder gegebenenfalls einem Schnippsel, der 1 vom user ausgewähltes Bild mit einer Bilddatenbank abgleicht und Ähnlichkeitswahrscheinlichkeiten in % ausgibt (sofern Ähnlichkeiten vorhanden). Hoffe das ersichtlich ist, worum es im Groben geht, sonst wie gesagt ==> PN Danke -Deviloper- |
Re: Bilder schnell miteinander vergleichen
Zitat:
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:
Zitat:
Also praktisch je Pixel und Farbkanal (RGB):
Delphi-Quellcode:
BildDiff.Pixel[x,y].Kanal[z] := Abs(Bild1.Pixel[x,y].Kanal[z] - Bild2.Pixel[x,y].Kanal[z]);
Zitat:
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:
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. |
Re: Bilder schnell miteinander vergleichen
Ich danke Dir für die recht fixe Antwort,
werde dir eine private Nachricht dalassen damit Du etwas mehr über den Hintergrund weißt und hoffe dann kannst Du mein Vorhaben noch besser verstehen.Normaler Datei Vergleich, differenzen erkennen usw ist alles kein Problem für mich, das Problem ist sozusagen der 'optische Vergleich'. Die Routine sollte die Bilddatei (egal welches Format) intern umwandeln/kopieren zum abgleichen. Das Bild abtasten und erkennen können ob Bildausschnitte identisch mit dem Original sind (Welches in der Datenbank gespeichert ist) Ps, gilt vielleicht noch zu wissen, arbeite derzeit mit Delphi 6 Enterprise :zwinker: -Deviloper- |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz