如何获得一条完整的内侧轴线,其垂直线穿过它?

时间:2012-11-15 22:36:28

标签: image-processing opencv computer-vision scipy scikit-image

我有一个图像,我希望得到穿过其中轴的像素。 我尝试使用 skeletonize medial axis 方法来获取它们,但两种方法都返回一条比相应对象短的维度线。

以下是带有示例图像的代码: -

>>> import skimage.filter  
>>> import skimage.morphology  
>>> import numpy as np  
>>> import scipy.misc
>>> im=scipy.misc.imread('img.jpg')   
>>> thr=skimage.filter.threshold_otsu(im)  
>>> im=im > thr # Threshold the image  
>>> im_sk=skimage.morphology.skeletonize(im)  
>>> mask=np.where(im_sk==1)     # pixels of skeleton  
>>> im[mask]= 0                 # this will color the skeleton with black  

原始>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>结果
or_im http://imageshack.us/a/img23/9035/testwus.jpg sk_im http://imageshack.us/a/img585/1910/imgskx.jpg

如您所见,黑线未连接到形状的尖端 (1)如何获得一个完全连接的一维中轴线,它代表图像中形状的长度 (2)如何获得垂直于中轴的像素(因为我想从一侧绘制垂直线到另一侧穿过形状的中轴)

  • 我需要任何可以执行此操作的python库。

由于

1 个答案:

答案 0 :(得分:0)

我认为你的问题有点不合适。你有两个问题,但我会回答第二个问题。

您想绘制垂直于中轴的线条。问题在于,中轴不一定是直线,通常是弯曲的。

您最好的选择是从内侧轴取两个彼此接近的样本点。这两点定义了一条线。然后,您可以计算这两个点的垂直平分线。