2017-07-31 7 views
0

私は、リブを備えたカートのバイナリスレッシュホールドイメージを持っており、その一部にひびが入っています。OpenCVバイナリイメージから湾を取り除く

threshold image

私は、流域のアルゴリズムのためのマーカーを取得するためにcv2.distanceTransform()のようなものを使用する必要がありますが、私は、クラックを取り除く必要があります。私は亀裂を維持した場合、距離はいくつかの部分

distance transformed image

私は拡張の閉鎖を試みたに切断私にリブを変換するが、それは、リブの間にボールをefectsと私は

個別の各リブを得ることはありませんもちろん、私は距離変換画像では異なるしきい値を試しましたが、しきい値でボールをフィルタリングすると、リブも分割されます。

ベイ除去アルゴリズムのようなものはありますか?それとももっと良い方法がありますか?

答えて

0

周囲のピクセル(主に垂直ピクセル)を検索して中央ピクセルをどの色にするかを決定するフィルタを作成します。 ea

//psudo code 
for(int x=0;x<maxdimensionX;x++) 
{ 
for (int y = 0 ;y<maxdimensionY;y++) 
{ 
c1= max(y-scope,0) 
c2 = min(y+scope,maxdimenionY) 
for (int c=c1;c<c2;c++) 
    { 
    color[c]=colorresult(x,y) 
    if(color[c]==mysearchcolor)count++ 
    } 
    if (count>treshold) set in a new picture pixel(x,y,mysearchcolor)else make it a background pixel. 
1

垂直の長方形のカーネルでcv :: dilateメソッドを試してください。

関連する問題