我有一个图像,我希望得到穿过其中轴的像素。 我尝试使用 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)如何获得垂直于中轴的像素(因为我想从一侧绘制垂直线到另一侧穿过形状的中轴)
由于
答案 0 :(得分:0)
我认为你的问题有点不合适。你有两个问题,但我会回答第二个问题。
您想绘制垂直于中轴的线条。问题在于,中轴不一定是直线,通常是弯曲的。
您最好的选择是从内侧轴取两个彼此接近的样本点。这两点定义了一条线。然后,您可以计算这两个点的垂直平分线。