AfterShot Pro 3 generiert Artefakte mit OpenCL-GPU-Verwendung?

Ich habe bei einer Aufnahme ein Artefakt entdeckt, als ich eine große Vergrößerung eines engen Ausschnitts gedruckt habe. Anfangs dachte ich: "Oh nein, ich habe ein Kameraproblem!" Weitere Experimente zeigten, dass die Artefakte beim Exportieren von Raw in JPG mit aktiviertem OpenCL zur Verwendung meiner Nvidia-GPU generiert werden. Beim Exportieren mit deaktiviertem OpenCl wurde das Artefakt nicht generiert.

Ich verwende Linux und habe dies nicht unter Windows versucht.

Ich habe sowohl "mit" als auch "ohne" OpenCL-JPGs in GIMP-Ebenen eingefügt und einen "Unterschied" der beiden Ebenen vorgenommen. Die Artefakte stellten sich als umfangreicher heraus, als ich ursprünglich gesehen hatte, und manifestierten sich als mehrere rechteckige Blockdiskontinuitäten.

Ich habe dasselbe in Darktable versucht und genau das bekommen, was man sich erhoffen würde, einen schwarzen "Unterschied", da die Bilder identisch waren.

AfterShot hat kleine Helligkeitsunterschiede mit OpenCL-Hardwarebeschleunigung, die klein genug ist, um damit zu leben, aber die Blockartefakte sind inakzeptabel.

Hat noch jemand dieses Problem festgestellt?

Ich verwende die neuesten Nvidia-Treiber auf einer wohl alten GPU, aber das sollte nur ein Geschwindigkeitsproblem sein.

Nur CPU, GPU OpenCL, Unterschiedsbilder sind zu sehen unter:

Von AfterShot Pro 3 GPU generierte Artefakte

Wenn Sie zwischen den beiden Hauptbildern hin und her springen, können Sie die Artefaktverschiebungspunkte sehen. Die offensichtlichste ist eine perfekt horizontale dünne Linie durch die Stirn der Katze.

Meine unmittelbare Frage bezieht sich auf Aftershot Pro 3 unter Linux, aber ich bin jetzt neugierig auf eine umfassendere "Unterschieds"-Prüfung auf vielen Plattformen und RAW-Editoren, die die Verwendung von GPUs unterstützen.

             ---- Edit ----

Ich habe die Besonderheiten des Problems identifiziert!

Es gibt 4 OpenCL-Nutzungseinstellungen: Minimum, Niedrig, Standard, Hoch. Und natürlich NONE, wenn OpenCL deaktiviert ist.

Ein Vergleich der Ausgabe der 4 Einstellungen mit NONE als Referenzstandard zeigt:

Alle 4 OpenCL-Einstellungen verschieben das Ausgabebild um 2 Pixel in X & Y.

Nur die Einstellung „Minimum“ erzeugt Artefakte, die als rechteckige Bereiche erscheinen, die sich „nicht um 2 Pixel verschieben“.

Ich denke, dass dies der Kern des Problems ist. Die OpenCL-Verarbeitung hat einen 2-Pixel-Offset in X und Y. Solange das gesamte Bild von der GPU verarbeitet wird, ist es selbstkonsistent. Wenn ein Teil des Bildes von der CPU verarbeitet wird, gibt es 2 Pixelverschiebungsgrenzen zwischen den von der CPU und der GPU verarbeiteten Teilen des Bildes.

Es ist wahrscheinlich, dass dies je nach CPU- und GPU-Geschwindigkeit bei jeder Einstellung oder überhaupt nicht auftritt.

Es ist möglich, dass die CPU-Berechnung die 2-Pixel-Verschiebung hat, aber der Schlüssel ist, dass sie unterschiedlich sind!

             ---- Edit 2 ----

Ich habe ein unbeschnittenes Bild sowohl auf „Aftershot“ als auch auf „Darktable“ auf Ausrichtung verglichen, um herauszufinden, welche 2-Pixel-Verschiebung fehlerhaft ist.

„Darktable CPU“, „Darktable OpenCL“ und „AfterShot CPU“ stimmen alle überein!

"AfterShot OpenCL" hat eine 2-Pixel-Verschiebung in X & Y.

Welche Maße hat das Originalbild? Teilbar durch 16? Können JPEG-Qualitätseinstellungen für den Export konfiguriert werden?
Wahrscheinlich nicht durch 16 teilbar, und ja, die JPEG-Qualität kann geändert werden. Allerdings wurden für beide Bilder die gleichen Einstellungen verwendet.
Beide Bilder werden von AfterShot erzeugt, mit dem einzigen Unterschied, dass OpenCL ein-/ausgeschaltet ist? Dann haben Sie mit Darktable und OpenCL ein/aus wiederholt?
Versuchen Sie, in TIF zu exportieren, um zu sehen, ob Sie die gleichen Unterschiede erhalten. Wahrscheinlich unterscheiden sich AfterShot-Algorithmen für die Verarbeitung mit OpenCL ein/aus ... Unterschiede zwischen den Ergebnissen beziehen sich nicht auf JPEG.
Ja, ich bin mir ziemlich sicher, dass es sich um einen Fehler im OpenCL-Code von Corel handelt. Ich schaue nur, um zu sehen, ob andere darauf stoßen.
Ich habe es nochmal mit TIF getestet und unbeschnitten. Die Ergebnisse sind die gleichen, eine 2-Pixel-Verschiebung sowohl in X als auch in Y zwischen dem CPU-Export und dem GPU-Export. Nur die Einstellung "Minimum" integriert beide in dasselbe Bild, was zu Artefakten führt.
Das klingt nach etwas, das besser als Fehler bei Corel gemeldet wird, als uns davon zu erzählen.
Ja, ich habe Corel Bescheid gegeben.
Dies ist eine Frage zu einem Softwarefehler, der vom Entwickler behoben werden muss.

Antworten (1)

Dies ist ein Fehler in Corels Implementierung der OpenCL-Hardware-GPU-Nutzung.

Das zugrunde liegende Problem besteht darin, dass die OpenCL-Implementierung von Corel das exportierte Layout im Vergleich zu anderen Konvertierungen von RAW in JPG (auch TIF ) in X & Y um (ungefähr) 2 Pixel verschiebt . Das Aufnehmen von RAW + JPG in der Kamera und der Vergleich mit Corels Export des RAW in das Kamera-JPG bestätigt, dass es nur Corel Aftershot OpenCL ist, das diese Verschiebung erzeugt. Aftershot, der nur den CPU-Export verwendet, stimmt mit dem Kamera-JPG überein, ebenso wie alle Darktable-Exporte.

Warum ist also eine bloße 2-Pixel-Verschiebung wichtig?

In erster Linie erzeugt es Artefakte in jedem Bild, das Teile enthält, die mit und ohne OpenCL erstellt wurden , das hat meine Aufmerksamkeit überhaupt erregt. In meinen Tests trat dies nur bei der „ minimalen “ OpenCL-Einstellung auf . Dies gilt jedoch möglicherweise nicht mit einem anderen GPU/CPU-Mix.

Theoretisch würde eine Fehlausrichtung von Corel OpenCL Probleme verursachen, wenn versucht wird, Bilder zu verwenden, die von mehreren RAW-Konvertern verarbeitet wurden. Obwohl dies in den meisten Fällen eine unwahrscheinliche Verwendung ist, wirkt es sich auf Versuche aus, sowohl RAW- als auch JPG-Bilder zu verwenden, wenn Sie versuchen, sie zu überlagern.

Ich habe Corel bezüglich dieses Problems kontaktiert.