2010-12-11 12 views

答えて

0

私が知る限り、OpenCVには「XORによる拡張」はありません(これは非常に良いことですが)。
同様の結果を得るには、( 'd'のように)侵食し、元の画像とANDすることができるVoronoiセグメンテーションの種として侵食されたセンターを使用することがあります。

0

弱い要素を排除するために画像を閾値処理してみてください。強い領域だけが残っていて、オブジェクト分離が改善されるはずです。ところで、cvDilateまたはcvErodeの問題についてもう少し明確になりますか?

1

あなた自身の拡張機能を書いてからxorの機能を追加する必要があるようです。

DST = DILATE(SRC、要素):DST(要素内(X 'Y'))(X、Y)=最大)OpenCVのマニュアルに従って

、ここcvdilateが使用するルールがありますSRC(X + X 'Y + Y')

ここでは、出発点のための擬似コード(これはXORコードが含まれていません)です:

void my_dilate(img) { 

    for(i = 0; i < img.height; i++) { 
    for(j = 0; j < img.width; j++) { 
     max_pixel = get_max_pixel_in_window(img, i, j); 
     img.pixel(i,j) = max_pixel; 
    } 
    } 

} 

int get_max_pixel_in_window(img, center_row, center_col) { 
    int window_size = 3; 
    int cur_max = 0; 
    for(i = -window_size; i <= window_size; i++) { 
    for(j = -window_size; j <= window_size; j++) { 
     int cur_col = center_col + i; 
     int cur_row = center_row + j; 
     if(out_of_bounds(img, cur_col, cur_row)) { 
      continue; 
     } 
     int cur_pix = img.pixel(center_row + i, center_col + j); 
     if(cur_pix > cur_max) { 
      cur_max = cur_pix; 
     } 
    } 
    } 
    return cur_max; 
} 

// returns true if the x, y coordinate is outside of the image 
int out_of_bounds(img, x, y) { 
    if(x >= img.width || x < 0 || y >= img.height || y <= 0) { 
    return 1; 
    } 
    return 0; 
} 
+0

あなたは、「私にout_of_boundsを、この機能を使用することを教えてもらえます(img、cur_col、cur_row)」と表示されます。 擬似コードを書くといいでしょう。 – RidaSana

関連する問題