![opencv中文手冊(cè)模版_第1頁](http://file4.renrendoc.com/view/43ab4d0363da00cd2bb8ba56bd713542/43ab4d0363da00cd2bb8ba56bd7135421.gif)
![opencv中文手冊(cè)模版_第2頁](http://file4.renrendoc.com/view/43ab4d0363da00cd2bb8ba56bd713542/43ab4d0363da00cd2bb8ba56bd7135422.gif)
![opencv中文手冊(cè)模版_第3頁](http://file4.renrendoc.com/view/43ab4d0363da00cd2bb8ba56bd713542/43ab4d0363da00cd2bb8ba56bd7135423.gif)
![opencv中文手冊(cè)模版_第4頁](http://file4.renrendoc.com/view/43ab4d0363da00cd2bb8ba56bd713542/43ab4d0363da00cd2bb8ba56bd7135424.gif)
![opencv中文手冊(cè)模版_第5頁](http://file4.renrendoc.com/view/43ab4d0363da00cd2bb8ba56bd713542/43ab4d0363da00cd2bb8ba56bd7135425.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
名目1梯度、邊緣和角點(diǎn)o1.1Sobelo1.2Laplaceo1.3Cannyo1.4PreCornerDetecto1.5CornerEigenValsAndVecso1.6CornerMinEigenValo1.7CornerHarriso1.8FindCornerSubPixo1.9GoodFeaturesToTrack2采樣、插值和幾何變換o2.1InitLineIteratoro2.2SampleLineo2.3GetRectSubPixo2.4GetQuadrangleSubPixo2.5Resizeo2.6WarpAffineo2.7GetAffineTransformo2.82DRotationMatrixo2.9WarpPerspectiveo2.10WarpPerspectiveQMatrixo2.11GetPerspectiveTransformo2.12Remapo2.13LogPolar3形態(tài)學(xué)操作o3.1CreateStructuringElementExo3.2ReleaseStructuringElemento3.3Erodeo3.4Dilateo3.5MorphologyEx4濾波器與顏色空間變換o4.1Smootho4.2Filter2Do4.3CopyMakeBordero4.4Integralo4.5CvtColoro4.6Thresholdo4.7AdaptiveThreshold5金字塔及其應(yīng)用5.1PyrDown5.2PyrUp6連接部件o6.1CvConnectedCompo6.2FloodFillo6.3FindContourso6.4StartFindContourso6.5FindNextContouro6.6SubstituteContouro6.7EndFindContourso6.8PyrSegmentationo6.9PyrMeanShiftFilteringo6.10Watershed7圖像與輪廓矩o7.1Momentso7.2GetSpatialMomento7.3GetCentralMomento7.4GetNormalizedCentralMomento7.5GetHuMoments8特別圖像變換o8.1HoughLineso8.2HoughCircleso8.3DistTransformo8.4Inpainto9.1CvHistogramo9.2CreateHisto9.1CvHistogramo9.2CreateHisto9.3SetHistBinRangeso9.4ReleaseHisto9.5ClearHisto9.6MakeHistHeaderForArrayo9.7QueryHistValue_1Do9.8GetHistValue_1Do9.9GetMinMaxHistValueo9.10NormalizeHisto9.11ThreshHisto9.12CompareHisto9.13CopyHisto9.14CalcHisto9.15CalcBackProjecto9.16CalcBackProjectPatcho9.17CalcProbDensityo9.18EqualizeHist匹配o10.1MatchTemplateo10.2MatchShapes10o 10.3CalcEMD2梯度、邊緣和角點(diǎn)SobelSobel算子計(jì)算一階、二階、三階或混合圖像差分voidcvSobel(constCvArr*src,CvArr*dst,intxorder,intyorder,intaperture_size=3);srcdst
輸入圖像.輸出圖像.xorderxyorderyaperture_size擴(kuò)展Sobel核的大小,必需是1,3,5或7。除了尺寸為1,其它狀況下,aperture_size×aperture_size可分別內(nèi)核將用來計(jì)算差分。對(duì)aperture_size=13x11x3內(nèi)核〔不進(jìn)展高斯平滑操作〕。這里有一個(gè)特別變量CV_SCHARR(=-1),對(duì)應(yīng)3x3Scharr濾Scharr濾波器系數(shù)是:x-方向或矩陣轉(zhuǎn)置后對(duì)y-方向。cvSobel通過對(duì)圖像用相應(yīng)的內(nèi)核進(jìn)展卷積操作來計(jì)算圖像差分:平滑和微分,所以,其結(jié)果或多或少對(duì)噪聲有肯定的魯棒性。通常狀況,函數(shù)調(diào)用承受如下參數(shù)(xorder=1,yorder=0,aperture_size=3)或(xorder=0,yorder=1,aperture_size=3)來計(jì)算一階x-y-方向的圖像差分。第一種狀況對(duì)應(yīng):核。其次種對(duì)應(yīng):或者核的選則依靠于圖像原點(diǎn)的定義(origin來自IplImage〔譯者注:即像素的位深〕。為防止溢出,當(dāng)輸入圖像8位的,要求輸出圖像是16位的。固然可以用函數(shù)cvConvertScale或cvConvertScaleAbs轉(zhuǎn)換為88-32-位浮點(diǎn)ROILaplaceLaplacian變換voidcvLaplace(constCvArr*src,CvArr*dst,intaperture_size=3);srcdst
輸入圖像.輸出圖像.aperture_size核大小(與cvSobel中定義一樣).Laplaciansobel算子計(jì)x-和y-差分,再求和:aperture_size=1cvSobelcvSobelCannyCanny算法做邊緣檢測(cè)voidcvCanny(constCvArr*image,CvArr*edges,doublethreshold1,doublethreshold2,intaperture_size=3);imageedges
單通道輸入圖像.單通道存儲(chǔ)邊緣的輸出圖像threshold1threshold2aperture_sizeSobel算子內(nèi)核大小(見cvSobel).cvCanny承受CANNY算法覺察輸入圖像的邊緣而且在輸出圖像中標(biāo)識(shí)這用來掌握強(qiáng)邊緣的初始分割。留意事項(xiàng):cvCanny只承受單通道圖像作為輸入。opencv在OpenCVcannyPreCornerDetect計(jì)算用于角點(diǎn)檢測(cè)的特征圖,voidcvPreCornerDetect(constCvArr*image,CvArr*corners,intaperture_size=3);image輸入圖像.cornersaperture_sizecvPreCornerDetect計(jì)算函數(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計(jì)算圖像塊的特征值和特征向量,用于角點(diǎn)檢測(cè)voidcvCornerEigenValsAndVecs(constCvArr*image,CvArr*eigenvv,intblock_size,intaperture_size=3);image輸入圖像.eigenvv6block_sizeaperture_sizeSobel算子的核尺寸(見cvSobel).考慮block_sizeblock_sizeS(p),然后在鄰域上計(jì)算圖像差分的相關(guān)矩陣:然后它計(jì)算矩陣的特征值和特征向量,并且按如下方式(λ1,λ2,x1,y1,x2,y2)存儲(chǔ)這些值到輸出圖像中,其中λ1,λ2-M的特征值,沒有排序(x1,y1)-特征向量,對(duì)λ1(x2,y2)-特征向量,對(duì)λ2CornerMinEigenVal計(jì)算梯度矩陣的最小特征值,用于角點(diǎn)檢測(cè)voidcvCornerMinEigenVal(constCvArr*image,CvArr*eigenval,intblock_size,intaperture_size=3);imageeigenvalblock_sizecvCornerEigenValsAndVecs).aperture_sizeSobelcvSobel).表示用來計(jì)算差分固定的浮點(diǎn)濾波器的個(gè)數(shù).cvCornerMinEigenValcvCornerEigenValsAndVecs計(jì)算和存儲(chǔ)每個(gè)象素點(diǎn)差分相關(guān)矩陣的最小特征值,即前一個(gè)函數(shù)的min(λ1,λ2)CornerHarris〔Harris〕角點(diǎn)檢測(cè)voidcvCornerHarris(constCvArr*image,CvArr*harris_responce,intblock_size,intaperture_size=3,doublek=0.04);imageharris_responceresponcesblock_size〕。aperture_sizeSobel〔cvSobel〕時(shí),該參數(shù)表示用來計(jì)算差分固定的浮點(diǎn)濾波器的個(gè)數(shù)。kharris檢測(cè)器的自由參數(shù)。參見下面的公式。函數(shù)cvCornerHarris對(duì)輸入圖像進(jìn)展HarriscvCornerMinEigenVal和cvCornerEigenValsAndVecs。對(duì)每個(gè)像素,在2*2〔或相關(guān)異變矩陣〕M。然后,將det(M)-k*trace(M)2〔2〕保存到輸出圖像中。輸入圖像中的角點(diǎn)在輸出圖像中由局部最大值表示。FindCornerSubPix準(zhǔn)確角點(diǎn)位置voidcvFindCornerSubPix(constCvArr*image,CvPoint2D32f*corners,intcount,CvSizewin,CvSizezero_zone,CvTermCriteriacriteria);image輸入圖像.corners輸入角點(diǎn)的初始坐標(biāo),也存儲(chǔ)準(zhǔn)確的輸出坐標(biāo)countwin
角點(diǎn)數(shù)目那么使用5*2+15*2+11111大小的搜尋窗口zero_zone用來避開自相關(guān)矩陣消滅的某些可能的奇異性。當(dāng)值為(-1,-1)表示沒有死區(qū)。criteriacriteria或者是設(shè)定的準(zhǔn)確度,也可以是它們的組合。cvFindCornerSubPix的放射鞍點(diǎn)〔radialsaddlepoints〕。子象素級(jí)角點(diǎn)定位的實(shí)現(xiàn)是基于對(duì)向量正交性的觀測(cè)而實(shí)現(xiàn)的,即從中心點(diǎn)q〔聽從圖像和測(cè)量噪聲〕??紤]以下的表達(dá)式:εi=DIpiT?(q-pi)pi,qεiεi0,可以建立系統(tǒng)方程如下:sumi(DIpi?DIpiT)?q-sumi(DIpi?DIpiT?pi)=0q〔搜尋窗Gb,得到:q=G-1?b然后迭代,直到找到低于某個(gè)閾值點(diǎn)的中心位置。GoodFeaturesToTrack確定圖像的強(qiáng)角點(diǎn)constCvArr*image,CvArr*eig_image,CvArr*temp_image,image
CvPoint2D32f*corners,int*corner_count,doublemin_distance,constCvArr*mask=NULL);輸入圖像,832-比特,單通道eig_image32-位圖像,尺寸與輸入圖像全都temp_imageeig_imagecornerscorner_countquality_levelmin_distance限制因子。得到的角點(diǎn)的最小距離。使用Euclidian距離mask
ROI:ROImask為NULL,則選擇0,表示計(jì)算該點(diǎn)。cvGoodFeaturesToTrack在圖像中查找具有大特征值的角點(diǎn)。該函數(shù),首先用cvCornerMinEigenVal計(jì)算輸入圖像的每一個(gè)象素點(diǎn)的最小特征值,并將eig_image中。然后進(jìn)展非最大值抑制〔3x3局部最大值quality_level?max(eig_image(x,y))最強(qiáng)的角點(diǎn)第一個(gè)保存,然后檢查的角點(diǎn)與已有角點(diǎn)之間的距離大于min_distance〕。采樣、插值和幾何變換InitLineIterator初始化線段迭代器intcvInitLineIterator(constCvArr*image,CvPointpt1,CvPointpt2,CvLineIterator*line_iterator,intconnectivity=8);imagept1pt2
線段起始點(diǎn)線段完畢點(diǎn)line_iteratorconnectivity被掃描線段的連通數(shù),4或8.cvInitLineIterator連續(xù)通過調(diào)用CV_NEXT_LINE_POINT來得到。線段上的點(diǎn)是使用4-連通或8-Bresenham算法逐點(diǎn)計(jì)算的。例子:使用線段迭代器計(jì)算彩色線上象素值的和CvScalarsum_line_pixels(IplImage*image,CvPointpt1,CvPointpt2){CvLineIteratoriterator;intblue_sum=0,green_sum=0,red_sum=0;intcount=cvInitLineIterator(image,pt1,pt2,&iterator,8);for(inti=0;i<count;i++){blue_sum+=iterator.ptr[0];green_sum+=iterator.ptr[1];red_sum+=iterator.ptr[2];CV_NEXT_LINE_POINT(iterator);coordinates:demonstrateshowtocalculatethecoordinates*/{intoffset,x,y;/*assumethatROIisnotset,otherwiseneedtotakeitintoaccount.*/offset=iterator.ptr-(uchar*)(image->imageData);y=offset/image->widthStep;x=(offset-y*image->widthStep)/(3*sizeof(uchar)/*sizeofpixel*/);printf(“(%d,%d)\n“,x,y);}}returncvScalar(blue_sum,green_sum,red_sum);}SampleLine將圖像上某一光柵線上的像素?cái)?shù)據(jù)讀入緩沖區(qū)intcvSampleLine(constCvArr*image,CvPointpt1,CvPointpt2,void*buffer,intconnectivity=8);image輸入圖像pt1pt2
buffermax(|pt2.x-pt1.x|+1,|pt2.y-pt1.y|+1):8-連通狀況下,或者|pt2.x-pt1.x|+|pt2.y-pt1.y|+14-連通狀況下.connectivity線段的連通方式,4or8.cvSampleLinept1和pt2兩點(diǎn)確定的線段上的全部圖像點(diǎn),包括終點(diǎn),并存儲(chǔ)到緩存中。GetRectSubPix從圖像中提取象素矩形,使用子象素精度voidcvGetRectSubPix(constCvArr*src,CvArr*dst,CvPoint2D32fcenter);srcdst
輸入圖像.提取的矩形.center提取的象素矩形的中心,浮點(diǎn)數(shù)坐標(biāo)。中心必需位于圖像內(nèi)部.cvGetRectSubPix從圖像src中提取矩形:dst(x,y)=src(x+center.x-(width(dst)-1)*0.5,y+center.y-(height(dst)-1)*0.5)〔hunnish:于矩形相交的圖像邊界限段的象素來代替矩形超越局部的象素〕。GetQuadrangleSubPix提取象素四邊形,使用子象素精度voidcvGetQuadrangleSubPix(constCvArr*src,CvArr*dst,constCvMat*map_matrix);srcdst
輸入圖像.提取的四邊形.map_matrix3×2變換矩陣[A|b]〔見爭(zhēng)論〕.cvGetQuadrangleSubPixsrc象素精度,并且將結(jié)果存儲(chǔ)于dst,計(jì)算公式是:
x+A
y+b,A21x+2
11 12 1Ab均來自映射矩陣(譯者注:A,b其中在非整數(shù)坐標(biāo) 的象素點(diǎn)值通過雙線性變換得到。當(dāng)函〔replicationbordermode〕恢復(fù)出所需的值。多通道圖像的每一個(gè)通道都單獨(dú)計(jì)算。cvGetQuadrangleSubPix#include“cv.h“#include“highgui.h“#include“math.h“intmain(intargc,char**argv){IplImage*src;/*thefirstcommandlineparametermustbeimagefilename*/if(argc==2&&(src=cvLoadImage(argv[1],-1))!=0){IplImage*dst=cvCloneImage(src);intdelta=1;intangle=0;cvNamedWindow(“src“,1);cvShowImage(“src“,src);for(;;){floatm[6];doublefactor=(cos(angle*CV_PI/180.)+1.1)*3;CvMatintwinthM===cvMat(2,3,CV_32F,m);src->width;src->height;m[0]=(float)(factor*cos(-angle*2*CV_PI/180.));m[1]=(float)(factor*sin(-angle*2*CV_PI/180.));m[2]=w*0.5f;m[3]=-m[1];m[4]=m[0];m[5]=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;}}return0;}Resize圖像大小變換voidcvResize(constCvArr*src,CvArr*dst,intinterpolation=CV_INTER_LINEAR);srcdst
輸入圖像.輸出圖像.interpolation插值方法:CV_INTER_NN-最近鄰插值,CV_INTER_LINEARCV_INTER_AREA-使用象素關(guān)系重采樣。當(dāng)圖像縮小時(shí)候,該方法CV_INTER_NNCV_INTER_CUBIC-立方插值.cvResizesrcdstROI,函數(shù)ROI.WarpAffine對(duì)圖像做仿射變換constCvArr*src,CvArr*dst,constCvMat*map_matrix,intflags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,CvScalarfillval=cvScalarAll(0));srcdst
map_matrix2×3變換矩陣flags
插值方法和以下開關(guān)選項(xiàng)的組合:CV_WARP_FILL_OUTLIERS素落在輸入圖像的邊界外,那么它們的值設(shè)定為fillval.CV_WARP_INVERSE_MAPmap_matrix的反變換,因此可以直接用來做象素插值。否則,函數(shù)從map_matrix得到反變換。fillval用來填充邊界外面的值cvWarpAffine利用下面指定的矩陣變換輸入圖像:假設(shè)沒有指定CV_WARP_INVERSE_MAP,否則,cvGetQuadrangleSubPix類似,但是不完全一樣。cvWarpAffine要求〔因此對(duì)小圖像不太合適〕而且輸出圖像的局部可以保存不變。而cvGetQuadrangleSubPix可以準(zhǔn)確是全部轉(zhuǎn)變輸出圖像的內(nèi)容。要變換稀疏矩陣,使用cxcore中的函數(shù)cvTransform。GetAffineTransform由三對(duì)點(diǎn)計(jì)算仿射變換CvMat*cvGetAffineTransform(constCvPoint2D32f*src,constCvPoint2D32f*dst,CvMat*map_matrix);srcdst
輸入圖像的三角形頂點(diǎn)坐標(biāo)。輸出圖像的相應(yīng)的三角形頂點(diǎn)坐標(biāo)。map_matrix指向2×3輸出矩陣的指針。函數(shù)cvGetAffineTransform計(jì)算滿足以下關(guān)系的仿射變換矩陣:i i i i2DRotationMatrix計(jì)算二維旋轉(zhuǎn)的仿射變換矩陣CvMat*cv2DRotationMatrix(CvPoint2D32fcenter,doubleangle,doublescale,CvMat*map_matrix);center輸入圖像的旋轉(zhuǎn)中心坐標(biāo)anglescale
〔度〕。正值表示逆時(shí)針旋轉(zhuǎn)(坐標(biāo)原點(diǎn)假設(shè)在左上角).各項(xiàng)同性的尺度因子map_matrix輸出2×3矩陣的指針cv2DRotationMatrix計(jì)算矩陣:[ αβ|(1-α)*center.x-β*center.y][-βα|β*center.x+(1-α)*center.y]whereα=scale*cos(angle),β=scale*sin(angle)平移量轉(zhuǎn)變其坐標(biāo)(譯者注:通過簡潔的推導(dǎo)可知,仿射變換的實(shí)現(xiàn)是首先將旋center.x,center.y).WarpPerspective對(duì)圖像進(jìn)展透視變換voidcvWarpPerspective(constCvArr*src,CvArr*dst,constCvMat*map_matrix,intflags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,CvScalarfillval=cvScalarAll(0));srcdst
map_matrix3×3變換矩陣flags
插值方法和以下開關(guān)選項(xiàng)的組合:CV_WARP_FILL_OUTLIERS素落在輸入圖像的邊界外,那么它們的值設(shè)定為fillval.CV_WARP_INVERSE_MAP-指定matrix是輸出圖像到輸入圖像的反map_matrix得到反變換。fillval用來填充邊界外面的值cvWarpPerspective利用下面指定矩陣變換輸入圖像:假設(shè)沒有指定CV_WARP_INVERSE_MAP,,否則,要變換稀疏矩陣,使用cxcore中的函數(shù)cvTransform。WarpPerspectiveQMatrix4CvMat*cvWarpPerspectiveQMatrix(constCvPoint2D32f*src,constCvPoint2D32f*dst,CvMat*map_matrix);srcdst
輸入圖像的四邊形的4個(gè)點(diǎn)坐標(biāo)輸出圖像的對(duì)應(yīng)四邊形的4個(gè)點(diǎn)坐標(biāo)map_matrix輸出的3×3矩陣cvWarpPerspectiveQMatrix(tix”i,tiy”i,ti)T=matrix?(xi,yi,1)Tdst(i)=(x”i,y”i),src(i)=(xi,yi),i=0..3.GetPerspectiveTransform由四對(duì)點(diǎn)計(jì)算透射變換CvMat*cvGetPerspectiveTransform(constCvPoint2D32f*src,constCvPoint2D32f*dst,CvMat*map_matrix);#definecvWarpPerspectiveQMatrixcvGetPerspectiveTransformsrcdst
輸入圖像的四邊形頂點(diǎn)坐標(biāo)。輸出圖像的相應(yīng)的四邊形頂點(diǎn)坐標(biāo)。map_matrix指向3×3輸出矩陣的指針。函數(shù)cvGetPerspectiveTransform計(jì)算滿足以下關(guān)系的透射變換矩陣:i i i iRemap對(duì)圖像進(jìn)展一般幾何變換voidcvRemap(constCvArr*src,CvArr*dst,constCvArr*mapx,constCvArr*mapy,intflags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,CvScalarfillval=cvScalarAll(0));srcdstmapxmapyflags
插值方法和以下開關(guān)選項(xiàng)的組合:CV_WARP_FILL_OUTLIERS象素落在變換后的邊界外,那么它們的值設(shè)定為fillval。fillval用來填充邊界外面的值.cvRemap利用下面指定的矩陣變換輸入圖像:dst(x,y)<-src(mapx(x,y),mapy(x,y))〔由用戶指定,譯者注:同cvResize〕來計(jì)算非整數(shù)坐標(biāo)的像素值。LogPolar把圖像映射到極指數(shù)空間voidcvLogPolar(constCvArr*src,CvArr*dst,CvPoint2D32fcenter,doubleM,intflags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS);srcdst
center變換的中心,輸出圖像在這里最準(zhǔn)確。Mflags
CV_WARP_FILL_OUTLIERS外點(diǎn)對(duì)應(yīng)的,則置零。map_matrix逆變換。fillval用于填充外點(diǎn)的值。(CV_WARP_INVERSE_MAP未置位):dst(phi,rho)<-src(x,y)(CV_WARP_INVERSE_MAP置位):dst(x,y)<-src(phi,rho),這里,rho=M*log(sqrt(x2+y2))phi=atan(y/x)變換不變模板匹配。Example.Log-polartransformation.#include<cv.h>#include<highgui.h>intmain(intargc,char**argv){IplImage*src;if(argc==2&&(src=cvLoadImage(argv[1],1)!=0){IplImage*dst=cvCreateImage(cvSize(256,256),8,3);IplImage*src2=cvCreateImage(cvGetSize(src),8,3);cvLogPolar(src,dst,cvPoint2D32f(src->width/2,src->height/2),40,CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS);cvLogPolar(dst,src2,cvPoint2D32f(src->width/2,src->height/2),40,CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS+CV_WARP_INVERSE_MAP);cvNamedWindow(“l(fā)og-polar“,1);cvShowImage(“l(fā)og-polar“,dst);cvNamedWindow(“inverselog-polar“,1);cvShowImage(“inverselog-polar“,src2);cvWaitKey;}return0;}Andthisiswhattheprogramdisplayswhenopencv/samples/c/fruits.jpgispassedtoit形態(tài)學(xué)操作CreateStructuringElementEx創(chuàng)立構(gòu)造元素IplConvKernel*cvCreateStructuringElementEx(intcols,introws,intanchor_x,intanchor_y,intshape,int*values=NULL);colsrows
構(gòu)造元素的列數(shù)目構(gòu)造元素的行數(shù)目anchor_xanchor_y錨點(diǎn)的相對(duì)垂直偏移量shape
構(gòu)造元素的外形,可以是以下值:CV_SHAPE_RECT,長方形元素;CV_SHAPE_CROSS,穿插元素across-shapedelement;CV_SHAPE_ELLIPSE,橢圓元素;CV_SHAPE_CUSTOM,values了mask,即象素的那個(gè)鄰域必需考慮。values零點(diǎn)表示該點(diǎn)屬于構(gòu)造元)。假設(shè)指針為空,則表示平面數(shù)組中的全部元shapeCV_SHAPE_CUSTOM時(shí)才予以考慮)。cvCreateStructuringElementExIplConvKernel,作為形態(tài)操作中的構(gòu)造元素。ReleaseStructuringElement刪除構(gòu)造元素voidcvReleaseStructuringElement(IplConvKernel**element);element被刪除的構(gòu)造元素的指針cvReleaseStructuringElement釋放構(gòu)造IplConvKernel*elementNULL,則函數(shù)不作用。Erode使用任意構(gòu)造元素腐蝕圖像constCvArr*src,CvArr*dst,IplConvKernel*element=NULL,intiterations=1);srcdst
輸入圖像.輸出圖像.elementNULL,3×3iterations腐蝕的次數(shù)cvErode具有最小值象素點(diǎn)的鄰域外形:dst=erode(src,element): dst(x,y)=min((x”,y”)inelement))src(x+x”,y+y”)(iterations)Dilate使用任意構(gòu)造元素膨脹圖像constCvArr*src,CvArr*dst,IplConvKernel*element=NULL,intiterations=1);srcdst
輸入圖像.輸出圖像.elementNULL,3×3iterations膨脹的次數(shù)cvDilate小值象素點(diǎn)的鄰域外形:dst=dilate(src,element): dst(x,y)=max((x”,y”)inelement))src(x+x”,y+y”)〔in-place〕(iterations)每個(gè)彩色通道單獨(dú)處理。MorphologyEx高級(jí)形態(tài)學(xué)變換voidcvMorphologyEx(constCvArr*src,CvArr*dst,CvArr*temp,IplConvKernel*element,intoperation,intiterations=1);srcdsttemp
臨時(shí)圖像,某些狀況下需要elementoperation形態(tài)操作的類型:CV_MOP_OPEN-開運(yùn)算CV_MOP_CLOSE-閉運(yùn)算CV_MOP_GRADIENTCV_MOP_TOPHAT-“頂帽“CV_MOP_BLACKHAT-“黑帽“iterations膨脹和腐蝕次數(shù).cvMorphologyEx換:開運(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)-srctempin-place式下需要。濾波器與顏色空間變換Smooth各種方法的圖像平滑voidcvSmooth(constCvArr*src,CvArr*dst,intsmoothtype=CV_GAUSSIAN,intparam1=3,intparam2=0,doubleparam3=0,doubleparam4=0);srcdst
輸入圖像.輸出圖像.smoothtype平滑方法:CV_BLUR_NO_SCALE(簡潔不帶尺度變換的模糊)-對(duì)每個(gè)象素的param1×param2用函數(shù)cvIntegral計(jì)算積分圖像。param1×param2并做尺度變換1/(param1?param2).CV_GAUSSIAN(gaussianblur)param1×param2的高斯卷積blur)param1×param1的中值濾波(i.e.鄰域是方的).CV_BILATERAL(雙向?yàn)V波)-應(yīng)用雙向3x3濾波,彩色sigma=param1,空間sigma=param2.關(guān)于雙向?yàn)V波,可參考“://dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/B“://dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.htmlparam1param2/非尺度變換的高斯模糊的狀況,假設(shè)param1。param3的核尺寸計(jì)算:sigma=(n/2-1)*0.3+0.8,其中n=param1對(duì)應(yīng)水平核,n=param2對(duì)應(yīng)垂直核.(3×3to7×7)sigmaparam3param1param2sigma保證足夠準(zhǔn)確的操作).cvSmooth以及局限。816cvSobelcvaplace32321-3-8-32-種方法可以〔in-place〕方式處理圖像。8-in-place方式處理圖像.中值濾波某鄰域窗口內(nèi)的全部象素點(diǎn)灰度值的中值。實(shí)現(xiàn)方法:通過從圖像中的某個(gè)采樣窗口取格外數(shù)個(gè)數(shù)據(jù)進(jìn)展排序用排序后的中值取代要處理的數(shù)據(jù)即可中有特別作用,但在條紋中心分析方法中作用不大。中值濾波在圖像處理中,常用于用來保護(hù)邊緣信息,是經(jīng)典的平滑噪聲的方法中值濾波原理值濾波的根本原理是把數(shù)字圖像或數(shù)字序列中一點(diǎn)的值用該點(diǎn)的一個(gè)拎域中各升〔或下降〕g〔x,y〕=med{f(x-k,y-l),(k,l∈W)},f(x,y),g(x,y)分別為原始圖像和處理后圓形,十字形,圓環(huán)形等。高斯濾波SNR〔反響真實(shí)信號(hào)〕Gauss-Lapplace好的圖像邊緣,先對(duì)圖像做Gauss階導(dǎo)的過零點(diǎn)確定邊緣,在計(jì)算時(shí)也是頻域乘積=>空域卷積。量低的就排解掉,噪聲就是屬于低能量局部值就等于八連通區(qū)的像素值的均值,這樣到達(dá)平滑的效果是平滑的,避開了振鈴現(xiàn)象。Filter2D對(duì)圖像做卷積voidcvFilter2D(constCvArr*src,CvArr*dst,constCvMat*kernel,CvPointanchor=cvPoint(-1,-1));srcdst
kernelcvSplit函數(shù)分解圖像到單個(gè)顏色通道上,然后單獨(dú)處理。anchor省值(-1,-1)表示錨點(diǎn)在核中心。cvFilter2DIn-place出輸入圖像時(shí),函數(shù)從最近鄰的圖像內(nèi)部象素插值得到邊界外面的象素值。CopyMakeBorder復(fù)制圖像并且制作邊界。voidcvCopyMakeBorder(constCvArr*src,CvArr*dst,CvPointoffset,intbordertype,CvScalarvalue=cvScalarAll(0));srcdst
offset輸入圖像〔或者其ROI〕欲拷貝到的輸出圖像長方形的左上角坐標(biāo)〔或者ROIbordertype已拷貝的原圖像長方形的邊界的類型:IPL_BORDER_CONSTANT-填充邊界為固定值,值由函數(shù)最終一個(gè)參數(shù)指〔其IPLIPL_BORDER_REFLECTIPL_BORDER_WRAP支持〕。value假設(shè)邊界類型為IPL_BORDER_CONSTANT的話,那么此為邊界像素的值。函數(shù)cvCopyMakeBorder拷貝輸入2維陣列到輸出陣列的內(nèi)部并且在拷貝區(qū)域的opencv1255Integral計(jì)算積分圖像voidcvIntegral(constCvArr*image,CvArr*sum,CvArr*sqsum=NULL,CvArr*tilted_sum=NULL);imagesumsqsum
輸入圖像,W×H,單通道,8(32f64f).會(huì)),單通道,32double精度的浮點(diǎn)數(shù)(64f).對(duì)象素值平方的積分圖像,W+1×H+1(譯者注:原文的公式應(yīng)當(dāng)寫成,32double精度的浮點(diǎn)數(shù)(64f).tilted_sumdouble精度的浮點(diǎn)數(shù)(64f).cvIntegral計(jì)算一次或高次積分圖像:sum(X,Y)= ∑
image(x,y)x<X,y<Y
∑ image(x,y)2x<X,y<Ytilted_sum(X,Y)= ∑ image(x,y)y<Y,|x X|<yO(1)。例如:因此可以在變化的窗口內(nèi)做快速平滑或窗口相關(guān)等操作。CvtColor顏色空間轉(zhuǎn)換voidcvCvtColor(constCvArr*src,CvArr*dst,intcode);srcdstcode
8-bit16-bit32-bit8-bit16-bit32-bitCV_<src_color_space>2<dst_color_space>數(shù)(見下面).cvCvtColorIplImagecolorModelchannelSeqRGBBGR意味著布局為B0RGB意味著布局為R0G0B0R1G1B124-位格式.函數(shù)做如下變換:RGB/刪除alpha通道,反相通道挨次,到16位RGB彩色或者15RGB(Rx5:Gx6:Rx5),以及到灰度圖像的正逆轉(zhuǎn)換,使用:RGB[A]->Gray:Y=0.212671*R+0.715160*G+0.072169*B+0*AGray->RGB[A]:R=YG=YB=YA=0全部可能的圖像顏色空間的相互變換公式列舉如下:RGB<=>XYZ(CV_BGR2XYZ,CV_RGB2XYZ,CV_XYZ2BGR,CV_XYZ2RGB):|X||0.4124110.3575850.180454||R||Y|=|0.2126490.7151690.072182|*|G||Z||0.0193320.1191950.950390||B||R||3.240479-1.53715-0.498535||X||G|=|-0.9692561.8759910.041556|*|Y||B||0.055648-0.2040431.057311||Z|RGB<=>YCrCb(CV_BGR2YCrCb,CV_RGB2YCrCb,CV_YCrCb2BGR,CV_YCrCb2RGB)Y=0.299*R+0.587*G+0.114*BCr=(R-Y)*0.713+128Cb=(B-Y)*0.564+128R=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 ifV!=0,0otherwise(G-B)*60/S,ifV=RH=180+(B-R)*60/S,ifV=G240+(R-G)*60/S,ifV=BifH<0thenH=H+3600°360°〔hue〕28RGB=>Lab(CV_BGR2Lab,CV_RGB2Lab)|X||0.4339100.3762200.189860||R/255||Y|=|0.2126490.7151690.072182|*|G/255||Z||0.0177560.1094780.872915||B/255|L=116*Y1/3forY>0.008856L=903.3*YforY<=0.008856a=500*(f(X)-f(Y))b=200*(f(Y)-f(Z))wheref(t)=t1/3 fort>0.008856f(t)=7.787*t+16/116 fort<=0.008856上面的公式可以參考“:///cica/faq/color_spaces/color.spaces.html“:///cica/faq/color_spaces/color.spaces.htmlRGB=>HLS(CV_BGR2HLS,CV_RGB2HLS)HSLhue(色相)、saturation(飽和度)、lightness(亮度)。有的地方也稱HSI,Iintensity(強(qiáng)度)轉(zhuǎn)換公式見“:///wiki/HSL_%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4“:///wiki/HSL_%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4Bayer=>RGB(CV_BayerBG2BGR,CV_BayerGB2BGR,CV_BayerRG2BGR,CV_BayerGR2BGR,CV_BayerBG2RGB,CV_BayerRG2BGR,CV_BayerGB2RGB,CV_BayerGR2BGR,CV_BayerRG2RGB,CV_BayerBG2BGR,CV_BayerGR2RGB,CV_BayerGB2BGR)BayerCCDCMOS彩色圖像,該平面中的R/G/B象素點(diǎn)被安排如下:RGB1、24CV_BayerC1C22{RGB|RGB}C1C2“BG“類型。Threshold對(duì)數(shù)組元素進(jìn)展固定閾值操作voidcvThreshold(constCvArr*src,CvArr*dst,doublethreshold,doublemax_value,intthreshold_type);srcdst
8-bitof32-bit浮點(diǎn)數(shù)).輸出數(shù)組,必需與src的類型全都,或者為8-bit.thresholdmax_value使用CV_THRESH_BINARY和CV_THRESH_BINARY_INV的最大值.threshold_type閾值類型(見爭(zhēng)論)cvThreshold對(duì)單通道數(shù)組應(yīng)用固定閾值操作。該函數(shù)的典型應(yīng)用是對(duì)灰(cvCmpSthreshold_typethreshold_type=CV_THRESH_BINARY:dst(x,y)=max_value,ifsrc(x,y)>threshold0,otherwisethreshold_type=CV_THRESH_BINARY_INV:dst(x,y)=0,ifsrc(x,y)>thresholdmax_value,otherwisethreshold_type=CV_THRESH_TRUNC:dst(x,y)=threshold,ifsrc(x,y)>thresholdsrc(x,y),otherwisethreshold_type=CV_THRESH_TOZERO:dst(x,y)=src(x,y),if(x,y)>threshold0,otherwisethreshold_type=CV_THRESH_TOZERO_INV:dst(x,y)=0,ifsrc(x,y)>thresholdsrc(x,y),otherwise下面是圖形化的閾值描述:AdaptiveThreshold自適應(yīng)閾值方法voidcvAdaptiveThreshold(constCvArr*src,CvArr*dst,doublemax_value,intadaptive_method=CV_ADAPTIVE_THRESH_MEAN_C,intthreshold_type=CV_THRESH_BINARY,intblock_size=3,doubleparam1=5);srcdst
max_value使用CV_THRESH_BINARY和CV_THRESH_BINARY_INV的最大值.adaptive_method自適應(yīng)閾值算法使用:CV_ADAPTIVE_THRESH_MEAN_CCV_ADAPTIVE_THRESH_GAUSSIAN_C〔見爭(zhēng)論〕.threshold_type取閾值類型:必需是下者之一CV_THRESH_BINARY,CV_THRESH_BINARY_INVblock_size用來計(jì)算閾值的象素鄰域大小:3,5,7,...param1與方法有關(guān)的參數(shù)。對(duì)方法CV_ADAPTIVE_THRESH_MEAN_C和數(shù)〔見爭(zhēng)論〕,盡管它可以是負(fù)數(shù)。cvAdaptiveThresholdthreshold_type=CV_THRESH_BINARY:dst(x,y)=max_value,ifsrc(x,y)>T(x,y)0,otherwisethreshold_type=CV_THRESH_BINARY_INV:dst(x,y)=0,ifsrc(x,y)>T(x,y)max_value,otherwiseTI是為每一個(gè)象素點(diǎn)單獨(dú)計(jì)算的閾值CV_ADAPTIVE_THRESH_MEAN_Cparam1。CV_ADAPTIVE_THRESH_GAUSSIAN_C(gaussian),param1。金字塔及其應(yīng)用PyrDown圖像的下采樣voidcvPyrDown(constCvArr*src,CvArr*dst,intfilter=CV_GAUSSIAN_5x5);srcdst
輸入圖像.化filter卷積濾波器的類型,目前僅支持CV_GAUSSIAN_5x5cvPyrDownGaussian入圖像用指定濾波器進(jìn)展卷積,然后通過拒絕偶數(shù)的行與列來下采樣圖像。PyrUp圖像的上采樣CvArr*src,CvArr*dst,intfilter=CV_GAUSSIAN_5x5);srcdst
輸入圖像.輸出圖像,寬度和高度應(yīng)是輸入圖像的2filter卷積濾波器的類型,目前僅支持CV_GAUSSIAN_5x5函數(shù)cvPyrUp使用Gaussian金字塔分解對(duì)輸入圖像向上采樣。首先通過在圖04倍大小〔hunnish:理不清楚,尚待探討〕連接部件CvConnectedComp連接部件typedefstructCvConnectedComp{doublearea;/*連通域的面積*/floatvalue;/**/CvRectrect;/*分割域的ROI*/}CvConnectedComp;FloodFill用指定顏色填充一個(gè)連接域voidcvFloodFill(CvArr*image,CvPointseed_point,CvScalarnew_val,CvScalarlo_diff=cvScalarAll(0),CvScalarup_diff=cvScalarAll(0),CvConnectedComp*comp=NULL,intflags=4,CvArr*mask=NULL);#defineCV_FLOODFILL_FIXED_RANGE(1<<16)#defineCV_FLOODFILL_MASK_ONLY (1<<17)image
1-3-8-比特或浮點(diǎn)數(shù)圖像。輸入的圖像將被函數(shù)的操作所轉(zhuǎn)變,除非你選擇CV_FLOODFILL_MASK_ONLY選項(xiàng)(見下面).seed_pointnew_vallo_diff當(dāng)前觀看象素值與其部件領(lǐng)域象素或者待參加該部件的種子象素之負(fù)差(Lowerdifference8-packedvalue.up_diff當(dāng)前觀看象素值與其部件領(lǐng)域象素或者待參加該部件的種子象素之正差8-pflags
指向部件構(gòu)造體的指針,該構(gòu)造體的內(nèi)容由函數(shù)用重繪區(qū)域的信息填充。操作選項(xiàng).低位比特包含連通值,4(缺省)或8,在函數(shù)執(zhí)行連通過程0素之間的差,否則考慮當(dāng)前象素與其相鄰象素的差。(范圍是浮點(diǎn)數(shù)).new_val),MASK必需是非空的).mask
運(yùn)算掩模,應(yīng)當(dāng)是單通道、8-image大兩個(gè)象素點(diǎn)。假設(shè)非空,則函數(shù)使用且更掩模,所以使用者需對(duì)maskMASKMASK數(shù)調(diào)用中使用同一個(gè)MASK,以保證填充的區(qū)域不會(huì)重疊。留意:由于MASKmask(x,y)像素點(diǎn)相對(duì)應(yīng)的點(diǎn)具有(x+1,y+1)坐標(biāo)。cvFloodFill用指定顏色,從種子點(diǎn)開頭填充一個(gè)連通域。連通性由象素src(x”,y”)-lo_diff<=src(x,y)<=src(x”,y”)+up_diff,范圍src(seed.x,seed.y)-lo<=src(x,y)<=src(seed.x,seed.y)+up_diff,度圖像,固定范圍src(x”,y”)r-lo_diffr<=src(x,y)r<=src(x”,y”)r+up_diffr和src(x”,y”)g-lo_diffg<=src(x,y)g<=src(x”,y”)g+up_diffg和src(x”,y”)b-lo_diffb<=src(x,y)b<=src(x”,y”)b+up_diffb,像,浮動(dòng)范圍src(seed.x,seed.y)r-lo_diffr<=src(x,y)r<=src(seed.x,seed.y)r+up_diffr和src(seed.x,seed.y)g-lo_diffg<=src(x,y)g<=src(seed.x,seed.y)g+up_diffg和src(seed.x,seed.y)b-lo_diffb<=src(x,y)b<=src(seed.x,seed.y)b+up_diffb,彩色圖像,固定范圍象素的彩色/亮度應(yīng)當(dāng)足夠接近于:/亮度值,當(dāng)該鄰域點(diǎn)已經(jīng)被認(rèn)為屬于浮動(dòng)范圍狀況下的連通域。固定范圍狀況下的種子點(diǎn)的彩色/亮度值FindContours在二值圖像中查找輪廓intcvFindContours(CvArr*image,CvMemStorage*storage,CvSeq**first_contour,mode=CV_RETR_LIST,
intheader_size=sizeof(CvContour),intintmethod=CV_CHAIN_APPROX_SIMPLE,CvPointoffset=cvPoint(0,0));image用cvThreshold,cvAdaptiveThreshold或cvCanny.本函數(shù)轉(zhuǎn)變輸入圖像內(nèi)容。storagefirst_contourheader_sizemethod=CV_CHAIN_CODE>=sizeof(CvChain),否則>=sizeof(CvContour).mode
提取模式.CV_RETR_EXTERNAL-只提取最外層的輪廓CV_RETR_LIST-提取全部輪廓,并且放置在list中hierarchy:頂層為連通域的外圍邊界,次層為洞的內(nèi)層邊界。CV_RETR_TREEhierarchymethod靠近方法(對(duì)全部節(jié)點(diǎn),不包括使用內(nèi)部靠近的CV_RETR_RUNS).CV_CHAIN_CODEFreeman(定點(diǎn)序列).CV_CHAIN_APPROX_NONE〕為點(diǎn)序列形式保存末端的象素點(diǎn);CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOSTeh-Chin鏈靠近算法.CV_LINK_RUNS1提取算法。僅有CV_RETR_LIST提取模式可以在本方法中應(yīng)用.offsetROI偏移量有用,由于可以從整個(gè)圖像上下文來對(duì)輪廓做分析.cvFindContoursfirst_contourNULL,則沒有檢測(cè)到輪廓〔比方圖像是全黑的〕。其它輪廓可以從first_contourh_next和v_next鏈接訪問到。在cvDrawContours的識(shí)別-見CVPR2023教程中的squares樣例。該教程可以在SourceForge網(wǎng)站上找到。StartFindContours初始化輪廓的掃描過程CvContourScannercvStartFindContours(CvArr*image,CvMemStorage*storage,header_size=sizeof(CvContour),method=CV_CHAIN_APPROX_SIMPLE,image8-比特、單通道二值圖像storageheader_size
intintmode=CV_RETR_LIST,intCvPointoffset=cvPoint(0,0));mode
>=sizeof(CvChain)method=CV_CHAIN_CODE,否則尺寸>=sizeof(CvContour).提取模式,見cvFindContours.methodcvFindContoursCV_LINK_RUNS能使用。offsetROI偏移量,見cvFindContours.cvStartFindContourscvFindNextContour使用以提取其馀的輪廓。FindNextContourFindsnextcontourintheimageCvSeq*cvFindNextContour(CvContourScannerscanner);scanner被函數(shù)cvStartFindContours初始化的輪廓掃描器.cvFindNextContour假設(shè)沒有更多的輪廓,則函數(shù)返回NULL.SubstituteContour替換提取的輪廓voidcvSubstituteContour(CvContourScannerscanner,CvSeq*new_contour);scannercvStartFindContoursnew_contour替換的輪廓cvSubstituteContour把用戶自定義的輪廓替換前一次的函數(shù)cvFindNextContourtree中。假設(shè)參數(shù)new_contour=NULL,則提取的輪廓不被包含入生成構(gòu)造中,它的全部后代以后也不會(huì)被參加到接口中。EndFindContours完畢掃描過程CvSeq*cvEndFindContours(CvContourScanner*scanner);scanner輪廓掃描的指針.cvEndFindContoursPyrSegmentation用金字塔實(shí)現(xiàn)圖像分割voidcvPyrSegmentation(IplImage*src,IplImage*dst,CvMemStorage*storage,CvSeq**comp,threshold2);src
intlevel,doublethreshold1,doubledst
輸入圖像.輸出圖像.storageStorage:存儲(chǔ)連通部件的序列結(jié)果complevel
分割部件的輸出序列指針components.建立金字塔的最大層數(shù)threshold1threshold2分割簇的錯(cuò)誤閾值cvPyrSegmentationlevelp(c(a),c(b))<threshold1,ia的相鄰層的父親象素b之間的連接被建立起來,p(c(A),c(B))<threshold2,則任何兩個(gè)分割A(yù)和B屬于同一簇。p(c1,c2)=|c1-c2|.假設(shè)輸入圖像有單個(gè)通道〔紅、綠、蘭〕,那幺p(c1,c2)=0,3·(c1r-c2r)+0,59·(c1g-c2g)+0,11·(c1b-c2b)srcdst8-3-通道圖像,且大小一樣PyrMeanShiftFilteringDoesmeanshiftimagesegmentationvoidcvPyrMeanShiftFiltering(constCvArr*src,CvArr*dst,doublesp,doublesr,intmax_level=1,CvTermCriteriatermcrit=cvTermCriteria(CV_TERMCRIT_ITER+CV_TERMCRIT_EPS,5,1));srcdstspsr
輸入的8-比特,3-信道圖象.Thespatialwindowradius.空間窗的半徑Thecolorwindowradius.顏色窗的半徑max_levelMaximumlevelofthepyramidforthesegmentation.termcritTerminationcriteria:whentostopmeanshiftiterations.ThefunctioncvPyrMeanShiftFilteringimplementsthefilteringstageofmeanshiftsegmentation,thatis,theoutputofthefunctionisthefiltered“posterized“imagewithcolorgradientsandfine-graintextureflattened.Ateverypixel(X,Y)oftheinputimage(ordown-sizedinputimage,seebelow)thefunctionexecutesmeanshiftiterations,thatis,thepixel(X,Y)neighborhoodinthejointspace-colorhyperspaceisconsidered:{(x,y):X-sp≤x≤X+sp&&Y-sp≤y≤Y+sp&&||(R,G,B)-(r,g,b)||≤sr},where(R,G,B)and(r,g,b)arethevectorsofcolorcomponentsat(X,Y)and(x,y),respectively(though,thealgorithmdoesnotdependonthecolorspaceused,soany3-componentcolorspacecanbeusedinstead).Overtheneighborhoodtheaveragespatialvalue(X”,Y”)andaveragecolorvector(R”,G”,B”)arefoundandtheyactastheneighborhoodcenteronthenextiteration:(X,Y)~(X”,Y”),(R,G,B)~(R”,G”,B”).Aftertheiterationsover,thecolorcomponentsoftheinitialpixel(thatis,thepixelfromwheretheiterationsstarted)aresettothefinalvalue(averagecoloratthelastiteration):I(X,Y)<-(R*,G*,B*).Thenmax_level>0,thegaussianpyramidofmax_level+1levelsisbuilt,andtheaboveprocedureisrunonthesmallestlayer.Afterthat,theresultsarepropagatedtothelargerlayerandtheiterationsarerunagainonlyonthosepixelswherethelayercolorsdiffermuch(>sr)fromthelower-resolutionlayer,thatis,theboundariesofthecolorregionsareclarified.Note,thattheresultswillbeactuallydifferentfromtheonesobtainedbyrunningthemeanshiftprocedureonthewholeoriginalimage(i.e.whenmax_level==0).Watershed做分水嶺圖像分割voidcvWatershed(constCvArr*image,CvArr*markers);imagemarkers32cvWatershed[Meyer92]描述的變量分水嶺,基于非參數(shù)標(biāo)記的分割0。這個(gè)函數(shù)的輸出則是標(biāo)記區(qū)域全部像素被置為某個(gè)種子局部的值,或者在區(qū)域邊界則置-1?!?1〕分開,例如在初watershed.cpp。圖像與輪廓矩Moments計(jì)算多邊形和光柵外形的最高達(dá)三階的全部矩voidcvMoments(constCvArr*arr,CvMoments*moments,intbinary=0);arrCvSeq或一族點(diǎn)的向量).momentsbinary1.cvMoments計(jì)算最高達(dá)三階的空間和中心矩,并且將結(jié)果存在構(gòu)造7Hu不變量等。GetSpatialMoment從矩狀態(tài)構(gòu)造中提取空間矩doublecvGetSpatialMoment(CvMoments*moments,intx_order,inty_order);momentscvMomentsx_orderxx_order>=0.y_orderyy_order0x_order+y_order<=3.cvGetSpatialMoment提取空間矩,當(dāng)圖像矩被定義為:Mx_order,y_order=sumx,y(I(x,y)?xx_order?yy_order)I(x,y)是象素點(diǎn)(x,y)的亮度值.GetCentralMoment從矩狀態(tài)構(gòu)造中提取中心矩doublecvGetCentralMoment(CvMoments*moments,intx_order,inty_order);momentsx_orderxx_order>=0.y_orderyy_o
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 投資組合的多元化配置考核試卷
- 建筑工地危險(xiǎn)源識(shí)別與評(píng)估考核試卷
- 2025-2030年塑料箱包店鋪企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 2025-2030年堅(jiān)果面包企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 2025-2030年地震災(zāi)害風(fēng)險(xiǎn)評(píng)估咨詢服務(wù)行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 神經(jīng)科規(guī)培出科個(gè)人小結(jié)范文(7篇)
- 二零二五年度派遣單位與零售行業(yè)用工單位店員及銷售派遣合同
- 二零二五年度半導(dǎo)體封裝測(cè)試股份出售及產(chǎn)業(yè)鏈整合協(xié)議
- 校園封閉管理方案
- 清明節(jié)演講稿15篇
- 2025年中國山泉水市場(chǎng)前景預(yù)測(cè)及投資規(guī)劃研究報(bào)告
- 重慶市2025屆高三第一次聯(lián)合診斷檢測(cè)英語試卷(含解析含聽力原文無音頻)
- 《榜樣9》觀后感心得體會(huì)二
- 《西安交通大學(xué)》課件
- 天津市部分區(qū)2024-2025學(xué)年九年級(jí)(上)期末物理試卷(含答案)
- 小學(xué)二年級(jí)數(shù)學(xué)計(jì)算題共4165題
- 一氧化碳中毒培訓(xùn)
- 初二上冊(cè)好的數(shù)學(xué)試卷
- 保潔服務(wù)質(zhì)量與服務(wù)意識(shí)的培訓(xùn)
- 廣東省潮州市2024-2025學(xué)年九年級(jí)上學(xué)期期末道德與法治試卷(含答案)
- 突發(fā)公共衛(wèi)生事件衛(wèi)生應(yīng)急
評(píng)論
0/150
提交評(píng)論