Das Framework G'MIC 3.6 wurde veröffentlicht und bietet eine universelle Skriptsprache für die Bildbearbeitung sowie grafische Schnittstellen für Transformation, Filterung und Visualisierung von grafischen Inhalten. G'MIC stellt über tausend vorgefertigte Algorithmen und Funktionen zur Bildbearbeitung bereit, unterstützt Mehrfachverarbeitung und kann OpenMP nutzen, um Berechnungen durch Parallelisierung auf mehrere CPU-Kerne zu beschleunigen. Die Verarbeitung verschiedener Bildtypen wird unterstützt, einschließlich Bilder mit beliebig vielen Farbkanälen, Volumenbildern und vektoriellen 3D-Objekten. Der Projektcode wird unter der freien Lizenz CeCILL verbreitet, die mit der GPL kompatibel ist.
G'MIC ist in folgender Form verfügbar: als Kommandozeilenwerkzeug gmic (im ImageMagick-Stil); als Multi-Threading C++-Bibliotheken libgmic und CImg; als G'MIC-Qt-Plugins mit mehr als 600 Filtern für GIMP, Paint.NET, Photoshop, Affinity Photo, PaintShop Pro, PhotoLine und XnView; als Webanwendung G'MIC Online zur Bearbeitung von Grafiken im Webbrowser; und als grafische Benutzeroberfläche ZArt zur Bearbeitung von Videodateien oder Video-Streams mit Webcams in Echtzeit. Darüber hinaus wird die G'MIC-Funktionalität in offenen Projekten wie dem Video-Post-Processing-Paket EDK, den Video-Editoren Flowblade und Kdenlive, dem Grafikeditor Krita, dem Fotobearbeitungssystem PhotoFlow und dem Video-Effekt-Overlay-System Veejay verwendet.

Hauptneuheiten:
- Ein erster Port der Klasse CImgDisplay zur Zeichnung von Fenstern mit der SDL3-Bibliothek wurde vorgeschlagen. In Zukunft wird geplant, diese Klasse für die Verwendung von Wayland anstelle von X11 einzusetzen.
- Die Kompatibilität mit Qt6 wurde gewährleistet. Die Unterstützung zum Erstellen des G'MIC-Qt-Plugins mit Qt6 wurde implementiert.
- Der Interpreter der Skriptsprache G'MIC wurde erheblich neu geschrieben und optimiert. Die Analyse des G'MIC-Codes erfolgt jetzt etwa 2,5 % schneller, hauptsächlich durch die Reduzierung von String-Vergleichsoperationen.
- In der Bibliothek nn_lib wurde die gleichzeitige Nutzung mehrerer neuronaler Netze verbessert.
- Die integrierte 3D-Rendering-Engine wurde modernisiert, wobei die Lichtberechnung verbessert und Z-Clipping verwendet wird, um Objekte außerhalb des sichtbaren Bereichs zu verarbeiten.
- Der Filter 'Patterns / Organic Fibers' wurde hinzugefügt, um Muster zu erstellen, die an Fasern erinnern.

- Der Filter 'Rendering / Speech Bubble' wurde hinzugefügt, um verschiedene Formen von Sprechblasen mit Textnachrichten zu erstellen.
- Der Filter 'Rendering / 2.5D Extrusion' wurde hinzugefügt, um 3D-Effekte mit einer Illusion von Tiefe bei flachen Bildern zu erzeugen.

- Der Filter 'Rendering / Fluffy Cloud' wurde hinzugefügt, um Wolken zu rendern.

- Der Filter 'Deformations / Warp [RBF]' wurde hinzugefügt, um Bilder basierend auf Schlüsselpunkten zu verzerren.

- Der Befehl mutlithreaded3d (mt3d) wurde hinzugefügt, um das Aktivieren des mehrkernigen 3D-Renderings mit dem Befehl object3d zu steuern. Das mehrkernige Rendering ist deutlich schneller, kann jedoch manchmal zu Artefakten führen.
- Die Befehle thickcircle, thickellipse und thickpolygon wurden hinzugefügt, um farbige dicke Konturen von Kreisen, Ellipsen und Rechtecken anzuzeigen.

- Das matchpatch_alt-Kommando mit einer alternativen Implementierung des matchpatch-Kommandos wurde hinzugefügt. Es arbeitet langsamer, vereinfacht jedoch die Berechnung von Übereinstimmungskarten zwischen zwei Bildern.
- Das at_curve-Kommando wurde hinzugefügt, um die Pixel zu extrahieren, die zu einer Splines-Kurve gehören, die durch bestimmte Punkte verläuft.
- Das resize_displacement-Kommando wurde hinzugefügt, um die Verschiebungskarten mit einem patch-basierten Bildsynthese-Algorithmus zu skalieren.
- Das normals3d-Kommando wurde hinzugefügt, um Normalenvektoren für die Scheitelpunkte oder Primitiven eines 3D-Meshs zurückzugeben.
- In Schleifen ist die Verwendung der Ersetzung "$%" (die sich je nach aktueller Iteration von 0 bis 1 ändert) und von geschweiften Klammern "{}" wie in C++ erlaubt (z. B. "do { echo $> } while u<0.9").
- Neue Funktionen wurden hinzugefügt: epoch(), swap(), frac(), wave(), isfinite(), isvar(), abscut().

Quelle: opennet.ru






