九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

CV參考手冊.doc

  • 資源ID:13542668       資源大?。?span id="24d9guoke414" class="font-tahoma">739KB        全文頁數(shù):127頁
  • 資源格式: DOC        下載積分:8積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要8積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

CV參考手冊.doc

CV 參考手冊HUNNISH 注:本翻譯是直接根據(jù) OpenCV Beta 4.0 版本的用戶手冊翻譯的,原文件是:<opencv_directory>/doc/ref/opencvref_cv.htm, 可以從 SOURCEFORG 上面的 OpenCV 項目下載,也可以直接從 阿須數(shù)碼 中下載:。翻譯中肯定有不少錯誤,另外也有些術(shù)語和原文語義理解不透導(dǎo)致翻譯不準(zhǔn)確或者錯誤,也請有心人賜教。圖像處理、結(jié)構(gòu)分析、運(yùn)動分析和對象跟蹤部分由R.Z.LIU翻譯,模式識別、照相機(jī)定標(biāo)與三維重建部分由H.M.ZHANG翻譯,全文由Y.C.WEI統(tǒng)一修改校正。 圖像處理 o 梯度, 邊緣和角點 o 采樣 差值和幾何變換 o 形態(tài)學(xué)操作 o 濾波和彩色變換 o 金字塔及其應(yīng)用 o 連接組件 o 圖像和輪廓矩 o 特殊圖像變換 o 直方圖 o 匹配 結(jié)構(gòu)分析 o 輪廓處理 o 計算幾何 o 平面劃分 運(yùn)動分析和對象跟蹤 o 背景統(tǒng)計量的累積 o 運(yùn)動模板 o 對象跟蹤 o 光流 o 預(yù)估器 模式識別 o 目標(biāo)檢測 照相機(jī)定標(biāo)和三維重建 o 照相機(jī)定標(biāo) o 姿態(tài)估計 o 極線幾何 函數(shù)列表 參考 圖像處理注意:本章描述圖像處理和分析的一些函數(shù)。其中大多數(shù)函數(shù)都是針對兩維象素數(shù)組的,這里,我們稱這些數(shù)組為“圖像”,但是它們不一定非得是IplImage 結(jié)構(gòu),也可以是CvMat或者CvMatND結(jié)構(gòu)。 梯度、邊緣和角點Sobel使用擴(kuò)展 Sobel 算子計算一階、二階、三階或混合圖像差分void cvSobel( const CvArr* src, CvArr* dst, int xorder, int yorder, int aperture_size=3 );src 輸入圖像. dst 輸出圖像. xorder x 方向上的差分階數(shù) yorder y 方向上的差分階數(shù) aperture_size 擴(kuò)展 Sobel 核的大小,必須是 1, 3, 5 或 7。 除了尺寸為 1, 其它情況下, aperture_size aperture_size 可分離內(nèi)核將用來計算差分。對 aperture_size=1的情況, 使用 3x1 或 1x3 內(nèi)核 (不進(jìn)行高斯平滑操作)。這里有一個特殊變量 CV_SCHARR (=-1),對應(yīng) 3x3 Scharr 濾波器,可以給出比 3x3 Sobel 濾波更精確的結(jié)果。Scharr 濾波器系數(shù)是: | -3 0 3|-10 0 10| -3 0 3|對 x-方向 以及轉(zhuǎn)置矩陣對 y-方向。 函數(shù) cvSobel 通過對圖像用相應(yīng)的內(nèi)核進(jìn)行卷積操作來計算圖像差分:dst(x,y) = dxorder+yodersrc/dxxorderdyyorder |(x,y)由于Sobel 算子結(jié)合了 Gaussian 平滑和微分,所以,其結(jié)果或多或少對噪聲有一定的魯棒性。通常情況,函數(shù)調(diào)用采用如下參數(shù) (xorder=1, yorder=0, aperture_size=3) 或 (xorder=0, yorder=1, aperture_size=3) 來計算一階 x- 或 y- 方向的圖像差分。第一種情況對應(yīng): |-1 0 1| |-2 0 2| |-1 0 1|核。第二種對應(yīng) |-1 -2 -1| | 0 0 0| | 1 2 1|or | 1 2 1| | 0 0 0| |-1 -2 -1|核的選則依賴于圖像原點的定義 (origin 來自 IplImage 結(jié)構(gòu)的定義)。由于該函數(shù)不進(jìn)行圖像尺度變換,所以和輸入圖像(數(shù)組)相比,輸出圖像(數(shù)組)的元素通常具有更大的絕對數(shù)值(譯者注:即象素的深度)。為防止溢出,當(dāng)輸入圖像是 8 位的,要求輸出圖像是 16 位的。當(dāng)然可以用函數(shù)函數(shù) cvConvertScale 或 cvConvertScaleAbs 轉(zhuǎn)換為 8 位的。除了 8-比特 圖像,函數(shù)也接受 32-位 浮點數(shù)圖像。所有輸入和輸出圖像都必須是單通道的,并且具有相同的圖像尺寸或者ROI尺寸。 Laplace計算圖像的 Laplacian變換void cvLaplace( const CvArr* src, CvArr* dst, int aperture_size=3 );src 輸入圖像. dst 輸出圖像. aperture_size 核大小 (與 cvSobel 中定義一樣). 函數(shù) cvLaplace 計算輸入圖像的 Laplacian變換,方法是先用 sobel 算子計算二階 x- 和 y- 差分,再求和:dst(x,y) = d2src/dx2 + d2src/dy2對 aperture_size=1 則給出最快計算結(jié)果,相當(dāng)于對圖像采用如下內(nèi)核做卷積:|0 1 0|1 -4 1|0 1 0|類似于 cvSobel 函數(shù),該函數(shù)也不作圖像的尺度變換,所支持的輸入、輸出圖像類型的組合和cvSobel一致。 Canny采用 Canny 算法做邊緣檢測void cvCanny( const CvArr* image, CvArr* edges, double threshold1, double threshold2, int aperture_size=3 );image 輸入圖像. edges 輸出的邊緣圖像 threshold1 第一個閾值 threshold2 第二個閾值 aperture_size Sobel 算子內(nèi)核大小 (見 cvSobel). 函數(shù) cvCanny 采用 CANNY 算法發(fā)現(xiàn)輸入圖像的邊緣而且在輸出圖像中標(biāo)識這些邊緣。threshold1和threshold2 當(dāng)中的小閾值用來控制邊緣連接,大的閾值用來控制強(qiáng)邊緣的初始分割。PreCornerDetect計算用于角點檢測的特征圖,void cvPreCornerDetect( const CvArr* image, CvArr* corners, int aperture_size=3 );image 輸入圖像. corners 保存候選角點的特征圖 aperture_size Sobel 算子的核大小(見cvSobel). 函數(shù) cvPreCornerDetect 計算函數(shù) Dx2Dyy+Dy2Dxx - 2DxDyDxy 其中 D? 表示一階圖像差分,D? 表示二階圖像差分。 角點被認(rèn)為是函數(shù)的局部最大值:/ 假設(shè)圖像格式為浮點數(shù)IplImage* corners = cvCloneImage(image);IplImage* dilated_corners = cvCloneImage(image);IplImage* corner_mask = cvCreateImage( cvGetSize(image), 8, 1 );cvPreCornerDetect( image, corners, 3 );cvDilate( corners, dilated_corners, 0, 1 );cvSubS( corners, dilated_corners, corners );cvCmpS( corners, 0, corner_mask, CV_CMP_GE );cvReleaseImage( &corners );cvReleaseImage( &dilated_corners );CornerEigenValsAndVecs計算圖像塊的特征值和特征向量,用于角點檢測void cvCornerEigenValsAndVecs( const CvArr* image, CvArr* eigenvv, int block_size, int aperture_size=3 );image 輸入圖像. eigenvv 保存結(jié)果的數(shù)組。必須比輸入圖像寬 6 倍。 block_size 鄰域大小 (見討論). aperture_size Sobel 算子的核尺寸(見 cvSobel). 對每個象素,函數(shù) cvCornerEigenValsAndVecs 考慮 block_size block_size 大小的鄰域 S(p),然后在鄰域上計算圖像差分的相關(guān)矩陣: | sumS(p)(dI/dx)2 sumS(p)(dI/dxdI/dy)|M = | | | sumS(p)(dI/dxdI/dy) sumS(p)(dI/dy)2 |然后它計算矩陣的特征值和特征向量,并且按如下方式(1, 2, x1, y1, x2, y2)存儲這些值到輸出圖像中,其中1, 2 - M 的特征值,沒有排序(x1, y1) - 特征向量,對 1(x2, y2) - 特征向量,對 2CornerMinEigenVal計算梯度矩陣的最小特征值,用于角點檢測void cvCornerMinEigenVal( const CvArr* image, CvArr* eigenval, int block_size, int aperture_size=3 );image 輸入圖像. eigenval 保存最小特征值的圖像. 與輸入圖像大小一致 block_size 鄰域大小 (見討論 cvCornerEigenValsAndVecs). aperture_size Sobel 算子的核尺寸(見 cvSobel). 當(dāng)輸入圖像是浮點數(shù)格式時,該參數(shù)表示用來計算差分固定的浮點濾波器的個數(shù). 函數(shù) cvCornerMinEigenVal 與 cvCornerEigenValsAndVecs 類似,但是它僅僅計算和存儲每個象素點差分相關(guān)矩陣的最小特征值,即前一個函數(shù)的 min(1, 2) FindCornerSubPix精確角點位置void cvFindCornerSubPix( const CvArr* image, CvPoint2D32f* corners, int count, CvSize win, CvSize zero_zone, CvTermCriteria criteria );image 輸入圖像. corners 輸入角點的初始坐標(biāo),也存儲精確的輸出坐標(biāo) count 角點數(shù)目 win 搜索窗口的一半尺寸。如果 win=(5,5) 那么使用 5*2+1 5*2+1 = 11 11 大小的搜索窗口 zero_zone 死區(qū)的一半尺寸,死區(qū)為不對搜索區(qū)的中央位置做求和運(yùn)算的區(qū)域。它是用來避免自相關(guān)矩陣出現(xiàn)的某些可能的奇異性。當(dāng)值為 (-1,-1) 表示沒有死區(qū)。 criteria 求角點的迭代過程的終止條件。即角點位置的確定,要么迭代數(shù)大于某個設(shè)定值,或者是精確度達(dá)到某個設(shè)定值。 criteria 可以是最大迭代數(shù)目,或者是設(shè)定的精確度,也可以是它們的組合。 函數(shù) cvFindCornerSubPix 通過迭代來發(fā)現(xiàn)具有子象素精度的角點位置,或如圖所示的放射鞍點(radial saddle points)。子象素級角點定位的實現(xiàn)是基于對向量正交性的觀測而實現(xiàn)的,即從中央點q到其鄰域點p 的向量和p點處的圖像梯度正交(服從圖像和測量噪聲)??紤]以下的表達(dá)式: i=DIpiT(q-pi)其中,DIpi表示在q的一個鄰域點pi處的圖像梯度,q的值通過最小化i得到。通過將i設(shè)為0,可以建立系統(tǒng)方程如下: sumi(DIpiDIpiT)q - sumi(DIpiDIpiTpi) = 0其中q的鄰域(搜索窗)中的梯度被累加。調(diào)用第一個梯度參數(shù)G和第二個梯度參數(shù)b,得到:q=G-1b該算法將搜索窗的中心設(shè)為新的中心q,然后迭代,直到找到低于某個閾值點的中心位置。 GoodFeaturesToTrack確定圖像的強(qiáng)角點void cvGoodFeaturesToTrack( const CvArr* image, CvArr* eig_image, CvArr* temp_image, CvPoint2D32f* corners, int* corner_count, double quality_level, double min_distance, const CvArr* mask=NULL );image 輸入圖像,8-位或浮點32-比特,單通道 eig_image 臨時浮點32-位圖像,尺寸與輸入圖像一致 temp_image 另外一個臨時圖像,格式與尺寸與 eig_image 一致 corners 輸出參數(shù),檢測到的角點 corner_count 輸出參數(shù),檢測到的角點數(shù)目 quality_level 最大最小特征值的乘法因子。定義可接受圖像角點的最小質(zhì)量因子。 min_distance 限制因子。得到的角點的最小距離。使用 Euclidian 距離 mask ROI:感興趣區(qū)域。函數(shù)在ROI中計算角點,如果 mask 為 NULL,則選擇整個圖像。 函數(shù) cvGoodFeaturesToTrack 在圖像中尋找具有大特征值的角點。該函數(shù),首先用cvCornerMinEigenVal 計算輸入圖像的每一個象素點的最小特征值,并將結(jié)果存儲到變量 eig_image 中。然后進(jìn)行非最大值抑制(僅保留3x3鄰域中的局部最大值)。下一步將最小特征值小于 quality_levelmax(eig_image(x,y) 排除掉。最后,函數(shù)確保所有發(fā)現(xiàn)的角點之間具有足夠的距離,(最強(qiáng)的角點第一個保留,然后檢查新的角點與已有角點之間的距離大于 min_distance )。采樣、差值和幾何變換InitLineIterator初始化線段迭代器int cvInitLineIterator( const CvArr* image, CvPoint pt1, CvPoint pt2, CvLineIterator* line_iterator, int connectivity=8 );image 帶采線段的輸入圖像. pt1 線段起始點 pt2 線段結(jié)束點 line_iterator 指向線段迭代器狀態(tài)結(jié)構(gòu)的指針 connectivity 被掃描線段的連通數(shù),4 或 8. 函數(shù) cvInitLineIterator 初始化線段迭代器,并返回兩點之間的象素點數(shù)目。兩個點必須在圖像內(nèi)。當(dāng)?shù)鞒跏蓟?,連接兩點的光柵線上所有點,都可以連續(xù)通過調(diào)用 CV_NEXT_LINE_POINT 來得到。線段上的點是使用 4連通或8連通利用 Bresenham 算法逐點計算的。例子:使用線段迭代器計算彩色線上象素值的和 CvScalar sum_line_pixels( IplImage* image, CvPoint pt1, CvPoint pt2 ) CvLineIterator iterator; int blue_sum = 0, green_sum = 0, red_sum = 0; int count = cvInitLineIterator( image, pt1, pt2, &iterator, 8 ); for( int i = 0; i < count; i+ ) blue_sum += 0; green_sum += 1; red_sum += 2; CV_NEXT_LINE_POINT(iterator); /* print the pixel coordinates: demonstrates how to calculate the coordinates */ int offset, x, y; /* assume that ROI is not set, otherwise need to take it into account. */ offset = - (uchar*)(image->imageData); y = offset/image->widthStep; x = (offset - y*image->widthStep)/(3*sizeof(uchar) /* size of pixel */); printf("(%d,%d)n", x, y ); return cvScalar( blue_sum, green_sum, red_sum ); SampleLine將光柵線讀入緩沖區(qū)int cvSampleLine( const CvArr* image, CvPoint pt1, CvPoint pt2, void* buffer, int connectivity=8 );image 帶采線段的輸入圖像 pt1 起點 pt2 終點 buffer 存儲線段點的緩存區(qū),必須有足夠大小來存儲點 max( |pt2.x-pt1.x|+1, |pt2.y-pt1.y|+1 ) :8連通情況下,或者 |pt2.x-pt1.x|+|pt2.y-pt1.y|+1 : 4連通情況下. connectivity 線段的連通方式, 4 or 8. 函數(shù) cvSampleLine 實現(xiàn)了線段迭代器的一個特殊應(yīng)用。它讀取由兩點 pt1 和 pt2 確定的線段上的所有圖像點,包括終點,并存儲到緩存中。GetRectSubPix從圖像中提取象素矩形,使用子象素精度void cvGetRectSubPix( const CvArr* src, CvArr* dst, CvPoint2D32f center );src 輸入圖像. dst 提取的矩形. center 提取的象素矩形的中心,浮點數(shù)坐標(biāo)。中心必須位于圖像內(nèi)部. 函數(shù) cvGetRectSubPix 從圖像 src 中提取矩形:dst(x, y) = src(x + center.x - (width(dst)-1)*0.5, y + center.y - (height(dst)-1)*0.5)其中非整數(shù)象素點坐標(biāo)采用雙線性差值提取。對多通道圖像,每個通道獨立單獨完成提取。盡管函數(shù)要求矩形的中心一定要在輸入圖像之中,但是有可能出現(xiàn)矩形的一部分超出圖像邊界的情況,這時,該函數(shù)復(fù)制邊界的模識(hunnish:即用于矩形相交的圖像邊界線段的象素來代替矩形超越部分的象素)。 GetQuadrangleSubPix提取象素四邊形,使用子象素精度void cvGetQuadrangleSubPix( const CvArr* src, CvArr* dst, const CvMat* map_matrix, int fill_outliers=0, CvScalar fill_value=cvScalarAll(0) );src 輸入圖像. dst 提取的四邊形. map_matrix 3 2 變換矩陣 A|b (見討論). fill_outliers 該標(biāo)志位指定是否對原始圖像邊界外面的象素點使用復(fù)制模式(fill_outliers=0)進(jìn)行差值或者將其設(shè)置為指定值(fill_outliers=1)。 fill_value 對超出圖像邊界的矩形象素設(shè)定的值(當(dāng) fill_outliers=1時的情況). 函數(shù) cvGetQuadrangleSubPix 以子象素精度從圖像 src 中提取四邊形,使用子象素精度,并且將結(jié)果存儲于 dst ,計算公式是:dst(x+width(dst)/2, y+height(dst)/2)= src( A11x+A12y+b1, A21x+A22y+b2),w其中 A和 b 均來自映射矩陣(譯者注:A, b為幾何形變參數(shù)) map_matrix | A11 A12 b1 |map_matrix = | | | A21 A22 b2 |其中在非整數(shù)坐標(biāo) A(x,y)T+b 的象素點值通過雙線性變換得到。多通道圖像的每一個通道都單獨計算.例子:使用 cvGetQuadrangleSubPix 進(jìn)行圖像旋轉(zhuǎn)#include "cv.h"#include "highgui.h"#include "math.h"int main( int argc, char* argv ) IplImage* src; /* the first command line parameter must be image file name */ if( argc=2 && (src = cvLoadImage(argv1, -1)!=0) IplImage* dst = cvCloneImage( src ); int delta = 1; int angle = 0; cvNamedWindow( "src", 1 ); cvShowImage( "src", src ); for(;) float m6; double factor = (cos(angle*CV_PI/180.) + 1.1)*3; CvMat M = cvMat( 2, 3, CV_32F, m ); int w = src->width; int h = src->height; m0 = (float)(factor*cos(-angle*2*CV_PI/180.); m1 = (float)(factor*sin(-angle*2*CV_PI/180.); m2 = w*0.5f; m3 = -m1; m4 = m0; m5 = h*0.5f; cvGetQuadrangleSubPix( src, dst, &M, 1, cvScalarAll(0); cvNamedWindow( "dst", 1 ); cvShowImage( "dst", dst ); if( cvWaitKey(5) = 27 ) break; angle = (angle + delta) % 360; return 0;Resize圖像大小變換void cvResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR );src 輸入圖像. dst 輸出圖像. interpolation 差值方法: CV_INTER_NN - 最近鄰差值, CV_INTER_LINEAR - 雙線性差值 (缺省使用) CV_INTER_AREA - 使用象素關(guān)系重采樣。當(dāng)圖像縮小時候,該方法可以避免波紋出現(xiàn)。當(dāng)圖像放大時,類似于 CV_INTER_NN 方法. CV_INTER_CUBIC - 立方差值. 函數(shù) cvResize 將圖像 src 改變尺寸得到與 dst 同樣大小。若設(shè)定 ROI,函數(shù)將按常規(guī)支持 ROI.WarpAffine對圖像做仿射變換void cvWarpAffine( const CvArr* src, CvArr* dst, const CvMat* map_matrix, int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS, CvScalar fillval=cvScalarAll(0) );src 輸入圖像. dst 輸出圖像. map_matrix 23 變換矩陣 flags 插值方法和以下開關(guān)選項的組合: CV_WARP_FILL_OUTLIERS - 填充所有縮小圖像的象素。如果部分象素落在輸入圖像的邊界外,那么它們的值設(shè)定為 fillval. CV_WARP_INVERSE_MAP - 指定 matrix 是輸出圖像到輸入圖像的反變換,因此可以直接用來做象素差值。否則, 函數(shù)從 map_matrix 得到反變換。 fillval 用來填充邊界外面的值 函數(shù) cvWarpAffine 利用下面指定的矩陣變換輸入圖像:dst(x&apos;,y&apos;)<-src(x,y)如果沒有指定 CV_WARP_INVERSE_MAP , (x&apos;,y&apos;)T=map_matrix(x,y,1)T+b ,否則, (x, y)T=map_matrix(x&apos;,y&apos,1)T+b函數(shù)與 cvGetQuadrangleSubPix 類似,但是不完全相同。 cvWarpAffine 要求輸入和輸出圖像具有同樣的數(shù)據(jù)類型,有更大的資源開銷(因此對小圖像不太合適)而且輸出圖像的部分可以保留不變。而 cvGetQuadrangleSubPix 可以精確地從8位圖像中提取四邊形到浮點數(shù)緩存區(qū)中,具有比較小的系統(tǒng)開銷,而且總是全部改變輸出圖像的內(nèi)容。 要變換稀疏矩陣,使用 cxcore 中的函數(shù) cvTransform 。2DRotationMatrix計算二維旋轉(zhuǎn)的仿射變換矩陣CvMat* cv2DRotationMatrix( CvPoint2D32f center, double angle, double scale, CvMat* map_matrix );center 輸入圖像的旋轉(zhuǎn)中心坐標(biāo) angle 旋轉(zhuǎn)角度(度)。正值表示逆時針旋轉(zhuǎn)(坐標(biāo)原點假設(shè)在左上角). scale 各項同性的尺度因子 map_matrix 輸出 23 矩陣的指針 函數(shù) cv2DRotationMatrix 計算矩陣: | (1-)*center.x - *center.y - | *center.x + (1-)*center.y where =scale*cos(angle), =scale*sin(angle)該變換并不改變原始旋轉(zhuǎn)中心點的坐標(biāo),如果這不是操作目的,則可以通過調(diào)整平移量改變其坐標(biāo)(譯者注:通過簡單的推導(dǎo)可知,放射變換的實現(xiàn)是首先將旋轉(zhuǎn)中心置為坐標(biāo)原點,再進(jìn)行旋轉(zhuǎn)和尺度變換,最后重新將坐標(biāo)原點設(shè)定為輸入圖像的左上角,這里的平移量是center.x, center.y).WarpPerspective對圖像進(jìn)行透視變換void cvWarpPerspective( const CvArr* src, CvArr* dst, const CvMat* map_matrix, int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS, CvScalar fillval=cvScalarAll(0) );src 輸入圖像. dst 輸出圖像. map_matrix 33 變換矩陣 flags 插值方法和以下開關(guān)選項的組合: CV_WARP_FILL_OUTLIERS - 填充所有縮小圖像的象素。如果部分象素落在輸入圖像的邊界外,那么它們的值設(shè)定為 fillval. CV_WARP_INVERSE_MAP - 指定 matrix 是輸出圖像到輸入圖像的反變換,因此可以直接用來做象素差值。否則, 函數(shù)從 map_matrix 得到反變換。 fillval 用來填充邊界外面的值 函數(shù) cvWarpPerspective 利用下面指定矩陣變換輸入圖像:dst(x&apos;,y&apos;)<-src(x,y)若指定 CV_WARP_INVERSE_MAP, (tx&apos;,ty&apos;,t)T=map_matrix(x,y,1)T+b否則, (tx, ty, t)T=map_matrix(x&apos;,y&apos,1)T+b要變換稀疏矩陣,使用 cxcore 中的函數(shù) cvTransform 。WarpPerspectiveQMatrix用4個對應(yīng)點計算透視變換矩陣CvMat* cvWarpPerspectiveQMatrix( const CvPoint2D32f* src, const CvPoint2D32f* dst, CvMat* map_matrix );src 輸入圖像的四邊形的4個點坐標(biāo) dst 輸出圖像的對應(yīng)四邊形的4個點坐標(biāo) map_matrix 輸出的 33 矩陣 函數(shù) cvWarpPerspectiveQMatrix 計算透視變換矩陣,使得:(tixi,tiyi,ti)T=matrix(xi,yi,1)T其中 dst(i)=(xi,yi), src(i)=(xi,yi), i=0.3.形態(tài)學(xué)操作CreateStructuringElementEx創(chuàng)建結(jié)構(gòu)元素IplConvKernel* cvCreateStructuringElementEx( int cols, int rows, int anchor_x, int anchor_y, int shape, int* values=NULL );cols 結(jié)構(gòu)元素的列數(shù)目 rows 結(jié)構(gòu)元素的行數(shù)目 anchor_x 錨點的相對水平偏移量 anchor_y 錨點的相對垂直便宜量 shape 結(jié)構(gòu)元素的形狀,可以是下列值: CV_SHAPE_RECT, 長方形元素; CV_SHAPE_CROSS, 交錯元素 a cross-shaped element; CV_SHAPE_ELLIPSE, 橢圓元素; CV_SHAPE_CUSTOM, 用戶自定義元素。這種情況下參數(shù) values 定義了 mask,即象素的那個鄰域必須考慮。 values 指向結(jié)構(gòu)元素的指針,它是一個平面數(shù)組,表示對元素矩陣逐行掃描。(非零點表示該點屬于結(jié)構(gòu)元)。如果指針為空,則表示平面數(shù)組中的所有元素都是非零的,即結(jié)構(gòu)元是一個長方形(該參數(shù)僅僅當(dāng)shape參數(shù)是 CV_SHAPE_CUSTOM 時才予以考慮)。 函數(shù) cv CreateStructuringElementEx 分配和填充結(jié)構(gòu) IplConvKernel, 它可作為形態(tài)操作中的結(jié)構(gòu)元素。ReleaseStructuringElement刪除結(jié)構(gòu)元素void cvReleaseStructuringElement( IplConvKernel* element );element 被刪除的結(jié)構(gòu)元素的指針 函數(shù) cvReleaseStructuringElement 釋放結(jié)構(gòu) IplConvKernel 。如果 *element 為 NULL, 則函數(shù)不作用。Erode使用任意結(jié)構(gòu)元素腐蝕圖像void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );src 輸入圖像. dst 輸出圖像. element 用于腐蝕的結(jié)構(gòu)元素。若為 NULL, 則使用 33 長方形的結(jié)構(gòu)元素 iterations 腐蝕的次數(shù) 函數(shù) cvErode 對輸入圖像使用指定的結(jié)構(gòu)元素進(jìn)行腐蝕,該結(jié)構(gòu)元素決定每個具有最小值象素點的鄰域形狀:dst=erode(src,element): dst(x,y)=min(x,y) in element)src(x+x,y+y)函數(shù)可能是本地操作,不需另外開辟存儲空間的意思。腐蝕可以重復(fù)進(jìn)行 (iterations) 次. 對彩色圖像,每個彩色通道單獨處理。Dilate使用任意結(jié)構(gòu)元素膨脹圖像void cvDilate( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );src 輸入圖像. dst 輸出圖像. element 用于膨脹的結(jié)構(gòu)元素。若為 NULL, 則使用 33 長方形的結(jié)構(gòu)元素 iterations 膨脹的次數(shù) 函數(shù) cvDilate 對輸入圖像使用指定的結(jié)構(gòu)元進(jìn)行膨脹,該結(jié)構(gòu)決定每個具有最小值象素點的鄰域形狀:dst=dilate(src,element): dst(x,y)=max(x,y) in element)src(x+x,y+y)函數(shù)支持(in-place)模式。膨脹可以重復(fù)進(jìn)行 (iterations) 次. 對彩色圖像,每個彩色通道單獨處理。MorphologyEx高級形態(tài)學(xué)變換void cvMorphologyEx( const CvArr* src, CvArr* dst, CvArr* temp, IplConvKernel* element, int operation, int iterations=1 );src 輸入圖像. dst 輸出圖像. temp 臨時圖像,某些情況下需要 element 結(jié)構(gòu)元素 operation 形態(tài)操作的類型:CV_MOP_OPEN - 開運(yùn)算CV_MOP_CLOSE - 閉運(yùn)算CV_MOP_GRADIENT - 形態(tài)梯度CV_MOP_TOPHAT - "頂帽"CV_MOP_BLACKHAT - "黑帽"iterations 膨脹和腐蝕次數(shù). 函數(shù) cvMorphologyEx 在膨脹和腐蝕基本操作的基礎(chǔ)上,完成一些高級的形態(tài)變換:開運(yùn)算:dst=open(src,element)=dilate(erode(src,element),element)閉運(yùn)算:dst=close(src,element)=erode(dilate(src,element),element)形態(tài)梯度dst=morph_grad(src,element)=dilate(src,element)-erode(src,element)"頂帽":dst=tophat(src,element)=src-open(src,element)"黑帽":dst=blackhat(src,element)=close(src,element)-src臨時圖像 temp 在形態(tài)梯度以及對“頂帽”和“黑帽”操作時的 in-place 模式下需要。 濾波器與彩色變換Smooth各種方法的圖像平滑void cvSmooth( const CvArr* src, CvArr* dst, int smoothtype=CV_GAUSSIAN, int param1=3, int param2=0, double param3=0 );src 輸入圖像. dst 輸出圖像. smoothtype 平滑方法: CV_BLUR_NO_SCALE (簡單不帶尺度變換的模糊) - 對每個象素的 param1param2 領(lǐng)域求和。如果鄰域大小是變化的,可以事先利用函數(shù) cvIntegral 計算積分圖像。 CV_BLUR (simple blur) - 對每個象素param1param2鄰域 求和并做尺度變換 1/(param1param2). CV_GAUSSIAN (gaussian blur) - 對圖像進(jìn)行核大小為 param1param2 的高斯卷積 CV_MEDIAN (median blur) - 對圖像進(jìn)行核大小為param1param1 的中值濾波 (i.e. 鄰域是方的). CV_BILATERAL (雙向濾波) - 應(yīng)用雙向 3x3 濾波,彩色 sigma=param1,空間 sigma=param2. 關(guān)于雙向濾波,可參考 param1 平滑操作的第一個參數(shù). param2 平滑操作的第二個參數(shù). 對于簡單/非尺度變換的高斯模糊的情況,如果param2的值 為零,則表示其被設(shè)定為param1。 param3 對應(yīng)高斯參數(shù)的 Gaussian sigma (標(biāo)準(zhǔn)差). 如果為零,則標(biāo)準(zhǔn)差由下面的核尺寸計算: sigma = (n/2 - 1)*0.3 + 0.8, 其中 n=param1 對應(yīng)水平核, n=param2 對應(yīng)垂直核. 對小的卷積核 (33 to 77) 使用如上公式所示的標(biāo)準(zhǔn) sigma 速度會快。如果 param3 不為零,而 param1 和 param2 為零,則核大小有 sigma 計算 (以保證足夠精確的操作). 函數(shù) cvSmooth 可使用上面任何一種方法平滑圖像。每一種方法都有自己的特點以及局限。沒有縮放的圖像平滑僅支持單通道圖像,并且支持8位到16位的轉(zhuǎn)換(與cvSobel和cvaplace相似)和32位浮點數(shù)到32位浮點數(shù)的變換格式。簡單模糊和高斯模糊支持 1- 或 3-通道, 8-比特 和 32-比特 浮點圖像。這兩種方法可以(in-place)方式處理圖像。中值和雙向濾波工作于 1- 或 3-通道, 8-位圖像,但是不能以 in-place 方式處理圖像.Filter2D對圖像做卷積void cvFilter2D( const CvArr* src, CvArr* dst, const CvMat* kernel, CvPoint anchor=cvPoint(-1,-1);#define cvConvolve2D cvFilter2Dsrc 輸入圖像. dst 輸出圖像. kernel 卷積核, 單通道浮點矩陣. 如果想要應(yīng)用不同的核于不同的通道,先用 cvSplit 函數(shù)分解圖像到單個色彩通道上,然后單獨處理。 anchor 核的錨點表示一個被濾波的點在核內(nèi)的位置。 錨點應(yīng)該處于核內(nèi)部。缺省值 (-1,-1) 表示錨點在核中心。 函數(shù) cvFilter2D 對圖像進(jìn)行線性濾波,支持 In-place 操作。當(dāng)核運(yùn)算部分超出輸入圖像時,函數(shù)從最近鄰的圖像內(nèi)部象素差值得到邊界外面的象素值。 Integral計算積分圖像void cvIntegral( const CvArr* image, CvArr* sum, CvArr* sqsum=NULL, CvArr* tilted_sum=NULL );image 輸入圖像, WH, 單通道,8位或浮點 (32f 或 64f). sum 積分圖像, W+1H+1(譯者注:原文的公式應(yīng)該寫成(W+1)(H+1),避免誤會), 單通道,32位整數(shù)或 double 精度的浮點數(shù)(64f). sqsum 對象素值平方的積分圖像,W+1H+1(譯者注:原文的公式應(yīng)該寫成(W+1)(H+1),避免誤會), 單通道,32位整數(shù)或 double 精度的浮點數(shù) (64f). tilted_sum 旋轉(zhuǎn)45度的積分圖像,單通道,32位整數(shù)或 double 精度的浮點數(shù) (64f). 函數(shù) cvIntegral 計算一次或高次積分圖像:sum(X,Y)=sumx<X,y<Yimage(x,y)sqsum(X,Y)=sumx<X,y<Yimage(x,y)2tilted_sum(X,Y)=sumy<Y,abs(x-X)<yimage(x,y)利用積分圖像,可以計算在某象素的上右方的或者旋轉(zhuǎn)的矩形區(qū)域中進(jìn)行求和、求均值以及標(biāo)準(zhǔn)方差的計算,并且保證運(yùn)算的復(fù)雜度為O(1)。例如:sumx1<=x<x2,y1<=y<y2image(x,y)=sum(x2,y2)-sum(x1,y2)-sum(x2,y1)+sum(x1,x1)因此可以在變化的窗口內(nèi)做快速平滑或窗口相關(guān)等操作。 CvtColor色彩空間轉(zhuǎn)換void cvCvtColor( const CvArr* src, CvArr* dst, int code );src 輸入的 8-比特 或浮點圖像. dst 輸出的 8-比特 或浮點圖像. code 色彩空間轉(zhuǎn)換,通過定義 CV_<src_color_space>2<dst_color_space> 常數(shù) (見下面). 函數(shù) cvCvtColor 將輸入圖像從一個色彩空間轉(zhuǎn)換為另外一個色彩空間。函數(shù)忽略 IplImage 頭中定義的 colorModel 和 channelSeq 域,所以輸入圖像的色彩空間應(yīng)該正確指定 (包括通道的順序,對RGB空間而言,BGR 意味著布局為 B0 G0 R0 B1 G1 R1 . 層疊的 24-位格式,而 RGB 意味著布局為 R0 G0 B0 R1 G1 B1 . 層疊的24-位格式. 函數(shù)做如下變換: RGB 空間內(nèi)部的變換,如增加/刪除 alpha 通道,反相通道順序,到16位 RGB彩色或者15位RGB彩色的正逆轉(zhuǎn)換(Rx5:Gx6:Rx5),以及到灰度圖像的正逆轉(zhuǎn)換,使用: RGBA->Gray: Y=0.212671*R + 0.715160*G + 0.072169*B + 0*A Gray->RGBA: R=Y G=Y B=Y A=0所有可能的圖像色彩空間的相互變換公式列舉如下: RGB<=>XYZ (CV_BGR2XYZ, CV_RGB2XYZ, CV_XYZ2BGR, CV_XYZ2RGB): |X| |0.412411 0.357585 0.180454| |R| |Y| = |0.212649 0.715169 0.072182|*|G| |Z| |0.019332 0.119195 0.950390| |B| |R| | 3.240479 -1.53715 -0.498535| |X| |G| = |-0.969256 1.875991 0.041556|*|Y| |B| | 0.055648 -0.204043 1.057311| |Z| RGB<=>YCrCb (CV_BGR2YCrCb, CV_RGB2YCrCb, CV_YCrCb2BGR, CV_YCrCb2RGB) Y=0.299*R + 0.587*G + 0.114*B Cr=(R-Y)*0.713 + 128 Cb=(B-Y)*0.564 + 128 R=Y + 1.403*(Cr - 128) G=Y - 0.344*(Cr - 128) - 0.714*(Cb - 128) B=Y + 1.773*(Cb - 128) RGB=>HSV (CV_BGR2HSV,CV_RGB2HSV) V=max(R,G,B) S=(V-min(R,G,B)*255/V if V!=0, 0 otherwise (G - B)*60/S, if V=R H= 180+(B - R)*60/S, if V=G 240+(R -

注意事項

本文(CV參考手冊.doc)為本站會員(小**)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!