Bilder Vergleich möglich?
Übersicht

![]() |
Mathias-KwiatkowskiBetreff: Bilder Vergleich möglich? |
![]() Antworten mit Zitat ![]() |
---|---|---|
hallo leute und ein frohes neues wenn auch späd ![]() ich habe da ein anliegen, ich möchte 2 bilder auf die gleichheit prüfen heißt nicht vom namen oder grösse ect. sondern ob das bild vom aussehen her identisch ist mit dem anderen. ist dies mit blitz max oder zusatz mods möglich? ich stell es mir so vor Local Image0:TImage=loadimage("abc.png") Local Image1:Timage=Loadimage("Test.png) und nun ist image0 identisch mit image1 dann print "1" oder so ^^ wäre super wenn das ginge. |
||
Skype: Anarchie1984
http://projektworks.de/maxbase/ Icq - Erneuert am 21.08.2017 Yahoo - Erneuert am 21.08.2017 |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
"vom aussehen her" - ist ein bisschen zu ungenau. "Gleiche" und "Ähnliche" Farben machen hier den unterschied von einer fertigen md5/sha Hashfunktionen und einer eigenen Implementation aus. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
naja vom aussehen her also nicht vom datei inhalt bildervergleich also.
ich wüsste nicht wie genau ich das prüf, eins weiß ich das 1. bild ist ja bekannt, das 2. bild soll der nutzer sich aussuchen können und dann soll ein vergleich stattfinden ob es das gleiche bild ist oder nicht. von md5/sha Hashfunktionen habe ich = null ahnung. das vom aussehen her mein ich halt wirklich das was man sieht. (optisch) Edit: so wie ich es machen würd dauerts sehr lang, pixel für pixel durchgehen und nach rgb werte prüfen... wenn jeman also eine einfacherer möglichkeit hat bitte her damit |
||
Skype: Anarchie1984
http://projektworks.de/maxbase/ Icq - Erneuert am 21.08.2017 Yahoo - Erneuert am 21.08.2017 |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bevor du so eine Funktion schreiben kannst, musst Du genau festlegen, WAS gleich sein soll. Soll z.b. jedes Pixel des eines Bildes mit dem entsprechenden Pixel des anderen Bildes verglichen werden ist das ziemlich einfach.
Ich befürchte aber, Du suchst eher nach einer Funktion, die auf verschiedenen Fotos das gleiche Motiv erkennen soll? Das ist sehr schwierig. Bitte beschreib doch mal genauer, wie Du das "GLEICH" in deinem Fall definieren würdest. Beispiele? Was wäre wichtig: Gleiche Größe des Bildes? Gleiche Größe der Objekte im Bild? Gleiche Farben? Gleiche Motive? Gleiche Helligkeit? Welche Abweichungen wären akzeptabel? Handelt es sich um Grafiken oder Fotos? Treffer nur wenn es das gleiche Foto ist? etc... |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
nein möchte keine ähnlichkeitsbestimmung, sondern wissen ob bild A= Bild B ist also exakt identisch. nach rgb werten zu schauen, dauert recht lang (leider) gibt es da eine andere möglichkeit...
ich weiß nicht wie ich es noch anders erklärren soll ausser identisch bzw gleich. wenn ich ein bsp code hätte wüsste ich wenigstens ansatzweise wie ich es prüfen kann... bislang habe ich echt nur pixel für bixel aus beiden bildern durchgehen und nach rgb prüfen und wenn das dann identisch ist, dann ist ok, andernfalls nicht ok. diese methode steht aber leider ausser frage da es viel zu lange dauert :/ Was wäre wichtig: Gleiche Größe des Bildes? = kann unterschiedlich sein Gleiche Größe der Objekte im Bild? = kann unterschiedlich sein Gleiche Farben? = ja sollen gleich sein Gleiche Motive? = wenn farben gleich eben auch das motiv bzw es ist identisch Gleiche Helligkeit? = ja wegen gleichheit Welche Abweichungen wären akzeptabel? = keine ahnung Handelt es sich um Grafiken oder Fotos? = grafiken Treffer nur wenn es das gleiche Foto ist? = ja |
||
Skype: Anarchie1984
http://projektworks.de/maxbase/ Icq - Erneuert am 21.08.2017 Yahoo - Erneuert am 21.08.2017 |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Exakt identische Bilder aber die Objekte im Bild können unterschiedlich sein?
Du weißt gar nicht, was du eigentlich willst. In dem Fall mach mal eine Tabelle mit 3 Spalten: Bild 1, Bild 2 und erwarteter Wahrheitswert. Dann wird dir vielleicht klar, was du eigentlich willst. Im übrigen: Wozu brauchst du das eigentlich? Könnte sich auch um ein XY Problem handeln... |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie soll ichs weiter beschreiben, ich weiß schon was ich will. ich möchte prüfen ob es sich definitief um das gleiche bild handelt!.
ich will nich wissen obs gleiche mb hat oder obs im gleichen ordner liegt oder sonst was ich will nur wissen ist bild a= bild b. die methode die ich beschrieb die rgb auszulesen war schon erfolgreich, und das passt mir auch sehr gut, leider aber dauert diese zu lang... ( was habe ich gemacht? in einer schleife bin ich x,y werte durchgegangen und habe geschaut obs die gleichen rgb werte bei dem 2. bild hat wenn ja = identisch wenn nein dann eben nicht. ) aber genau diese methode dauert extrem lang leider.... |
||
Skype: Anarchie1984
http://projektworks.de/maxbase/ Icq - Erneuert am 21.08.2017 Yahoo - Erneuert am 21.08.2017 |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann beantwortest du die Fragen hier sehr falsch.
Aber gut: Was du willst, ist eine Hashfunktion. Der Hash ist gleich, wenn der Inhalt der Dateien exakt gleich ist. Wenn du den Hash nicht wiederverwenden willst, kannst du auch den Vergleich direkt stoppen, wenn sich bytes zwischen den Dateien unterscheiden. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
also bytes auslesen? wenn ein byte ungleich dann ist es nicht das gleiche bild? | ||
Skype: Anarchie1984
http://projektworks.de/maxbase/ Icq - Erneuert am 21.08.2017 Yahoo - Erneuert am 21.08.2017 |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
naja,
wenn die Bilder auch die gleiche Größe haben müßten, dann wäre ein Byte-weiser Vergleich das richtige. Mit dem gleichen Motiv in unterschiedlich großen Formaten wir es schwieriger. Brauchst Du das ganze für ein Spiel? Oder geht es eher um die rechtliche Frage, ob jemand das Bild kopiert hat und es nun illegalerweise verwendet? Bei unterschiedlichen Größen des gleichen Motivs wirst Du eine gewisse Abweichung akzeptieren müssen, bei der dann das Bild immer noch als "gleich gilt". folgender Vorschlag: 1. Verkleinere beide Bilder auf ein wesentlich kleineres Format. z.b. ein hundertstel des kleineren Bildes: Bild A 3000x2000Px Bild B 900x600px gemeinsames Format 90x60pix 2. Mach aus beiden 90x60px Bildern ein Schwarzweiß-Bild. Vergleiche nun alle 540 Pixel und entscheide dann, ob es sehr viele unterschiedliche Pixel sind, oder ob sich eine genauere 2. Runde lohnt. Oder so: Man könnte auch beide Bilder auf das gleiche Format (des kleineren Bildes) bringen und dann mittels Delta-Komprimierung ein "Differenzbild" erzeugen. Ist die Dateigröße dieses Differenzbildes (abgespeichert) sehr klein, waren die beiden Bilder sehr ähnllich. |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
- Zuletzt bearbeitet von Midimaster am Mo, Jan 21, 2019 9:41, insgesamt einmal bearbeitet
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mathias-Kwiatkowski hat Folgendes geschrieben: bislang habe ich echt nur pixel für bixel aus beiden bildern durchgehen und nach rgb prüfen und wenn das dann identisch ist, dann ist ok, andernfalls nicht ok.
diese methode steht aber leider ausser frage da es viel zu lange dauert :/ Wenn diese Methode grundsätzlich tut, was du willst, aber einfach zu langsam läuft, ist die Sache einfach: Zeig' den Code her und wir sagen dir, wieso er so lange braucht ![]() |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok, es wurde bereits geklärt, dass du zwei Bilder auf Identität prüfen willst, aber du musst folgendes bedenken: Stell dir vor du hast ein Bild test.bmp. Im Bitmap format stehen einfach die RGB-Werte unkomprimiert. Jetzt speicherst du es als PNG test.png. Jetzt sind die Dateiinhalte natürlich nicht mehr gleich, aber die RGB-Werte des Bildes sind komplett gleich, weil PNG verlustlos komprimiert. Speicherst du das Bild als test.jpeg wird es immer noch gleich aussehen, aber ziemlich sicher Kompressionsartefakte haben - d.h. nicht nur der Dateiinhalt ist anders, sondern auch einzelne RGB-Werte!
Deswegen fragen alle so genau nach. @Holzchopf: Banks sind ziemlich old skool ![]() |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
was heißt mit pointer durchgehen? | ||
Skype: Anarchie1984
http://projektworks.de/maxbase/ Icq - Erneuert am 21.08.2017 Yahoo - Erneuert am 21.08.2017 |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es gibt eine Methode, die dir den Pointer zum Speicherbereich einer Pixmap gibt. Ich glaube sie heißt PixelPtr (es gibt auch eine äquivalente Funktion PixmapPixelPtr). Wenn du von zwei Pixmaps den Pointer holst, kannst du mit der Funktion memcmp_() (aus pub.stdc) die Speicherbereiche der Pixmaps vergleichen. Wenn die Bilder gleich groß sind und gleiche RGB-Daten enthalten, müssen diese Speicherbereiche gleich sein. Du musst nur die Größe des Speicherbereichs herausfinden. Das müsste über Height, Width + Pixmap Format gehen. Also Breite * Höhe * Anzahl an Byte pro Pixel. | ||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group