結構元素IplConvKernel及操作

在OpenCV中,定義了一個結構用於描述形態學中的結構元素。該結構定義如下:

typedef struct _IplConvKernel

{

    int  nCols;

    int  nRows;

    int  anchorX;

    int  anchorY;

    int *values;

    int  nShiftR;

}

IplConvKernel;

在這裏,對其中的變量定義做一簡單的描述:

nCols,nRows:結構元素的行寬與列高;

anchorX,anchorY:結構元素原點(錨點)的位置座標,水平,垂直;

nShiftR:用於表示結構元素的形狀類型,有如下幾個值:

#define  CV_SHAPE_RECT      0

#define  CV_SHAPE_CROSS     1

#define  CV_SHAPE_ELLIPSE   2

#define  CV_SHAPE_CUSTOM    100

分別表示矩形,十字,橢圓和自定義。

values:當nShiftR爲自定義時,value是指向結構元素數據的指針,如果結構元素的大小定義爲8*6,那麼values爲48長的int數組,值爲0或1。

 

在OpenCV中定義了兩個關於結構元素IplConvKernel的操作,用於結構元素的創建和釋放。

cvCreateStructuringElementEx
      創建結構元素 
      IplConvKernel* cvCreateStructuringElementEx( int cols, int rows, int anchor_x, int anchor_y,
                                                                                 int shape, int* values=NULL );
      cols  結構元素的列數目
      rows 結構元素的行數目
      anchor_x 錨點的相對水平偏移量
      anchor_y  錨點的相對垂直偏移量
      shape 結構元素的形狀,可以是下列值:
      CV_SHAPE_RECT, 長方形元素;
      CV_SHAPE_CROSS, 交錯元素 a cross-shaped element;
      CV_SHAPE_ELLIPSE, 橢圓元素;
      CV_SHAPE_CUSTOM, 用戶自定義元素。這種情況下參數 values 定義了 mask,即象素的那個鄰域必須考慮。
      values    指向結構元素的指針,它是一個平面數組,表示對元素矩陣逐行掃描。(非零點表示該點屬於結構元)。如果指針爲空,則表示平面數組中的所有元素都是非零的,即結構元是一個長方形(該參數僅僅當shape參數是 CV_SHAPE_CUSTOM 時才予以考慮)。 
      函數 cv CreateStructuringElementEx 分配和填充結構 IplConvKernel, 它可作爲形態操作中的結構元素。

 

cvReleaseStructuringElement   刪除結構元素
      void cvReleaseStructuringElement( IplConvKernel** element );
      element  被刪除的結構元素的指針
      函數 cvReleaseStructuringElement 釋放結構 IplConvKernel 。如果 *element 爲 NULL, 則函數不作用。

其他結構元素的擴展操作參見:

http://lh2078.blog.163.com/blog/static/56811372201051891044624/

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