• Neuer Gutscheincode unseres Partners Schutzfolien24:
    DSLR-Forum2025
    Dauerhaft 10% Rabatt auf alle Displayschutzfolien und Schutzgläser der Eigenmarken
    "Upscreen", "Screenleaf", BROTECT" und "Savvies".
    Der Code ist für alle Geräteklassen gültig.
  • Mitmachen beim DSLR-Forum Fotowettbewerb Juli 2025.
    Thema: "Unscharf"

    Jeden Monat attraktive Gewinnprämien, gesponsert von unserem Partner PixelfotoExpress.
    Alle Infos zum Juli-Wettbewerb hier!
  • In eigener Sache!

    Liebe Mitglieder, liebe Besucher und Gäste
    ich weiß, es ist ein leidiges Thema, aber ich muss es ansprechen: Werbung, Werbeblocker und Finanzierung des Forums.
    Bitte hier weiterlesen ...

  • Nicht erreichbare Adressen im Benutzerkonto
    Wir bekommen zurzeit eine große Anzahl an E-Mails, die das System zum Beispiel als Benachrichtigungen an Nutzer verschickt,
    als unzustellbar zurück, weil z.B. die Adressen nicht erreichbar sind oder das Postfach gar nicht existiert.
    Stellt doch bitte sicher, dass die Benachrichtigungen, die ihr vom System erwartet, auch zugestellt werden können.
    Nicht erreichbare E-Mail-Adressen sind dazu wenig hilfreich.
    Danke!
WERBUNG

LAB Sharpen für GIMP

schnebeck

Themenersteller
Moin Gimper,

hier mein zweites Gimp-Skript. Es ist ein Unscharfmaskieren (USM) auf dem Luminanz-Signal des Bildes unter Zuhilfenahme einer Kantenmaske mit optionalen Dämpfen von Pixelrauschen auf Flächen - easy oder? :-)

Also, im Einzelnen:
USM im LAB-Farbraum gilt als fortgeschrittenens Schärfen von Bildern. Zusätzlich wird noch eine Selektionsmaske der harten Kanten des Bildes erzeugt. Somit findet das Schärfen nur an Kanten statt, ein z.B. unscharfer Hintergrund wird nicht verändert. Wird nun diese Maske invertiert, kann man Flächen weichzeichnen (Gaußfilter), um z.B. ISO-Rauschen zu minimieren.

Das Skript erzeugt momentan ein zweites Bild, so dass man Original und geschärftes Bild besser vergleichen kann.
Um es in Gimp einzubinden, kopiert man das Skript nach ~/.gimp/scripts/lab-sharpen.scm und bindet es in Gimp2 per Xtns->Script-Fu->Refresh Scripts ein. Man findet das Skript schließlich im Bildmenü unter Script-Fu/Alchemy/LAB-Sharpen...

Version 0.1 enthält noch ein paar Codevarianten, die im Skript auskommentiert sind.

Idee stammt von
http://www.gimpguru.org/Tutorials/ReducingCCDNoise/index.shtml
und
http://www.gimpguru.org/Tutorials/SmartSharpening/index.shtml

Ich erlaube mir von der Seite ein Originalbild und das Ergebnis mit dem Plugin zu zeigen. Die Bilder der Seite dürfen dankenswerterweise für den nicht kommerziellen Gebrauch verwendet werden.

Bild 1 Original
Bild 2 R=1.5, A=0.6, T=2, D=2

Das zweite Beispiel zeigt mehr die Standardanwendung aus meinem Bilderpool

Bild 3 Original
Bild 4 R=1, A=0.5, T=1.5, D=0

Ich wäre sehr an Feedback von Testern interessiert. Das Skript sollte mit jedem Gimp funktionieren.

EDIT V0.2 korrigiert die veraltete Undo-Funktion

Bye

Thorsten

Code:
; LAB-sharpen.scm
; 0.2 (2004-08-17)
; 0.1 (2004-08-11)
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
;
; LAB sharpen 
; based on the tutorials 
; http://www.gimpguru.org/Tutorials/ReducingCCDNoise/index.shtml
; http://www.gimpguru.org/Tutorials/SmartSharpening/index.shtml
;
; (C) 2004 by Thorsten Schnebeck (thorsten.schnebeck@gmx.net)
;
; copy this script to ~/.gimp/scripts/lab-sharpen.scm
; and in Gimp2: Xtns->Script-Fu->Refresh Scripts
; you find this script in Script-Fu/Alchemy/LAB-Sharpen...

