Python uses a variety of methods to sharpen images - image processing

By using different methods to sharpen the image, change the parameters and compare the image display, the code is as follows:

# (6)、随机读取一幅图像,对其进行锐化,
#导入库
import cv2
import skimage.filters as af
import  skimage.filters
import matplotlib.pyplot as plt
from PIL import  Image
from PIL import  ImageFilter
from PIL.ImageFilter import  FIND_EDGES,EDGE_ENHANCE,EDGE_ENHANCE_MORE,SHARPEN

# im=Image.open("image_01/肾穿病理镜下图片.png")
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
# 导入图片
img_01=cv2.imread("img.png")
# 转换灰度
img=cv2.cvtColor(img_01, cv2.COLOR_BGR2GRAY)

# 显示图像
def show_img(ax_img,img,title,cmap="gray"):
    ax_img.imshow(img, cmap)
    ax_img.set_title(title)
    ax_img.set_axis_off()

# 方法1:对公式中的总数取不同的值,对比显示实验结果;公式:锐化图像=原始图像+(原始图像-模糊图像)
def fun_01():
    # 高斯滤波器
    img_gaussianBlur = cv2.GaussianBlur(img, (3, 3), 1)
    # 锐化图像=原始图像+(原始图像-模糊图像)
    im_fun_01=img+(img-img_gaussianBlur)*10
    im_fun_02 = img + (img - img_gaussianBlur) * 20
    im_fun_03 = img + (img - img_gaussianBlur) * 30
    fig,(ax_img,im1,im2,im3)=plt.subplots(1,4)
    # 显示图像
    show_img(ax_img,img,"原始图像")
    show_img(im1,im_fun_01,"总数=10")
    show_img(im2,im_fun_02,"总数=20")
    show_img(im3, im_fun_03, "总数=30")
    plt.show()

# 方法2:对参数radius与amount取不同的值,对比显示实验结果;
def fun_02():
    im_upsharp_1= skimage.filters.unsharp_mask(img, radius=1.0, amount=100.0, multichannel=False, preserve_range=False)
    im_upsharp_2=skimage.filters.unsharp_mask(img, radius=2.0, amount=50.0, multichannel=False, preserve_range=False)
    im_upsharp_3 = skimage.filters.unsharp_mask(img, radius=10.0, amount=80.0, multichannel=False, preserve_range=False)
    fig, (ax_img, im1, im2, im3) = plt.subplots(1, 4)
    # 显示图像
    show_img(ax_img, img, "原始图像")
    show_img(im1, im_upsharp_1, "im_upsharp_1")
    show_img(im2, im_upsharp_2, "im_upsharp_2")
    show_img(im3, im_upsharp_3, "im_upsharp_3")
    plt.show()

# 方法3:按照实验指导取不同的参数,对比显示实验结果。
def fun_03():
    im=Image.open("img.png")
    im_01=im.filter(FIND_EDGES)
    im_02=im.filter(EDGE_ENHANCE)
    im_03=im.filter(EDGE_ENHANCE_MORE)
    im_04=im.filter(SHARPEN)
    fig, (ax_img, im1, im2, im3) = plt.subplots(1, 4)
    # 显示图像
    show_img(ax_img,img,"原始图像")
    show_img(im1,im_01,"总数=10")
    show_img(im2,im_02,"总数=20")
    show_img(im3, im_03, "总数=30")
    plt.show()

if __name__ == '__main__':
    fun_01()
    fun_02()
    fun_03()




operation result:

fun_01()

fun_02()

fun_03()

 

 

 

Guess you like

Origin blog.csdn.net/qq_54000767/article/details/127347260