提取非零像素的坐标时,方向二进制图像似乎已移动

时间:2019-08-09 09:09:17

标签: python binary coordinates scatter imshow

我有一个很大的二进制jpg文件。这个想法是提取一小部分并找到形状。稍后,我要制作形状的形状文件。我采取的步骤: 1.加载图像并裁剪 2.图像模糊 3.骨架化图像 4.提取骨架图像的坐标非零值 5.进行一些插值(代码中未显示) 6.转换坐标(我刚刚添加了差异),使其具有与大图像内原来的坐标相同(裁剪之前) 7.从相同大小的原始jpg的tiff文件中提取地理参考数据。将它们绑定到我们的形状并创建形状文件。 我的最终形状文件产品似乎被翻转了。因此,我在整个编码过程中都进行了检查,提取坐标后图像的方向似乎发生了变化。当我使用imshow显示矩阵时,方向都很好。当我使用散点图显示点的坐标时,方向是关闭的。

ds = gdal.Open(‘path_to/binary.jpg')
image = ds.ReadAsArray()
image_crop = image[28500:30000,25500:28000]

def blur(image,resblur):
    blur = cv2.blur(image,(resblur,resblur))
    blur = (blur-np.min(blur))/(np.max(blur)-np.min(blur))
    blur[blur<=np.mean(blur)] = 0
    blur[blur!=0]=1
    return blur

blur = blur(image_crop,50)
plt.imshow(blur)

def skel_coordinates(blur):
    skel = skeletonize(blur)
    skel = np.uint8(skel)

    y,x = np.nonzero(skel)
    coords = np.transpose(np.vstack([x, y]))
    return skel, coords

skel,coords = skel_coordinates(blur)
plt.imshow(skel)
plt.imshow(coord[:,0],coord[:,1])

x = x + 25500
y = y + 28500

0 个答案:

没有答案