Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I get the "smart sharpen" effect on my images with python?

I am wondering how to smart sharpen an image using python or any related image library like ndimage ,skimage or even PIL.I could find methods that actually sharpen my image but with a lot of noise and pixelating when zooming in .So since I know Photoshop I tried to get that smart sharpen effect which sharpens the image with a less noising and with a nice sweet contrast through python but I failed.

Notes:-
(1) methods has been tested:-

>>> # The 1st Method:  
>>> import Image                 
>>> import ImageFilter
>>> image.filter(ImageFilter.SHARPEN)               
>>> Image.filter(ImageFilter.EDGE_ENHANCE_MORE)    #Look down:1st image created  

>>> # The 2nd Method:
>>> blurred_l=scipy.ndimage.gaussian_filter(b,3)  
>>> filter_blurred_l = scipy.ndimage.gaussian_filter(blurred_l, 1)  
>>> alpha =30  
>>> sharpened = blurred_l + alpha * (blurred_l - filter_blurred_l)  

>>> # The 3rd Method:  
>>> shar=imfilter(Image,'sharpen')               #Look down:2nd image created

(2) I found a piece of code but it's in Perl . I only know Python In here or directly (3) Here are 2 of the sharpened image using above methods the third done with smartsharp:
Original
Original image http://imageshack.us/a/img600/6640/babyil.jpg
First ....................................................................second
1st http://imageshack.us/a/img803/3897/sharp1.png 2nd http://imageshack.us/a/img809/2235/sharp2.png
third MY GOAL>that's the effect I want
3rd http://imageshack.us/a/img832/4563/smartsharp.jpg
(4) Here are the tool I used to create the third image above:
smrsharpm http://imageshack.us/a/img210/2747/smartsharpentoolm.jpg smrsharp http://imageshack.us/a/img193/490/smartsharpentool.jpg

like image 488
Someone Someoneelse Avatar asked Jan 16 '23 06:01

Someone Someoneelse


2 Answers

Photoshop's "smart sharpening" function uses a mathematical operation called deconvolution internally. numpy does have a deconvolve() function that could probably be pressed into service for this task, but I couldn't find a ready-made function to do smart sharpening specifically with numpy, so you'd probably have to code it up yourself.

An alternative approach would be to do it using the GIMP. There's a GIMP plug-in (intuitively named "G'Mic") that will do deconvolution among other sharpening algorithms, and you can automate GIMP using Python.

like image 80
kindall Avatar answered Jan 18 '23 22:01

kindall


Unfortunately, it's hard to know what "Smart sharpen" does without having access to the Photoshop code. In the meantime, you can try to mix an unsharpen mask, total variation filtering and some color adjustment (perhaps a bit of hue boost).

Also see: http://www.kenrockwell.com/tech/photoshop/sharpening.htm#

Update: here is an example of how to remove motion blur from an image:

https://github.com/stefanv/scikit-image-demos/blob/master/clock_deblur.py

(the clock image is in the same repository). Unfortunately, scikit-image does not currently have mature deblurring / inverse filtering--but we're working on it!

like image 27
Stefan van der Walt Avatar answered Jan 18 '23 23:01

Stefan van der Walt