一. 高通濾波器:
檢測(cè)圖像的某個(gè)區(qū)域,然后根據(jù)像素和周?chē)袼亓炼炔钪祦?lái)提升該像素亮度的濾波器--適用于邊緣檢測(cè)。
1. 創(chuàng)建核矩陣,又稱為濾波器床玻。核:一組權(quán)重的集合。大小為7的核時(shí)7*7矩陣沉帮。一般濾波器所有值和為0锈死。例如kernal_3x3=np.array([[-1,-1,-1], [-1,8,-1], [-1,-1,-1]])
2.讀入圖像,灰度圖穆壕。img=cv2.imread('../data/0.jpg',0)
3. 使用核與圖像進(jìn)行卷積待牵,使用scipy中ndimage.convolve函數(shù)。得到的結(jié)果就是和源圖像相同大小的矩陣喇勋。其中進(jìn)行卷積的運(yùn)算洲敢,運(yùn)算規(guī)則參考文章:卷積神經(jīng)網(wǎng)絡(luò)簡(jiǎn)介
4. 顯示出卷積后的圖像,先創(chuàng)建窗口茄蚯,重設(shè)窗口大小压彭,顯示圖片,關(guān)閉窗口渗常。結(jié)果如下:
5. 代碼如下:
import cv2
import numpy as np
from scipy import ndimage
#這個(gè)是濾波器使用的模板矩陣
kernal_3x3=np.array([[-1,-1,-1],
[-1,8,-1],
[-1,-1,-1]
])
kernal_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=cv2.imread('../data/0.jpg',0) #以灰度的方式加載圖片
#通過(guò)使用模板矩陣進(jìn)行高通濾波
k3=ndimage.convolve(img, kernal_3x3)
k5=ndimage.convolve(img,kernal_5x5)
#使用OpenCV的高通濾波
blurred = cv2.GaussianBlur(img,(11,11),0)
g_hpf=img-blurred
cv2.namedWindow("origin picture", cv2.WINDOW_NORMAL) # 初始化一個(gè)名為Image的窗口
cv2.resizeWindow("origin picture", 400, 600);
cv2.namedWindow("k3", cv2.WINDOW_NORMAL) # 初始化一個(gè)名為Image的窗口
cv2.resizeWindow("k3", 400, 600);
cv2.namedWindow("k5", cv2.WINDOW_NORMAL) # 初始化一個(gè)名為Image的窗口
cv2.resizeWindow("k5", 400, 600);
cv2.namedWindow("blurred", cv2.WINDOW_NORMAL) # 初始化一個(gè)名為Image的窗口
cv2.resizeWindow("blurred", 400, 600);
cv2.namedWindow("g_hpf", cv2.WINDOW_NORMAL) # 初始化一個(gè)名為Image的窗口
cv2.resizeWindow("g_hpf", 400, 600);
cv2.imshow('origin picture',img)
cv2.imshow('k3',k3)
cv2.imshow('k5',k5)
cv2.imshow('blurred',blurred)
cv2.imshow('g_hpf',g_hpf)
cv2.waitKey(0)
cv2.destroyAllWindows()
二壮不、低通濾波器
像素和周?chē)袼氐牧炼炔钪敌∮谝粋€(gè)特定值時(shí),平滑該像素的亮度皱碘,用于降噪和模糊化询一。
三、邊緣檢測(cè)
邊緣檢測(cè)濾波函數(shù):Laplacian() Sobe() Scharr()癌椿,將非邊緣部分轉(zhuǎn)化為黑色健蕊,邊緣區(qū)域轉(zhuǎn)化為白色或者其他飽和的顏色。但容易將噪聲錯(cuò)誤識(shí)別為邊緣踢俄,故要進(jìn)行模糊處理缩功。函數(shù)有:blur()(簡(jiǎn)單算數(shù)平均)medianBlur() 以及GaussionBlur() 。
具體代碼和實(shí)現(xiàn)效果待學(xué)習(xí)~~