Hallo,
mir ist ein bisschen unbehaglich dabei, hier vom ursprünglichen Thema abzuschweifen. Vielleicht hast du Nerv, das schöne Skript in einem eigenen Thema vorzustellen.
Aber jedenfalls: Der Befehl 'Auto Farbe' im Faststone-Image-Viewer erzeugt aus einem Graustufenbild keine Farben. Es wird nach meinem Eindruck lediglich eine Tonwertspreizung ausgeführt, die dazu führt, dass die (u. U. wenigen) vorhandenen Farben über die gesamte Breite des Histogramms verteilt werden. Bei Farbbildern werden die Farbkanäle einzeln behandelt. Vielleicht werden auch noch weitere clevere Algorithmen bemüht. Unabhängig davon kann auch die Anwendung des Befehls 'Auto-Farbe' auf ein Graustufenbild verblüffen. Ich habe in die hier angehängte Datei 'ImageDiff.zip' vier Bilder gepackt:
- Fahrrad.png (das Original)
- Fahrrad.jpg (eine verlustarme Kompression des Originals)
- ImageDiff.png (vom Skript im Modus '3' erzeugt)
- ImageDiff_AutoFarbe.png
Man sieht also schön, wie der Befehl 'Auto Farbe' die in 'ImageDiff.png' kaum wahrnehmbaren Differenzen sichtbar macht.
Beiträge von Reinhard
-
-
Sorry fürs Hijacken...

Ist jedenfalls interessant: In der Freeware meines Vertrauens einmal Auto-Farbe über 'ImageDiff.png' laufen lassen und schon werden feinste Unterschiede sichtbar. Kommt in die Bastelkiste

