1. 程式人生 > >OpenCV的卷積核處理

OpenCV的卷積核處理

1、計算機視覺的三種不同色彩空間

OpenCV中可以操作和使用的色彩空間有上百種之多,,但是對於計算機視覺處理來說,一般常用的色彩空間有三種,即灰度、BGR以及HSV

灰度:  將圖片中的彩色資訊去除只保留黑白資訊的色彩空間。一般而言灰度空間對人臉的處理特別有效

BGR:即藍綠紅空間。在這個空間中,每個畫素都是由一個三維陣列表示,分別代表藍、綠、紅這三種顏色。

HSV: H是色調,S是飽和度 ,V是黑色度,一般用在數字相機對彩色圖片的處理

2、卷積核與影象特徵提取

在 OpenCV 甚至於平常的影象處理中,卷積核是一種最常用的影象處理工具。其主要是通過確定的核塊來檢測影象的某個區域,之後根據所檢測的畫素與其周圍存在的畫素的亮度差值來改變畫素明亮度的工具

例如:

kernel33=np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]])

這是一個[3,3]的卷積核,其作用是計算中央畫素與周圍臨近畫素的亮度差值,如果亮度差值差距過大,本身影象的中央亮度較少,那麼經過卷積核以後,中央畫素的亮度會增加。即如果一個畫素比他周圍的畫素更加突出,那麼提升其本身的亮度

import numpy as  np

import cv2

from scipy import ndimage

kernel33=np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]])

kernel33_D=np.array([[1,1,1],[1,-8,1],[1,1,1]])

img=cv2.imread("C:/Users/Mr.Ma/Desktop/1.jpg",0)

lightImg=ndimage.convolve(img,kernel33_D)

cv2.imshow("test",lightImg)

cv2.waitKey(0)

ndimage庫是一個處理多維影象的函式庫,其中包括影象濾波器,傅立葉變換、影象的旋轉拉伸以及測量和形態學處理等。注意這裡卷積核降低的程度較大,最後完全造成了失真,使得圖片失去了能夠表現其形式的特徵圖譜。

另一種卷積特徵提取的方法:高斯模糊

3、卷積核進階

OpenCV 中也提供了常用的卷積核函式——fileter2D 這是通過程式設計人員指定的任意核或者卷積矩陣與目標矩陣進行計算

fileter2D 的具體使用如下:

cv2.fileter2D (src,-1,kernel,dst)

其中src是目標圖片,-1指的是每個目標圖片的通道位深數,一般要求目標圖片和生成圖片的位深數一樣。kernel是圖片所使用的卷積核矩陣。

卷積核中所有的權重相加的和為0.這樣做的目的是在卷積核完成後,最終會得到一個邊緣突出的影象卷積結果,邊緣被轉化為白色,而非邊緣區域被轉化為黑色