From ccf5ba4d96355737d139041517b8210f71292758 Mon Sep 17 00:00:00 2001 From: Sreenivas Bhattiprolu <19365893+bnsreenu@users.noreply.github.com> Date: Tue, 10 Mar 2020 16:55:34 -0700 Subject: [PATCH 1/2] Add files via upload --- 102-What is Unsharp Mask.py | 54 +++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 102-What is Unsharp Mask.py diff --git a/102-What is Unsharp Mask.py b/102-What is Unsharp Mask.py new file mode 100644 index 000000000..895b01ff2 --- /dev/null +++ b/102-What is Unsharp Mask.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python +__author__ = "Sreenivas Bhattiprolu" +__license__ = "Feel free to copy, I appreciate if you acknowledge Python for Microscopists" + +# https://youtu.be/u_4d51bOsVs + +""" +Unsharp mask enhances edges by subtracting an unsharp (smoothed) version of the image from the original. +Effectively making the filter a high pass filter. + +enhanced image = original + amount * (original - blurred) + +Amount of sharpening can be controlled via scaling factor, a multiplication factor +for the sharpened signal. + +skimage uses Gaussian smoothing for image blurring therefore the radius parameter +in the unsharp masking filter refers to the sigma parameter of the gaussian filter. +#This code shows that unsharp is nothing but original + amount *(original-blurred) +from skimage import io, img_as_float +from skimage.filters import unsharp_mask +from skimage.filters import gaussian + +img = img_as_float(io.imread("images/einstein_blurred.jpg", as_gray=True)) + +gaussian_img = gaussian(img, sigma=1, mode='constant', cval=0.0) + +img2 = (img - gaussian_img)*1. + +img3 = img + img2 + +from matplotlib import pyplot as plt +plt.imshow(img3, cmap="gray") + +""" + +from skimage import io +from skimage.filters import unsharp_mask + +img = io.imread("images/einstein_blurred.jpg") + +#sharpened = unsharp_mask(image0, radius=1.0, amount=1.0) +unsharped_img = unsharp_mask(img, radius=3, amount=1) + + +import matplotlib.pyplot as plt +fig = plt.figure(figsize=(12, 12)) +ax1 = fig.add_subplot(2,2,1) +ax1.imshow(img, cmap='gray') +ax1.title.set_text('Input Image') +ax2 = fig.add_subplot(2,2,2) +ax2.imshow(unsharped_img, cmap='gray') +ax2.title.set_text('Unsharped Image') + +plt.show() \ No newline at end of file From da42f1832c555eaa1395f9eaa1cbb0acb849f010 Mon Sep 17 00:00:00 2001 From: Sreenivas Bhattiprolu <19365893+bnsreenu@users.noreply.github.com> Date: Tue, 10 Mar 2020 16:57:00 -0700 Subject: [PATCH 2/2] Add files via upload --- images/einstein_blurred.jpg | Bin 0 -> 10649 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/einstein_blurred.jpg diff --git a/images/einstein_blurred.jpg b/images/einstein_blurred.jpg new file mode 100644 index 0000000000000000000000000000000000000000..62408a302a52dc32690815e22217a798903a6212 GIT binary patch literal 10649 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 literal 0 HcmV?d00001