0

我有一个带有肋骨的推车的二进制阈值图像,其中一些已破裂。

阈值图像

我需要使用 cv2.distanceTransform() 之类的东西来获取分水岭算法的标记,但我需要消除裂缝。如果我保持裂缝,距离变换会将我的肋骨分成几块

距离变换图像

我尝试关闭扩张,但它会影响肋骨之间的球而且我没有让每根肋骨分开

当然,我在距离变换图像中尝试了不同的阈值,但是当我按阈值过滤球时,我也分裂了肋骨。

有没有像bay-removing算法这样的东西?或者有什么更好的方法吗?

4

2 回答 2

1

尝试使用垂直矩形内核的 cv::dilate 方法。

于 2017-08-01T09:29:33.700 回答
0

创建一个寻找周围像素(主要是垂直像素)的过滤器来决定中心像素应该是什么颜色。一个

//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.
于 2017-08-01T06:38:28.527 回答