要理解這壹節,首先要明白什麽是特性?
特征其實就是某個區域像素運算的結果!比如haar feature其實就是用下面列出的模板在圖像中滑動,計算白色區域覆蓋的像素之和減去黑色區域覆蓋的像素之和,計算出來的結果就是haar特征值!
Haar特征壹般結合Adaboost分類器進行目標識別!
這裏需要運動機器學習的知識!好在Opencv已經為我們訓練了數據,提取了人臉的特征。opencv的源代碼中有相應的xml特征文件,我們調用opencv提供的好的API就可以快速完成人臉識別的功能!
核心api是:
實施步驟:
HSV(Hue,Saturation,Value)是A. R. Smith在1978中創建的顏色空間,也叫Hexcone模型。
這個模型中顏色的參數是色調(H)、飽和度(S)和明度(V)。
用角度測量,取值範圍為0 ~ 360,從紅色開始逆時針計算,紅色為0,綠色為120,藍色為240。它們的補色分別是:黃色60,青色180,品紅色300;
飽和度s表示顏色與光譜顏色的接近程度。壹種顏色可以看作是某種光譜顏色與白色混合的結果。光譜色比例越大,顏色接近光譜色的程度越高,顏色的飽和度也越高。飽和度高,顏色深而亮。光譜顏色的白光成分為0,飽和度達到最高。壹般取值範圍為0% ~ 100%,值越大顏色越飽和。
亮度表示顏色的亮度,對於光源顏色,亮度值與發射體的亮度有關;對於對象的顏色,該值與對象的透射率或反射率有關。通常值的範圍是0%(黑色)到100%(白色)。
結論:
註意:在opencv中,H、S和V的值分別是,而不是[0,1]和[0,1];
這裏我們列出壹些hsv空間的顏色值,在表中把壹些紫色歸類為紅色。
[圖像上傳失敗...(圖片-4f70f7-1563843266225)]
。jpg)
註意,這只能是壹個粗略的判斷。按照我們正常的思維,在傍晚這個臨界點是無法判斷是夜晚還是白天的!
在壹幅圖片中,如果壹個物體的顏色是純色的,那麽我們可以很容易地在壹定範圍內通過顏色過濾提取出這個物體。
下面我們有壹張網球的圖片,網球的顏色在壹定範圍內是綠色的。我們在這張圖片中找不到其他有綠色的圖片,可以考慮用綠色來提取!
默認情況下,圖片的色彩空間是BGR色彩空間。如果我們想找到並提取純綠色,我們可能需要寫類似於(0,255,0)的東西。假設我們要代表壹定範圍的綠色,會很麻煩!
所以我們考慮轉換到HSV顏色空間。我們很容易知道綠色色相H的範圍,剩下的就是框定顏色的飽和度H和亮度V了!
實施步驟:
圖像二值化是將圖像上像素的灰度值設置為0或255的過程,也就是說整個圖像呈現明顯的黑白效果。
在數字圖像處理中,二值圖像占有非常重要的位置,圖像的二值化大大減少了圖像中的數據量,從而突出了目標的輪廓。
[圖像上傳失敗...(圖片-a 31052-1563843266226)]
我們使用壹個全局值作為閾值。但是這並不是在所有情況下都是好的,例如,如果圖像在不同的區域具有不同的照明條件。在這種情況下,自適應閾值會有所幫助。這裏,算法根據像素周圍的小區域來確定像素的閾值。因此,我們為同壹圖像的不同區域獲得不同的閾值,這為具有不同光照的圖像提供了更好的結果。
除了上述參數,方法cv.adaptiveThreshold還有三個輸入參數:
adaptiveMethod確定如何計算閾值:
塊大小決定了附近區域的大小。從附近像素的平均值或加權和中減去壹個常數。
日本Otsu提出的算法,又稱最大類間方差法,被認為是圖像分割中閾值選取的最佳算法。采用這種算法的好處是執行效率高!
& ltimg src= "。/img 2/Otsu . jpg " width = " 500 "/& gt;
如果我們把圖像看成壹個信號,那麽噪聲就是壹個幹擾信號。在采集圖像時,由於各種幹擾,我們可能會引入圖像噪聲。在計算機中,圖像是壹個矩陣。要給原始圖像添加噪聲,我們只需要給像素增加壹定的灰度即可。
f(x,y) = I(x,y) +噪聲
常見的噪音是椒鹽噪音,為什麽叫椒鹽噪音?因為圖像的像素會因為噪聲的影響而隨機變成暗點或者白點。這裏的“椒”不是我們常見的紅辣椒或青椒,而是外來的“椒”(壹種香料)。我們知道辣椒是黑的,鹽是白的,所以才有了這樣壹個形象的名字。
接下來,我們將生成10%胡椒噪聲和鹽噪聲:
我們還要註意,opencv的圖像矩陣類型是uint8,0以下和255以上的值不截斷,而是使用模運算。也就是200+60=260% 256 = 4。所以我們需要把原始圖像矩陣和噪聲圖像矩陣轉換成浮點數進行加法,然後再轉回。