1. 程式人生 > >目標特徵提取(一):全域性特徵

目標特徵提取(一):全域性特徵

        全域性特徵是基於灰度畫素值的描述,可以分為直方圖特徵、顏色特徵和輪廓特徵。

1、直方圖特徵

直方圖特徵用數學統計方法提取目標的外觀特徵。舉例說明提取過程:對於一幅灰度影象,將灰度值從0到255等分為8個區間,然後遍歷影象愛的每個畫素,統計分別落入每個區間的畫素的個數,最後將8個區間的畫素個數除以畫素總和進行歸一化便得到直方圖特徵。

為了體現目標顏色的空間資訊,可採用顏色空間二維直方圖——將影象分割成若干個子區域,分別在各個子區域內統計顏色分佈資訊。將影象分割的塊數越多越能體現目標顏色的空間資訊,但是增大特徵的儲存空間,使跟蹤心能下降。分塊數目需要取合適的值。

藉助matplotlib

的繪圖功能, 這在同時繪製多通道(BGR)的直方圖,程式碼如下:

import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('Python1.jpg')
color = ('b','g','r')
for i,col in enumerate(color):
    histr = cv2.calcHist([img],[i],None,[256],[0,256])
    plt.plot(histr,color = col)
    plt.xlim([0,256])
plt.show()	




2、顏色特徵

2.1、RGB顏色空間

”RGB(紅綠藍)是依據人眼識別的顏色定義出的空間,可表示大部分顏色。但在科學研究一般不採用RGB顏色

空間,因為它的細節難以進行數字化的調整。它將色調,亮度,飽和度三個量放在一起表示,很難分開。它是最通用

的面向硬體的彩色模型。該模型用於彩色監視器和一大類

彩色視訊攝像。“——百度百科

2.2、HSV顏色空間

一種面向視覺感知的顏色模型。H——色調,以角度表示;S——飽和度,V——亮度,二者取值都在 0到 1之

間。HSV顏色空間袋額兩大特點:亮度分量與影象的彩色資訊無關;色調和飽和度分量與人感受顏色的方式是緊密

相連的。HSV直接對應人眼色彩視覺特性的三要素,通道之間各自獨立,可以被獨立感知各顏色分量的變化,其中

色調分量尤其影響人的視覺判斷。在顏色處理方面是理想的座標系,經常需要和RGB相互轉換,要用到的函式是:

cv2.cvtColor(input_imageflag),其中flag就是轉換型別。對於BGR$Gray的轉換,我們要使用的flag 就是

cv2.COLOR_BGR2GRAY。同樣對於BGR$HSV的轉換,我們用的flag 就是 cv2.COLOR_BGR2HSV

示例,利用物體顏色特徵進行物體跟蹤,程式碼如下:

#coding=utf-8
import cv2
import numpy as np
cap=cv2.VideoCapture(0)
while(1):
    # 獲取每一幀
    ret,frame=cap.read()
  
    hsv=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
   
    lower_blue=np.array([110,50,50])
    upper_blue=np.array([130,255,255])
   
    mask=cv2.inRange(hsv,lower_blue,upper_blue)
    res=cv2.bitwise_and(frame,frame,mask=mask)
 
    cv2.imshow('frame',frame)
    cv2.imshow('mask',mask)
    cv2.imshow('res',res)
    k=cv2.waitKey(5)&0xFF
    if k==27:
        break

cv2.destroyAllWindows()
執行結果:



3、輪廓特徵