1. 程式人生 > >第四天 opencv 影象變換和空間影象濾波

第四天 opencv 影象變換和空間影象濾波

####################這段是轉載,解釋影象變換和空間濾波區別即cv.medianBlur和cv.filter2D#######

在空間域的操作主要可以分為兩類:第一類是所謂的“影象強度變換”(Intensity Transform),另一類是所謂的“空間域影象濾波”(Spatial Filtering)。這兩者的區別主要是處理方法的不同。前者對單個畫素點進行操作,例如通過閾值函式實現圖形的二值化,實現灰度平均等。而後者建立在鄰域(neighborhood)的概念上,講究的是利用一個矩陣核(Kernel)對一個小區域進行操作。今天這篇文章主要介紹的是後者,以及如何用OpenCV中的函式去實現。

我們先來看下面的這個公式,以及它的矩陣表示形式:

######################################################################################

import cv2 as cv

def blur_demo(image):
    dst = cv.blur(image,(15,1))            ##均值模糊原理卷積
    cv.imshow("blur_demo",dst)

def median_blur_demo(image):          ##中值迷糊
    dst = cv.medianBlur(image, 5)
    cv.imshow("median_blur_demo", dst)

def custom_blur_demo(image):         ##銳化模糊      空間濾波
    #kernel = np.ones([5, 5], np.float32)/25
    kernel = np.array([[-1,0,1][0, -1, 0],[-1, 5, -1],[0, -1, 0]], np.float32)
    dst = cv.filter2D(image, -1, kernel=kernel)
    cv.imshow("custom_blur_demo", dst)




print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("C:/Users/weiqiangwen/Desktop/sest/contours.png")
cv.namedWindow("input contours",cv.WINDOW_AUTOSIZE)
cv.imshow("contours", src)
blur_demo(src)
cv.waitKey(0)

cv.destroyAllWindows()