OpenCV2.4.3 CheatSheet學習(三)

四、圖像處理(呵呵,重頭戲來了)
1.
濾波
filter2D()
用核函數對圖像做卷積。

sepFilter2D()
用分解的核函數對圖像做卷積。
首先,圖像的每一行與一維的核kernelX做卷積;然後,運算結果的每一列與一維的核kernelY做卷積。

boxFilter()
就是滑動窗口平均濾波的二維版。

GaussianBlur()
高斯平均,也就是高斯模糊。

medianBlur()
中值濾波,個人最愛的濾波函數。

bilateralFilter()
雙線性濾波。

前面這四個函數是原來OpenCV裏的cvSmooth()取不同參數的應用。

Sobel()
使用擴展Sobel 算子計算一階、二階、三階或混合圖像差分,看岡薩雷斯的那本《數字圖像處理》。

Scharr()
計算一階導,x方向或y方向,以前這個方法是放在cvSobel裏的。

Laplacian()
拉普拉斯變換。

erode(), dilate()
腐蝕、膨脹。

示例:
filter2D(image, image, image.depth(),(Mat<float>(3,3)<<-1,-1, -1, -1, 9, -1, -1, -1, -1), Point(1,1),128);
構造了一個如下所示的核對圖像做卷積:
-1 -1 -1
-1 9 -1
-1 -1 -1
核的錨點在(1,1)位置,卷積之後每個像素加上128.

2.
幾何變換
resize()
改變圖像尺寸,可以指定x方向和y方向上的縮放比例,可以指定插值方法。

getRectSubPix()
以亞像素精度從圖像中提取矩形。
dst(x,y)=src(x+center.x-(dst.cols-1)*0.5,y+center.y-(dst.rows-1)*0.5)
其中非整數象素點座標採用雙線性插值提取。

warpAffine()
放射變換,看岡薩雷斯《數字圖像處理》。

warpPerspective()
透射變換。

remap()
幾何變換。

convertMaps()
這是啥?沒用過,呵呵。

示例:
Mat dst;
resize(src, dst, Size(), 1./sqrt(2),1./sqrt(2));
把圖像縮小到原來的根號二分之一。

3.
圖像變換
cvtColor()
色彩空間轉換。
順便提一句,這個函數可以用於把CCDraw格式轉換爲RGB,請參考:
http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=18681
但是不能用於把灰度圖轉成僞彩圖,請參考:
http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=23729

threshold()
二值化,常用操作,一般應用時建議用大津算法,即使用THRESH_OTSU參數。

adaptivethreshold()
自適應閾值的二值化。

floodFill()
填充連通域。

integral()
計算積分圖像,一次或者二次。

distanceTransform()
距離變換,對原圖像的每一個像素計算到最近非零像素的距離。

watershed()
分水嶺圖像分割。

grabCut()
一種彩色圖像分割算法,效果可以參考這裏:
http://www.cnblogs.com/xrwang/archive/2010/04/27/GrabCut.html

4.
直方圖
calcHist()
計算直方圖。

calcBackProject()
計算反向投影。

equalizeHist()
灰度圖像的直方圖均衡化,常用操作。

compareHist()
比較兩個直方圖。

栗子:
Mat hsv, H;
cvtColor(image, hsv, CVBGR2HSV);
int planes[]=f0, 1g, hsize[] = f32, 32g;
calcHist(&hsv, 1, planes, Mat(), H, 2, hsize,0);
計算圖像的色調-飽和度直方圖。



sume
2013/1/5

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章