-
Wenn ich die Funktion aus Post #12 in die UDF einbaue, erhalte ich korrekte Ergebnisse.
Was ich gerade noch herausgefunden habe: Mit Autoit 3.3.14.5, das ich vermutlich unter Windows 7 genutzt habe, erhalte ich auch auf meinem Rechner korrekte Ergebnisse (mit der ursprünglichen Original-UDF). -
Hallo Velted ,
Die letzten Zeilen in Post #19 (Ach ja, mit den Befehlszeilen...) habe ich nur deshalb hinzugefügt, weil Mars in Post #12 meinte: "Ich vermute, dass du die 64Bit Version verwendest und der ASM Code ist für 32Bit zusammengesetzt worden". Ich möchte nur zeigen, dass ich dann keine falschen, sondern gar keine Werte erhalte.
Unter Autoit 3.3.18.0 habe ich die neue UDF genutzt, also die, wo es in Zeile 47 'int' statt 'none' heißt.
Unter Autoit 3.3.16.1 habe ich die alte UDF genutzt. Jetzt auch noch mal die neue. Ergebnis: Wie in Post #7.
Welche Werte bekommst du denn angezeigt? Mit der modifizierten 'Test.au3' aus Post #19 ist das schnell getestet.Gruß
Reinhard
-
Hallo,
auch ohne die hier erörterten Details der Programmierung, die jenseits meines Horizontes liegen, ist die Sache für mich nur noch rätselhafter geworden:
Ich habe nämlich unter Windows 11 durchaus die 32-Bit-Version von Autoit 3.3.16.1 verwendet. Um meinen Test aus Post #7 problemlos wiederholen zu können, habe ich nun die Datei 'Test.au3' aus dem UDF-Paket etwas modifiziert: Statt der Konsolen-Ausgabe erfolgt die Ausgabe der Ähnlichkeitswerte ($fDif) in Messageboxen und der Test wird dreimal nacheinander mit unterschiedlichen Varianten ausgeführt (Originaldateien, Datei 2 ist eine Kopie von Originaldatei 1, beide Dateien sind Kopien von Black_512.png).
Für den Fall, dass es jemand ausprobieren möchte, habe ich die geänderte 'Test.au3' und die Datei 'Black_512.png' hier als 'ImageDiffMod.zip' hochgeladen. Man muss dann nur die beiden im Zip enthaltenen Dateien in das Verzeichnis kopieren, in dem sich die entpackte '_GDIPlus_ImageCalcDif.au3' befindet und kann den Test aus Post #7 wiederholen. ImageDiffMod.zipUm sicherzugehen, dass die 32-Bit-Version von Autoit verwendet wird, habe ich die modifierte 'Test.au3' aus dem Skriptverzeichnis heraus wie folgt aufgerufen:
"C:\Program Files (x86)\AutoIt3\AutoIt3.exe" Test.au3
Dabei erhalte ich die gleichen Ergebnisse wie in Post #7 und zwar unter Win 11 auf einem AMD Ryzen 5700 G.
Da Mars jedoch (Post #12) unter AutoIt 3.3.16.1, 32Bit und vermutlich ebenfalls auf einem 64-Bit-System mit der alten UDF die von ihm erwarteten Ergebnisse erzielt hat, habe ich den Test noch auf meinem Audio-PC (Win 10-64, Intel Pentium N5000) unter Autoit 3.3.16.1 durchgeführt und wieder die Ergebnisse wie in Post #7 erhalten. Das gilt auch für die Konsolenausgabe mit der Original-'Test.au3'. Ich kann mir kaum vorstellen, dass diese beiden klaglos funktionierenden PCs irgendeine Eigentümlichkeit aufweisen, die zu falschen Ergebnissen führt (und ja, Virenscan ohne Befund, "sfc /scannow" findet keine korrupten Dateien). Auf jeden Fall wäre es schön, wenn noch ein paar Leute mehr den Test durchführen könnten.Zu guter Letzt habe ich noch die portable Version von Autoit 3.3.18.0 heruntergeladen und den Test damit und mit der für Autoit 3.3.18.0 angepassten '_GDIPlus_ImageCalcDif.au3' gemacht:
D:\Temp\Autoit18\AutoIt3.exe Test.au3
Hier gibt es folgende Ergebnisse:
Runde 1: 158.51 , 483.32
Runde 2: 12.9 , 663.52
Runde 3: 17 , 445,65
Auch hier kein Unterschied zum Win 10-Rechner.
Ach ja, mit den Befehlszeilen
"C:\Program Files (x86)\AutoIt3\AutoIt3_x64.exe" Test.au3 (Autoit 3.3.16.1, alte UDF)
D:\Temp\Autoit18\AutoIt3_x64.exe Test.au3 (Autoit 3.3.18.0, neue UDF)
bekomme ich nicht einmal die Message-Boxen angezeigt.
Bin ratlos
.Gruß
Reinhard -
Das beruhigt mich etwas, daher hier nur zur Ergänzung:
die Kopien habe ich auf Systemebene erstellt. D. h., Original und Kopie sind bitgenau gleich, was ich vorsorglich auch überprüft habe. Überdies habe ich bei den komplett mit RGB 0-0-0 gefüllten PNG-Dateien auch noch die Farben zählen lassen, das Ergebnis war '1'.
Für mein drittes Beispiel habe ich beide im UDF-Paket enthaltenen Dateien ('1.png' und '2.png') durch die komplett einfarbig schwarze PNG-Datei mit 512 x 512 Pixeln ersetzt. Die dann bei der Ausführung von 'Test.au3' entstehenden Dateien 'Ausschnitt1.png' und 'Ausschnitt2.png' von jeweils 100 x 100 Pixeln sind im meinem dritten Beispiel daher auch wieder bitgenau gleich. -
Nachdem ich aus diesem Forum schon manche hilfreiche Anregung bezogen habe, bin ich nun mit meinem Latein am Ende und habe mich angemeldet, um eine Frage loszuwerden, auf die ich alleine beim besten Willen keine Antwort finde. Und ich hoffe mal, dass es trotz des Alters der letzten Antwort in diesem Thread sinnvoll ist, kein neues Thema zu erstellen.
Also: Vor ein paar Jahren, noch unter Windows 7, habe ich mal ausgiebig mit der UDF '_GDIPlus_ImageCalcDif.au3' herumgespielt und fand die Funktion famos schnell. Das damals begonnene Projekt, die Ähnlichkeit aneinandergrenzender Bildkacheln zu testen, wollte ich jetzt, unter Windows 11, mal wieder aufgreifen. Leider scheint die Funktion nun aber kein sinnvolles Ergebnis mehr zu liefern - oder ich habe ein mächtiges Brett vor dem Kopf (ist natürlich auch schon vorgekommen).
Wenn ich unter Autoit 3.3.16.1 die mit der UDF mitgelieferte Datei 'Test.au3' unverändert ausführe, bekomme ich folgende Werte für $fDif:
Beispiel 1: 163.63
Beispiel 2: 660.27
Ersetze ich die mit der UDF mitgelieferte Datei '2.png' durch eine Kopie von '1.png', so dass beide Bilder absolut identisch sind, bekomme ich folgende Werte für $fDif:
Beispiel 1: 18.02 (sollte doch '0' sein)
Beispiel 2: 1
Ersetze ich '1.png' und '2.png' durch Kopien eines vollständig mit Schwarz gefüllten png-Bildes von 512 x 512 Pixeln erhalte ich:
Beispiel 1: 23.75
Beispiel 2: 622.6
So wie ich es verstehe, sollte der Abweichungswert im letztgenannten Fall beide Male Null sein, da die Bilder identisch sind und sich auch die verglichenen Bereiche nicht unterscheiden.
Bin etwas ratlos und hoffe inständig, dass ich nicht fürchterlich auf dem Schlauch stehe und etwas übersehe, das ganz offensichtlich ist.