(define (spline) 
	(let* ((a (cons-array 6 'byte))) 
	(set-pt a 0 0 0) 
	(set-pt a 1 143 106)
	(set-pt a 2 255 255) 
a)) 
 

(define (script-fu-lab-sharpen image drawable radius amount threshold denoise)
	(gimp-image-undo-group-start image)
	
	; Build edge-mask
	(set! mask (car (gimp-image-duplicate image)))
	(set! drawable (car (gimp-image-get-active-drawable mask)))
	(plug-in-edge 1 mask drawable 1.7 1 0)
	(gimp-image-convert-grayscale mask)
	(plug-in-gauss-iir2 1 mask drawable 2 2)
;	(gimp-curves-spline drawable 0 6 (spline))
	(gimp-edit-copy drawable)
	(gimp-image-delete mask)
	
	; Call a plugin to separate LAB-layers into a new image
	(set! drawable (car (gimp-image-get-active-drawable image)))
	(set! lab_image (car (plug-in-decompose 1 image drawable "LAB" 1)))
	(set! layers (gimp-image-get-layers lab_image)) 
	(set! b_layer (aref (cadr layers) 0))
	(set! a_layer (aref (cadr layers) 1))
	(set! l_layer (aref (cadr layers) 2))
	(gimp-drawable-set-visible a_layer 0)
	(gimp-drawable-set-visible b_layer 0)
	(gimp-image-set-active-layer lab_image l_layer)
	
	; Selection channel
	(set! selection (car (gimp-channel-new lab_image (car (gimp-image-width image)) (car (gimp-image-height lab_image)) "Selection" 50 '(128 128 128))))
	(gimp-image-add-channel lab_image selection 0)
	(gimp-floating-sel-anchor (car (gimp-edit-paste selection 0)))
	(gimp-selection-load selection)
	(gimp-image-remove-channel lab_image selection)
	(plug-in-unsharp-mask 1 lab_image l_layer radius amount threshold)
	(if (> denoise 0)
		(begin
			(gimp-selection-invert lab_image)
			(plug-in-gauss-iir2 1 lab_image l_layer denoise denoise)
		)
	) 
	(set! compose (car (plug-in-drawable-compose 1 lab_image l_layer a_layer b_layer drawable "LAB")))
	
	(gimp-edit-copy (car (gimp-image-get-active-drawable compose)))
	(gimp-image-delete lab_image)	
	
	; Flush the display
	(gimp-image-undo-group-end image)
	(gimp-displays-flush)
	(gimp-display-new compose)
;	(gimp-display-new lab_image)
)

(script-fu-register "script-fu-lab-sharpen" 
"<Image>/Script-Fu/Alchemy/LAB-Sharpen..."

"LAB sharpen
The better way to sharpen/denoise your digital images.
http://www.gimpguru.org/Tutorials/SmartSharpening/index.shtml"

"Thorsten Schnebeck"
"Thorsten Schnebeck (thorsten.schnebeck@gmx.net)"
"2004"
"RGB*"
	SF-IMAGE		"Image"			0
	SF-DRAWABLE		"Drawable"		0
	SF-ADJUSTMENT	_"Radius"		'(1.5 1 50 0.5 1 1 1)
	SF-ADJUSTMENT	_"Amount"		'(0.6 0 5 0.1 0.5 1 1)
	SF-ADJUSTMENT	_"Threshold"	'(2 0 5 0.5 1 1 1)
	SF-ADJUSTMENT	_"Denoise"		'(0 0 100 1 10 0 1)
)
;Tab=4
 
Zuletzt bearbeitet:
Servus Thorsten,

habs mir gerade angeschaut und hab ein Gesichtsfoto verwendet.
Mein Eindruck: um einiges knackiger (schärfer)
Eindruck meiner Frau: Sehr scharf !!!

Klasse Job :)

Jetzt fehlt mir nur noch ein Script was einen durchsichtigen Rahmen (sollte von 0 - 100 eingestellt werden können) das ganze noch unten größer wie oben und mit Textmöglichkeit :)
Könntest Du sowas nicht auch noch zaubern ?
Dann kann ich endlich den Winrechner komplett auslassen.
 
@fraenky

Hey, danke fürs schnelle Testen. Hast du denn auch mal den Test im Vergleich zum normalen USM gemacht? Ich experimentiere noch, wie man die Maske so genau hinbekommt, dass Halos nicht so stark in Erscheinung treten.

Was willst du denn für einen durchsichtigen Rahmen haben? Mal mal einen. Wenn der mir gefällt, könnte ich mich evtl. hinreißen lassen. Aber bitte Nachricht in einem neuen Thread oder per PN, damit es hier nicht OT wird.

Bye

Thorsten
 
Thorsten:

wie willst Du den normalen Test haben ?

Schreibs mir bitte in Deutsch da ich Gimp Deutsch habe inkl aller Werte die ich einstellen soll. Ein normales nachschärfen bringt nicht soviel Verbesserung wie Dein Script.
Scharf wirds zwar aber irgendwie zeichnet Dein Script die Farben besser, keine Ahnung warum....sie wirken wärmer.
Werde mal ein paar mehr Bilder testen.

Bezl. Rahmen mach ich nen neuen Thread damits hier nicht unübersichtlich wird. Muss ich aber erstmal so zusammenfummeln in Gimp damit ichs Dir verdeutlichen kann.....
 
Meines Wissens gibt es für Skripte keine Möglichkeit der Lokalisierung. Auch das Gimp2-Handbuch gibts noch nicht vollständig in Deutsch.
Ein weiser Mensch hat mir mal erklärt, dass man EBV besser in Englisch betreibt, weil viele Begriffe da eindeutig verwendet werden. Mit einem 'LANG="C" gimp' sollte dein Gimp auch Englisch sprechen können. Ok, mit 'LANG="de_DE" gimp' kann meines auch Deutsch ;-) Aber wie gesagt, bei mir bleiben die Skripte englischsprachig. Die Parameterbezeichnung ist identisch mit dem normalen USM-Befehl (Filtern->Verbessern->Unscharf maskieren: Radius, Menge Schwellwert). Zusätzlich gibt es noch einen Denoise-Weichzeichner, der bei üblichen Bildern aber immer 0 (Voreinstellung) sein sollte.

Dass mein Filter farbtreu ist, freut mich und soll auch so sein. Übrigens, kann man auch relativ hohe Amount-Werte von 150% (=1.5) verwenden, ohne, dass Flächen überschärfen. Zwei kleine Fehler hab ich auch schon gefunden ;-)

HTH

Thorsten
 
Zuletzt bearbeitet:
Ist kein Vorwurf Thorsten sondern nur ein Wunsch.
Das ist auch oft der Grund warum viele nicht umsteigen wollen weil sich die Linuxgemeinde auf die Sprache English verständigt hat und die jeweiligen Muttersprachen aussen vor bleiben. Ist auch für Programmierer voll in Ordnung nur so gewinnt man kaum die Massen.
Im übrigen sind fast alle FU Scripte in deutscher Sprache verfasst und ich kann damit auch was anfangen. Wäre aber für mich kein Problem das zu übersetzen und neu zu speichern somit ist es auch wieder in Deutsch :)
Ich arbeite nicht mit englischen Programmen da mir das zu doof ist jedes mal das Wörterbuch in die Hand zu nehmen.

Hab das Foto ausgedruckt und muss sagen das es wirklich mega gut ist.
Hab aber alles auf default gelassen und nichts verstellt. Das muss ich mal in Ruhe machen. Ein einfaches Nachschärfen bringts nicht, Dein Script nimmt mit einem Klick die komplette Arbeit ab und da es sich ja in nem neuen Fenster öffnet hat man auch einen guten vorher - nachher Vergleich.

Welche Fehler ??

LG

Frank
 
Der Radius darf auch kleiner 1 sein, die Eingabe lässt aber nur einen Wert größer gleich 1 zu, somit ist richtig:

SF-ADJUSTMENT _"Radius" '(1.5 0.1 50 0.5 1 1 1)

Zweiter Fehler ist der Schwellwert, der wird als Integer verarbeitet, ich übergebe aber Floats. Hier die Korrektur:

SF-ADJUSTMENT _"Threshold" '(2 0 50 1 1 0 1)

Mit den eingedeutschen Script-FUs wundert mich, da in der offizellen Gimp-Plugindatenbank (http://registry.gimp.org/index.jsp) keine lokalisierten Skripte enthalten sind. Nur die Plugin, die GIMP direkt ansprechen (C bzw Python) gibt es lokalisiert. Interessant ist z.B.
http://refocus-it.sourceforge.net
und
http://refocus.sourceforge.net

Die Datenbank kennt auch ein paar Bildrahmen *hint*. Tja, das mit den Wechselwilligen und der Sprachbarriere ist zweischneidig. OpenSource funktioniert nur duch die Reduzierung auf eine gemeinsame Sprache und Lokalisierung können nur die großen Projekte leisten. GIMP würde ich eherals mittelgroß bezeichnen. Normalerweise verwende ich auch deutsche Programme - aber Bildverarbeitung nach Möglichkeit in Englisch. Wissenschaftliche Programme wie Matlab oder Octave verwenden oftmals identische Befehle - da spart man sich das Umdenken.

Ach ja, LAB-sharpen steht ja unter GPL, kannst ja einen deutschen Fork machen ;-)

Bye

Thorsten
 
schnebeck schrieb:
Es ist ein Unscharfmaskieren (USM) auf dem Luminanz-Signal des Bildes unter Zuhilfenahme einer Kantenmaske mit optionalen Dämpfen von Pixelrauschen auf Flächen - easy oder? :-)

