对于this3d图像,它有6个类,分别是:
Impervious surfaces (RGB: 255, 255, 255)
Building (RGB: 0, 0, 255)
Low vegetation (RGB: 0, 255, 255)
Tree (RGB: 0, 255, 0)
Car (RGB: 255, 255, 0)
Clutter/background (RGB: 255, 0, 0)
我想把这个图像转换成二维图像,在这里
Impervious surfaces --> 0
Building --> 1
Low vegetation --> 2
Tree --> 3
Car --> 4
Clutter/background --> 5
我只能把for循环当作:
im = imageio.imread('kPUoO.png')
w,h = im.shape[:2]
im_ = np.zeros((w,h), dtype=np.uint8)
for i in range(w):
for j in range(h):
if list(im[i,j]) == [0,0,255]:
im_[i,j] = 1
if list(im[i,j]) == [0,255,255]:
im_[i,j] = 2
if list(im[i,j]) == [0,255,0]:
im_[i,j] = 3
if list(im[i,j]) == [255,255,0]:
im_[i,j] = 4
if list(im[i,j]) == [255,0,0]:
im_[i,j] = 5
我想知道有没有更简单的方法来做这项工作。谢谢!你知道吗
我试着考虑一个更一般的问题,在这个问题中,你可以有0到255之间的任何值出现在每个波段,或者甚至超过3个波段。。。你知道吗
我们可以通过对每列应用不同的位移位来对0和255的位置进行编码(0、1和/或2列中的0为0到3位,0、1和/或2列中的255为4到6位):
沿着最后一个轴的和唯一地编码这些类。除7是没有必要的,它只是给出了更简单的类标签。你知道吗
从那里它是一个标准的1:1映射来重新标记类。我认为对于较大的图像,或大量的图像,这种方法可能更快。你知道吗
要了解其工作原理:
等效公式为:
相关问题 更多 >
编程相关推荐