Moiré-Effekt bei Derivaten

Beschreibung

Gewisse Bilder, vorrangig wenn hochauflösende Masterfiles vorliegen, lassen Derivate resultieren, die unangenehme, störende Effekte (zB Moiré-Effekt) zeigen.

Beispiele

ZentralGut

MAK

Kennt jemand von euch ähnliche Problemfälle? Gibt es dazu bereits Lösungsansätze?

LG
Christian

1 Like

Ahoi,
wenn der Effekt im Master vorliegt, ist das ja oft dem Druckraster der Vorlage geschuldet. Wir versuchen, durch ein leichtes Verschieben/ anwinkeln des Objektes den Effekt zu verhindern. Eine Korrektur wäre auch über die Software des Scanners bzw. der Kamera möglich.

Bei Luzern gegen den Pilatus - ZentralGut liegen aber aus meiner Sicht zwei verschiedene Effekte vor. Das eine ist ein echtes Moiré im Image, der andere Effekt hängt mit dem Zoomfaktor zusammen.

2 Likes

Hallo zusammen,

ein Moiré Effekt kommt in der Regel durch Geschwindigkeits-Optimierungen des Skalierungs-Alogrithmus im ContentServer. Dafür gibt es in der Konfigurationsdatei des ContentServers mehrere Stellschrauben.
Die Konfigurationsdatei liegt in der Regel im “webapps” Ordner des Tomcat-Servers unter viewer/WEB-INF/classes/contentServerConfig.xml, typischerweise also in /var/lib/tomcat9/webapps/viewer/WEB-INF/classes/contentServerConfig.xml. Diese Datei ist Teil der Viewer-Installation. Bei Änderungen sollte man daher eine lokale persistente Version der Datei anlegen. Dazu einfach die contentServerConfig.xml kopieren nach /opt/digiverso/viewer/config/config_contentServer.xml. Bitte den anderen Dateinamen beachten. In Zukunft wird auch die Datei im Installationsverzeichnis config_contentServer.xml heißen. Damit die neue Datei erkannt wird, muss allerdings der tomcat-Server einmal neu gestartet werden. Es kann auch sein, dass die lokale Datei bereits existiert, dann kann man sie direkt verwenden.

Konfiguration

In der Konfigurationsdatei gibt es zwei Stellen, an denen man drehen kann, um Moirè-Effekte zu vermeiden. Das ist zum einen

<scaling quality="SPEED" maxStepSize="50" thumbnailQuality="QUALITY"></scaling>

Hier kann man das Attribut quality ändern auf QUALITY oder ULTRAQUALITY. Das hat meiner Erfahrung nach den größten Einfluss auf Moirè-Effekte. thumbnailQualitykann man ignorieren, das wird nicht mehr verwendet; undmaxStepSize` ist mit 50 schon ganz gut. Da macht eine weitere Verbesserung hin zu höheren Werten erfahrungsgemäß wenig Sinn.

Die andere Stelle ist etwas darunter:

<imageTypeSettings> 
[...]
    <type format="default" colorType="default" compression="default" embeddedColorProfile="both" minSize="0" maxSize="0"> 		
        <settings allowRenderWithJAI="false" allowSubSampling="true" scaleWithScalr="false" mergeWithJAI="false" forceConvertToBuffered="false" forceConvertToRGB="false" forwardDirectlyIfPossible="false" preferredImageReader="com.github.jaiimageio"></settings>     
    </type>    
</imageTypeSettings>

Hier kann man probieren allowSubsampling auf false zu setzen. Das kann allerdings bei größeren Bilder zu erheblich längeren Ladezeiten führen (wenn sie noch nicht im Cache des Viewers sind).
scaleWithScalr="true" kann man auch helfen, da es auf einen anderen Skalierungs-Algorithmus umschaltet; dieser braucht für einige Bilder allerdings außerordentlich lange, weshalb er eigenltich überall ausgeschaltet ist.
Ab dem nächten Viewer-Release (23.12? 24.01?) lohnt es sich auch preferredImageReader="com.twelvemonkeys" zu testen. Da muss ich allerdings noch selber Testdaten sammeln.

Testen
Zum Testen kann man die IIIF image urls direkt laden, die auch der Viewer zur Bildanzeige abruft, z.B.

https://zentralgut.ch/api/v1/records/ZHB_Fotografie_Neeser_0034/files/images/Neeser_Silvia_und_Walter_Frei_0034.jpg/0,0,4096,4000/1024,/0/default.jpg

Diese url kann mit mit dem Parameter ?ignoreCache aufrufen, um den serverseitigen Cache für die Anfrage zu ignorieren, also z.B.:

https://zentralgut.ch/api/v1/records/ZHB_Fotografie_Neeser_0034/files/images/Neeser_Silvia_und_Walter_Frei_0034.jpg/0,0,4096,4000/1024,/0/default.jpg?ignoreCache
Wenn man nun die obigen Einstellungen in einer der config-Dateien anpasst (die lokale überstimmt jeweils die globale Datei im Installationsverzeichnis), wird der Effekt direkt beim nächsten Bildaufruf sichtbar. Manchmal dauert es ein paar Sekunden, bis die Änderungen geladen sind.

Cache zurücksetzen
Wenn man eine Einstellung gefunden hat, die die Bildauslieferung verbessert, sollte man die alten skalierten Bilder aus dem serverseitigen Cache entfernen. Das geht mit folgendem http-Aufruf (hier mit curl)

curl -X ‘DELETE’ ‘/api/v1/cache/?pdf=false’ -H ‘token:’

Für das Beispielwerk oben wäre das

curl -X ‘DELETE’ ‘https://zentralgut.ch/api/v1/cache/ZHB_Fotografie_Neeser_0034?pdf=false’ -H ‘token:’

Alternativ kann man auch den kompletten Bild-Cache des Viewers löschen, indem man die URL ohne den record-identifier aufruft:

curl -X ‘DELETE’ ‘/api/v1/cache?pdf=false’ -H ‘token:’

Der richtige Wert für myToken findet sich in der config_viewer.xml unter

<webapi>        
    <authorization>
        <token>myToken</token>
    </authorization>
</webapi>

Ich hoffe, das hilft, mit den Moirè Effekten fertig zu werden.

Schöne Grüße,
Florian

2 Likes