Hallo Thorsten,

ist Dir die Hitze aufs Gemüt geschlagen? :-))
Ergebnis sieht ganz gut aus, gefällt mir.

Helge
 
War gerad so schön in Fahrt :o) Hast du es auch mal verglichen mit dem normalen USM aus dem Filter-Menü?

Gruß

Thorsten
 
schnebeck schrieb:
War gerad so schön in Fahrt :o) Hast du es auch mal verglichen mit dem normalen USM aus dem Filter-Menü?

Jupp, habe ich gemacht. Bei Bildern, die ein wenig "Noise" haben ist es sehr schön einzusetzen. Das Ergebnis sieht wirklich gut aus. Bei einem Bild ohne Rauschen geht es mit dem USM etwas schneller, wobei ich mir nicht sicher bin, ob dabei der Unterschied zwischen dem LAB-USM und dem STD-USM signifikant ist (habe auch nur ein Bild ausprobiert;-)).

Was auf jeden Fall auffällt, ist, daß das Rauschen bei dem STD-USM stärker verstärkt wird (na ja, Dein Ansatz macht das dann ja auch wieder weg, wobei beim LAB Ansatz ja auch nicht so viel Rauschen ensthet durchs Schärfen, oder?)

Fazit: schöne Implementierung mit echtem Nutzen. Danke,

