'Numpy图像替换具有相同值的区域'

2024-10-08 23:23:19 发布

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

所以我有一个灰色的(2D)图像类型np.数组里面有很多物体。每个对象由其具有相同值的像素定义,例如1.23e15。在

我现在想给图像加上标签,也就是说,我想把某个值的所有像素(例如上面值1.23e15的200个像素)重新缩放为一个整数。 除了背景值为零之外,我希望每个区域都设置为范围内的值之一(1,nbr_of_regions_in_img+1)。在

如果没有明显的循环解决方案,我该如何高效地完成这一次(我有成百上千张图片)?在


Tags: 对象图像区域类型定义np整数像素
1条回答
网友
1楼 · 发布于 2024-10-08 23:23:19

Scipy有一个用于图像处理和分析的extensive library。您要查找的函数可能是^{}

import scipy.ndimage
import numpy as np

pix = np.array([[0,0,1,1,0,0],
                [0,0,1,1,1,0],
                [1,1,0,0,1,0],
                [0,1,0,0,0,0]])
mask_obj, n_obj = scipy.ndimage.label(pix)

输出为您提供了一个带标签的掩码,每个标识的对象具有不同的编号,以及标识的对象的数量。在

^{pr2}$

您还可以使用structure参数定义应计为相邻单元格的内容:

s = np.asarray([[1,1,1],
                [1,1,1],
                [1,1,1]])

mask_obj, n_obj = scipy.ndimage.label(pix, structure = s)
>>>print(n_obj)
>>>1
>>>print(mask_obj) 
>>>[[0 0 1 1 0 0]
    [0 0 1 1 1 0]
    [1 1 0 0 1 0]
    [0 1 0 0 0 0]]

如果不同的物体互相接触,也就是说它们没有被零值分开,就会出现困难。在

相关问题 更多 >

    热门问题