- When the minimum filter is applied to a digital image it picks up the minimum value of the neighbourhood pixel window and assigns it to the current pixel. A pixel with the minimum value is the darkest among the pixels present in the pixel window.
- The dark values present in an image are enhanced by the minimum filter.
- Minimum filter is also called as a dilation filter. When minimum filter is applied the object boundaries present in an image are extended.
- The minimum filter is one of the morphological filters. The other morphological filters include maximum filter and the median filter.
- The minimum filter removes any positive outlier noise present in a digital image.
# -----Python example program for applying minimum filter to a Digital Image-----
# import the required PIL Modules
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
from PIL import ImageFilter
# Draw text on the image
def writeText(baseImage, imageDescription, textSize, textX, textY, fontFileLocation):
baseImage = baseImage.convert('RGBA');
textImage = Image.new('RGBA', baseImage.size, (255,255,255,0));
# Select a font for the text
font = ImageFont.truetype(fontFileLocation, textSize);
draw = ImageDraw.Draw(textImage);
draw.text((textX,textY), imageDescription, font=font, fill=(255,255,255,255));
# Do an alpha composite of the two images and return
return Image.alpha_composite(baseImage, textImage);
# Text size and location
textSize = 150;
textX = 20;
textY = 60;
fontFileLocation = "/opt/X11/share/fonts/TTF/luxirr.ttf";
imageFilePath = "./droplets.jpg";
imageText = "Before applying minimum filter:";
# Create an image object from a file
imageInstance = Image.open(imageFilePath);
originalImage = writeText(imageInstance, imageText, textSize, textX, textY, fontFileLocation);
# Apply minimum filter twice to the image
minFilter1x = imageInstance.filter(ImageFilter.MinFilter);
imageText = "Minimum filter-1x:";
min1xWithText = writeText(minFilter1x, imageText, textSize, textX, textY, fontFileLocation);
minFilter2x = minFilter1x.filter(ImageFilter.MinFilter);
imageText = "Minimum filter-2x:";
min2xWithText = writeText(minFilter2x, imageText, textSize, textX, textY, fontFileLocation);
Before applying minimum filter:
After applying minimum filter 1x times:
After applying minimum filter 2x times: