/usr/share/gimp/2.0/scripts/hall-edge-mask-sharpen.scm is in gimp-plugin-registry 5.20120621.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | ;
; The GIMP -- an image manipulation program
; Copyright (C) 1995 Spencer Kimball and Peter Mattis
;
; Hall Smart Sharpen script for GIMP 2.4
; Copyright (c) 2004-2005 John Hall (jhall@gimpfaq.org)
; Modified 2006/07/09 Ade Rixon (ade.rixon@NOTTHISBIT.bigfoot.com,
; http://www.big-bubbles.fluff.org)
;
; Tags: photo, sharpen
;
; Author statement:
;
;;; A Script-Fu script for The GIMP to automate "smart" sharpening
;;; technique.
;;;
;;
;; This technique is described by Eric R. Jeschke here:
;; http://gimpguru.org/Tutorials/SmartSharpening2/
;;
;; However, he adapted this technique for The GIMP from a sharpening
;; article by Bruce Fraser on the creativepro.com web site:
;; http://www.creativepro.com/printerfriendly/story/20357.html
;
; --------------------------------------------------------------------
; Distributed by Gimp FX Foundry project
; --------------------------------------------------------------------
; - Changelog -
;
; v0.3b: - Handle grayscale images; ajr
; v0.3a: - Change USM & edge-detect params via dialog; ajr
; v0.3: - Cleaned up code
; v0.2: - Modified for The GIMP 2.0pre2
; v0.1: - First public release
; Updated for GIMP 2.4 by Paul Sherman
; --------------------------------------------------------------------
;
; 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.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (script-fu-edge-mask-sharpen image drawable inAmount inRadius inDespeckle)
;; Uses a logarithmic scale to calculate a reasonable amount for
;; edge detection.
(define (get-edge-amount width height)
(min (max (* 3.5 (log (/ (* width height) 1000000)))
1.0)
10.0))
(let* ((width (car (gimp-image-width image)))
(height (car (gimp-image-height image)))
(edge-amount (get-edge-amount width height))
(blur-radius (+ 1 edge-amount))
(edge-image (car (gimp-image-duplicate image)))
(edge-drawable (car (gimp-image-flatten edge-image)))
;;(image-type (car (gimp-image-base-type edge-image)))
(value-image (cond ((= (car (gimp-image-base-type image)) RGB)
;; decompose to value part if RGB image
(caddr (plug-in-decompose TRUE
edge-image
edge-drawable
"HSV"
FALSE))
)
;; else just copy if gray
(t
(car (gimp-image-duplicate edge-image))
)
))
(value-drawable (car (gimp-image-get-active-layer value-image)))
(sharpen-layer (car (gimp-layer-new image
(car (gimp-image-width image))
(car (gimp-image-height image))
(car (gimp-drawable-type-with-alpha drawable))
_"Sharpening"
80.0
VALUE-MODE)))
(sharpen-layer-mask (car (gimp-layer-create-mask sharpen-layer
WHITE-MASK))))
(gimp-image-undo-group-start image)
;; Apply an unsharp mask to the value image
(plug-in-unsharp-mask TRUE value-image value-drawable inRadius inAmount 0)
;; Copy value image to sharpen layer
(gimp-image-add-layer image sharpen-layer -1)
(gimp-edit-copy value-drawable)
(gimp-floating-sel-anchor (car (gimp-edit-paste sharpen-layer TRUE)))
;; Despeckle edge image to remove noise (grain)
(if (= inDespeckle TRUE)
(plug-in-despeckle TRUE edge-image edge-drawable 3 1 3 248)
)
;; Adjust the tonality so that areas that need sharpening are
;; white and everything else is black (this will become the
;; sharpening mask). The input levels were picked arbitrarily,
;; but they seem to work for me.
(plug-in-edge TRUE edge-image edge-drawable edge-amount 1 0)
(if (= (car (gimp-image-base-type image)) RGB)
(gimp-image-convert-grayscale edge-image))
(gimp-levels edge-drawable VALUE-LUT 40 200 0.90 0 255)
(plug-in-gauss-iir2 TRUE edge-image edge-drawable blur-radius blur-radius)
(gimp-levels-stretch edge-drawable)
;; Copy edge image to sharpen layer mask
(gimp-layer-add-mask sharpen-layer sharpen-layer-mask)
(gimp-edit-copy edge-drawable)
(gimp-floating-sel-anchor (car (gimp-edit-paste sharpen-layer-mask TRUE)))
(gimp-image-delete edge-image)
(gimp-image-undo-group-end image)
(gimp-displays-flush)
(list image)))
(script-fu-register "script-fu-edge-mask-sharpen"
_"Edge Mask Sharpen"
_"Perform a smart sharpen on an image."
"John Hall"
"John Hall"
"2004-2005"
"RGB* GRAY*"
SF-IMAGE "The image" 0
SF-DRAWABLE "The layer (not used)" 0
SF-ADJUSTMENT _"Amount of USM" '(1.5 0 10 0.01 0.01 2 0)
SF-ADJUSTMENT _"Radius of USM" '(1.0 0 20 0.01 0.01 2 0)
SF-TOGGLE _"Despeckle" FALSE
)
(script-fu-menu-register "script-fu-edge-mask-sharpen"
"<Image>/FX-Foundry/Photo/Sharpen")
|