通過使用不同方法對圖像進(jìn)行銳化處理,更改參數(shù)對比圖像顯示,代碼如下:
# (6)、隨機讀取一幅圖像,對其進(jìn)行銳化,
#導(dǎo)入庫
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'] # 用來正常顯示中文標(biāo)簽
plt.rcParams['axes.unicode_minus'] = False # 用來正常顯示負(fù)號
# 導(dǎo)入圖片
img_01=cv2.imread("img.png")
# 轉(zhuǎn)換灰度
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:對公式中的總數(shù)取不同的值,對比顯示實驗結(jié)果;公式:銳化圖像=原始圖像+(原始圖像-模糊圖像)
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,"總數(shù)=10")
show_img(im2,im_fun_02,"總數(shù)=20")
show_img(im3, im_fun_03, "總數(shù)=30")
plt.show()
# 方法2:對參數(shù)radius與amount取不同的值,對比顯示實驗結(jié)果;
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:按照實驗指導(dǎo)取不同的參數(shù),對比顯示實驗結(jié)果。
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,"總數(shù)=10")
show_img(im2,im_02,"總數(shù)=20")
show_img(im3, im_03, "總數(shù)=30")
plt.show()
if __name__ == '__main__':
fun_01()
fun_02()
fun_03()
運行結(jié)果:
fun_01()
fun_02()
fun_03()
?文章來源地址http://www.zghlxwxcb.cn/news/detail-538876.html
?文章來源:http://www.zghlxwxcb.cn/news/detail-538876.html
?
到了這里,關(guān)于Python 使用多種方法對圖像進(jìn)行銳化處理——圖像處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!