在提取非零像素的坐标时,二值图像的方向似乎发生了偏移

2024-10-01 19:27:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个相当大的二进制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

Tags: 文件图像imagenpdspltcoords方向

热门问题