Helge
 
Cool! Ist immer schwierig abzuschätzen, ob ein Skript quasi nur für die eigenen Motive passt oder ob die Einstellungen allgemein gut funktionieren. Ich habe natürlich auch viel getestet und verglichen. Die Unterschiede zum Std-USM sind bei guten Bildmaterial gering. Schön zu sehen ist aber, dass Flächen keine Kontrastanhebung erfahren, was fast immer besser aussieht. Sonst wirkt ein Bild nach dem Schärfen "bunter".
In der PlugIn-Registry gibt es übigens ein Skript, das sich auf das gleiche Tutorial beruft. Allerdings schärft das nur und kann nicht optional Entrauschen.

Schneller ist übrigens kein Wunder: Std-USM ist ein Befehl - ich brauch dafür ca. 20 Befehle.

Danke fürs Testen!

Thorsten
 
Zuletzt bearbeitet:
Hi,

ich habe es gerade mal versucht einzubinden in Gimp 2.1 (beta vom Server), und da läuft es jedenfalls leider (noch?) nicht, sondern es kommt nur diese Meldung:

Skript-Fu Fehler beim Ausführen von
(load "/home/christoph/.gimp-2.1/scripts/lab-sharpen.scm")
ERROR: unbound variable (errobj SF-ADJUSTMENT_)

Gruß,

Christoph
 
Versuch doch mal ohne die Unterstriche

in

SF-ADJUSTMENT _"Radius" '(1.5 1 50 0.5 1 1 1)
SF-ADJUSTMENT _"Amount" '(0.6 0 5 0.1 0.5 1 1)
SF-ADJUSTMENT _"Threshold" '(2 0 5 0.5 1 1 1)
SF-ADJUSTMENT _"Denoise" '(0 0 100 1 10 0 1)

Bist du sicher, dass du die Leerzeichen nicht vergessen hast?

Bye

Thorsten
 
Hi Thorsten,

ich habe das Script per p+c so übernommen, wie hier gepostet. Nach Einfügen der Blanks nimmt Gimp es an, und es scheint auch zu funzen, es kommt nur noch eine Warnung:

"WARNING: Plug-In "script-fu"
(/usr/local/lib/gimp/2.1/plug-ins/script-fu)

called deprecated procedure 'gimp_undo_push_group_end'.
It should call 'gimp_image_undo_group_end' instead!"

Gruß, Christoph
 
Achja, umd beim Starten der Umrechnung kommt auch der Hinweis

"WARNING: Plug-In "script-fu"
(/usr/local/lib/gimp/2.1/plug-ins/script-fu)

called deprecated procedure 'gimp_undo_push_group_start'.
It should call 'gimp_image_undo_group_start' instead!"
 
Unter Vorbehalt, da ich keine Ahnung von Wingimp habe:

Unter File->Preferences: Folders->Scripts
werden bei mir die Ordner aufgelistert , die Gimp zum Starten eines Script-FU durchsucht. Kopiere da das Script rein und folge ansonsten der Anleitung oben.

Bye

Thorsten
 
WERBUNG
Zurück
Oben Unten