Python 影像平滑濾波-cv2.filter2D

markdown #說明 影像處理的流程中有一個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
與剛剛的圖片相比模糊很多。 - 參考 :https://www.jianshu.com/p/e8e1f2f1c605 ##補充其他濾波的方法 ``` blur = cv2.blur(img,(5,5)) blur = cv2.GaussianBlur(img,(5,5),0) median = cv2.medianBlur(img,5) ```

留言