- As of today gimp still is an 8bit image processor. So you might experience 8bit quantisation effects. I never did, though.
- With the gmic filter you will avoid any 8bit quantisation effects. On the other hand, due to the way it is implemented, the high pass filter in gmic internally applies an S-curve to the high pass filter. This increases the sharpening effect in certain regions.

For practical purposes I don't think it matters which filter you use. If you don't fear some math and should you be interested in more details the following paragraphs will provide further insight.

## How does a high pass filters work?

- Create a copy $L_l$ of your original layer $L_o$
- Apply a gaussian blur (Filter -> Blur) to $L_l$

This layer now contains the low frequencies. - Set the layer mode of $L_l$ to "grain extract" (your image will look strange)
- Creat a copy ($L_h$) from the strange looking image (Layer dialog -> Right click -> New from visible)

This layer now contains the high frequencies - Return $L_h$ and delete the rest.

- Create a copy $L_l$ of your original layer $L_o$
- Apply a gaussian blur (Filter -> Blur) to $L_l$
- Invert the color of $L_l$
- Set layer mode of $L_l$ to "compose interpolation". This is a GMIC specific mode!
- Create a copy $L_h$ from visible
- Increase constrast of $L_h$ by factor 2
- Return $L_h$ and delete the rest

To understand the differences we compare both filters on a mathematical basis. For simplicity I apply the calculations to a single greyscale pixel with values restricted from 0 to 255. The formulas for the blend modes were taken from the GMIC overview page. Thus the individual steps for the GIMP plugin can be written as:

- Gaussian blur: $I\textrm{gauss}$
- Grain extract: $I_a - I_b + 128$

Using layer variables introduced above, the high pass layer is given by:

$$L_h = L_o - (L_o \textrm{gauss}) + 128$$

$L_o*\textrm{gauss}$ describes the gaussian blur applied to the copy of the original image. Substracting this from the original layer and adding 128 is what the grain extract is doing.

Note: Without grain extract adding 128, we will loose half of the highpass information as some values become negative and would be clipped to 0.

- Gaussian blur: $I\textrm{gauss}$
- Color Inversion: $255-I$
- Compose interpolation: $\frac{255}{2}-\frac{255}{4}\cos(\frac{I_a\pi}{255})-\frac{255}{4}\cos(\frac{I_b\pi}{255})$
- Contrast increase by factor c: $128+(I-128)*c$

Written in a single equation gives:

## Add new comment