2017-04-02 96 views
1

我有一个point cloud 并希望从中提取点的坐标。使用opencv解析点云的图像

下面的python opencv(3.2.0-dev)脚本用于提取。

image = cv2.imread(PIC_FILE) 
image_gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY) 
_,image_thres = cv2.threshold(image_gray, 230, 255, cv2.THRESH_BINARY) 
image_thres = 255 - image_thres 
pixelpoints = np.transpose(np.nonzero(image_thres)) 

但问题是,对于一个点,其中包含多个像素在图片中,我得到多个点坐标。

目前值​​约为9000,这似乎比我们在图片中看到的要多得多。

如何将这些多个像素合并为一个坐标,例如 - 是点的中心?

回答

0

我很肯定你不能用你提供的图像达到预期的效果。至少,精度不高。鉴于第一像素点导致类似:

[ 13 118][ 13 125][ 13 126][ 13 127][ 13 131][ 13 132][ 13 133][ 14 117][ 14 118][ 14 119][ 14 123][ 14 124][ 14 125][ 14 126][ 14 127][ 14 131][ 14 132][ 14 133]

你当然可以组这些根据其轴线之一。您还可以将最大数量的像素点设置为与单个点相关。但是,您的图像还包含多个区域,其中点放在一起,重叠,因此您无法确定这些区域中有多少点。此外,点的形状不相似,有些是3个像素宽,有些则只有2个等,并且它们保持旋转。总体而言,您可能可以调整您的猜测,但是您不会与当前图像完美匹配。我不太熟悉颠簸虽然..也许它有一些功能来创建一个更好的估计,但仍然这些算法可能达到一个受过教育的猜测充其量与提供的图像。