2017-07-31 55 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 ::扩张法的竖长方形的内核。