說明
影像處理的流程中有一個filter的function: 2D捲積=> cv2.filter2D(),是濾波器的概念,濾波器會把一些資訊過濾,一些資訊通過,這樣的想法是用於訊號上,在影像則是對影像的陣列做捲積,捲積也就是所謂的 convolution,把它想成內積就可以了,以上是自己的理解,如果有錯歡迎指導。
參考其中一篇文中對影像作平均濾波的動作,可以調整濾波器的內核定義,以下範例解釋。
操作流程
Code
import cv2
import numpy as np
img = cv2.imread('XXX.png')
cv2.namedWindow('original', cv2.WINDOW_NORMAL)
cv2.resizeWindow("original", 640, 480)
cv2.imshow("original", img)
cv2.waitKey(-1)
kernel = np.ones((5,5),np.float32)/25
dst = cv2.filter2D(img,-1,kernel)
cv2.namedWindow('result', cv2.WINDOW_NORMAL)
cv2.resizeWindow("result", 640, 480)
cv2.imshow("result", dst)
cv2.waitKey(-1)
DEMO濾波器內核為5*5=25
這邊的內核設定為5*5共識25個像素上,也就是這張圖片對這個25的陣列做內積,以25成為一格,將這個格的做平均成為相同的,然後取代原先的值,從這個觀念來看,如果是把這個內積現在為25若是擴大圖片看起來會越模糊。
DEMO濾波器內核為100*100=10000
與剛剛的圖片相比模糊很多。
補充其他濾波的方法
blur = cv2.blur(img,(5,5))
blur = cv2.GaussianBlur(img,(5,5),0)
median = cv2.medianBlur(img,5)
留言
張貼留言