本人新書《玩轉Python網絡爬蟲》,可在天貓、京東等商城搜索查閱或通過右側圖書鏈接購買,項目深入淺出,適合爬蟲初學者或者是已經有一些網絡爬蟲編寫經驗,但希望更加全面、深入理解Python爬蟲的開發人員。
歡迎加入學習交流QQ羣:657341423
高通濾波器
高通濾波器(HPF)是檢測圖像的某個區域,然後根據像素與周圍像素的亮度差值來提升像素的亮度。
用於:邊緣提取與增強。
注意:通過高通濾波器進行濾波後,再和原圖像疊加,可以增強圖像中灰度級變化較快的部分,即銳化。
低通濾波器
低通濾波器是像素與周圍像素的亮度差值小於一個特定值時,平滑該像素的亮度。
用於:去噪和模糊化。
注意:低通濾波器容許低頻信號通過,但減弱頻率高於截止頻率的信號的通過。
import cv2
import numpy as np
from skimage import io
from scipy import ndimage
# 高通濾波器是根據像素比它周圍的像素更突出,就會提升它的亮度
# 常用邊緣提取與增強,檢測圖像中物體的邊緣位置
kernel_3x3 = np.array([[-1, -1, -1],
[-1, 8, -1],
[-1, -1, -1]])
kernel_5x5 = np.array([[-1, -1, -1, -1, -1],
[-1, 1, 2, 1, -1],
[-1, 2, 4, 2, -1],
[-1, 1, 2, 1, -1],
[-1, -1, -1, -1, -1]])
img = io.imread("planet_glow.jpg",as_grey=True)
k3 = ndimage.convolve(img, kernel_3x3)
k5 = ndimage.convolve(img, kernel_5x5)
# cv2.GaussianBlur 高斯濾波,(17,17)爲核大小,包含寬度和高度的二元組。
blurred = cv2.GaussianBlur(img, (17,17), 0)
g_hpf = img - blurred
cv2.imshow("img", img)
cv2.imshow("3x3", k3)
cv2.imshow("5x5", k5)
cv2.imshow('blurred',blurred)
cv2.imshow("g_hpf", g_hpf)
cv2.waitKey(0)
cv2.destroyAllWindows()
運行結果
原圖:
原圖經過灰度處理
灰度處理後經過高斯模糊
灰度處理後經過濾波核3*3處理
灰度處理後經過濾波核5*5處理
灰度處理減去高斯模糊
從效果圖看來,最後一種處理結果明顯最優,但對邊緣提前不算十分明顯
參考資料:OpenCV 3計算機視覺 Python語言實現第二版