Skip to content

Commit

Permalink
Add median filter algorithm (TheAlgorithms#675)
Browse files Browse the repository at this point in the history
  • Loading branch information
matheustguimaraes authored and AnupKumarPanwar committed Jan 19, 2019
1 parent 2d70e9f commit ac28125
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 0 deletions.
Empty file.
Empty file.
42 changes: 42 additions & 0 deletions digital_image_processing/filters/median_filter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
"""
Implementation of median filter algorithm
"""

from cv2 import imread, cvtColor, COLOR_BGR2GRAY, imshow, waitKey
from numpy import zeros_like, ravel, sort, multiply, divide, int8


def median_filter(gray_img, mask=3):
"""
:param gray_img: gray image
:param mask: mask size
:return: image with median filter
"""
# set image borders
bd = int(mask / 2)
# copy image size
median_img = zeros_like(gray)
for i in range(bd, gray_img.shape[0] - bd):
for j in range(bd, gray_img.shape[1] - bd):
# get mask according with mask
kernel = ravel(gray_img[i - bd:i + bd + 1, j - bd:j + bd + 1])
# calculate mask median
median = sort(kernel)[int8(divide((multiply(mask, mask)), 2) + 1)]
median_img[i, j] = median
return median_img


if __name__ == '__main__':
# read original image
img = imread('lena.jpg')
# turn image in gray scale value
gray = cvtColor(img, COLOR_BGR2GRAY)

# get values with two different mask size
median3x3 = median_filter(gray, 3)
median5x5 = median_filter(gray, 5)

# show result images
imshow('median filter with 3x3 mask', median3x3)
imshow('median filter with 5x5 mask', median5x5)
waitKey(0)

0 comments on commit ac28125

Please sign in to comment.