Remove Holes (from Selection)

Overview

This script enables you to remove the holes of a selection, if by hole we mean every unselected or partially selected area of the image which is surrounded by a fully selected area.

Original selection in Quick Mask mode

"Remove Holes" applied

In order to understand how the script works, we have to focus on the selection mask, that is the channel related to the selection (you can view it by either activating the Quick Mask or saving the selection as a channel). Referring to this mask, the script eliminates every area that is composed from non-white pixels and is completely surrounded by a border of white pixels, and the elimination consists in filling such areas of the selection mask with white, so that the corresponding holes of the selection will disappear. Therefore, a black and gray region of the selection mask which is contiguous to the image's borders across at least one pixel cannot be regarded as a hole, because not all of its edges are adjacent to white pixels.

Activating the script

Once installed, you can launch this script from the image menubar through: "Select -> Remove Holes...".

Options

Normalize initial selection

When this box is checked, the contrast of the selection mask will be initially stretched, causing the lightest pixels to become white and the darkest pixels to become black; in this way, it is often possible to remove some holes even from selections whose masks are devoid of white pixels, which are essential for circumscribing any possible hole. The following illustration shows that enabling this option helps at least to eliminate the holes in the letters G and M, which could not be removed otherwise.

Original selection in Quick Mask mode

"Normalize initial selection" disabled

"Normalize initial selection" enabled

Sharpen initial selection

By activating this checkbox, the selection mask will be preliminarily transformed into a black and white channel without anti-aliasing, a kind of enhancement that can make the subsequent action of removal more effective in case the selection is provided with soft borders and blurred zones, as shown in the illustration below.

Threshold

Allows you to set the level of gray (in a scale from 0 to 255) to use as a threshold in sharpening the initial selection, so that all the pixels of the selection mask with a luminosity (gray level) equal to or higher than the specified threshold will become white, while all the pixels darker than the specified threshold will become black.

Original selection in Quick Mask mode

"Sharpen initial selection" disabled

"Sharpen initial selection" enabled

Feather resultant selection

When this box is checked, it is possible to reduce the sharpness of the borders of the eventual selection.

Radius of feather (in pixels)

Allows you to set the amount of blur affecting the selection borders when the "Feather resultant selection" checkbox is activated. Values vary within a range of 0 to 32767.