CreateStructuringElementEx

CreateStructuringElementEx:IplConvKernel* cvCreateStructuringElementEx( int cols, int rows, int anchor_x, int anchor_y,

int shape, int* values=NULL );

基本介紹

  • 中文名:創建結構元素
  • 外文名:CreateStructuringElementEx
  • cols:結構元素的列數目
  • rows:結構元素的行數目
簡介,理解,

簡介

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, 它可作為形態操作中的結構元素。舉個例子比較好說清楚
比如一個圖
00000
01110
00000
用一個cvCreateStructuringElementEx( 3,1,0 0,CV_SHAPE_RECT)的元素來腐蝕,則結果為
00000
01000
00000
理解:cvCreateStructuringElementEx( 3,1,0 0,CV_SHAPE_RECT)中的3,1表示要腐蝕的對象是一個3列1行的矩陣,即結構元素為[1(anchor),1,1],如果該矩陣里元素全為非零,則將其轉化為同樣大小隻包含一個非零元素,而該非零元素的位置是(0,0),即錨點位置,效果上講,可以看做是對圖像從y方向上進行截斷。同理cvCreateStructuringElementEx( 3,1,1 0,CV_SHAPE_RECT)中的3,1表示要腐蝕的對象是一個3列1行的矩陣。
假如用下面這個去腐蝕圖像,中心是在右下角1 0 01 1 01 1 1 那么應該怎么表示呢?
理論上應該是int mask[9] = {1, 0, 0, 1, 1, 0, 1, 1, 1}; IplConvKernel* strel = cvCreateStructuringElementEx( 3, 3, 0, 2, CV_SHAPE_CUSTOM, mask );其中0,2可按自己要求設定。
結構元素的不同設定對於處理結果有著重要影響,當需要對y方向進行腐蝕操作時,同理,可如下操作。
比如一個圖
01000
01000
01000
而用了一個cvCreateStructuringElementEx( 1,3,1 0,CV_SHAPE_RECT)的元素來腐蝕,則結果為
00000
01000
00000

理解

此時創建的結構元素為1x3的列矩陣,即[1,1(anchor),1]的轉置矩陣,如右圖 所示,錨點位置在第二行一列處,即(1,0),具體處理的思路同上所述。圖像處理的效果是從x方向上進行了截斷,一定程度上剔除該方向的毛刺。
CreateStructuringElementEx

相關詞條

熱門詞條

聯絡我們