通过使用不同方法对图像进行锐化处理,更改参数对比图像显示,代码如下:
# (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()
文章来源地址https://www.toymoban.com/news/detail-538876.html
文章来源:https://www.toymoban.com/news/detail-538876.html
到了这里,关于Python 使用多种方法对图像进行锐化处理——图像处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!