Python 使用多种方法对图像进行锐化处理——图像处理

本文介绍了一种通过不同方法实现图像锐化的技术,并展示了如何通过调整参数来改变图像锐化的效果。具体方法包括使用高斯模糊后的差分增强、Unsharp Mask算法的不同参数设置以及PIL库提供的多种内置锐化滤镜。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过使用不同方法对图像进行锐化处理,更改参数对比图像显示,代码如下:

# (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()




运行结果:

fun_01()

fun_02()

fun_03()

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vous oublie@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值