给出具有负值和正值的矩阵,如何映射0和127之间的负数以及128和255之间的正数,零始终映射到128?这应该适用于不同初始范围的矩阵。
例如
m1 = [[-25, 21, 1],[0, 0, 231],[-0.9, 0, 3]]
m2 = [[0.1, 0.5, -0.2],[-0.3, 0, 0.012],[0, 0.9, -0.8]]
m3 = [[-0.1, -0.5, -0.2],[-0.3, 0, -0.012],[0, -0.9, -0.8]]
输出将像:
m1 = [[x, x, x],[128, 128, x],[x, 128, x]]
m2 = [[x, x, x],[x, 128, x],[128, x, x]]
m3 = [[x, x, x],[x, 128, x],[128, x, x]]
其中x
是正比例值。
创建颜色图的最终代码是:
m = reschale(m)
colormap = cv2.applyColorMap(m, cv2.COLORMAP_JET)
我需要一种方法来实现功能rescale
。
Edit:我的初始代码修改了矩阵。可能您不想这样做,所以我正在尝试修复它。
如果您的矩阵是列表(看起来如何):
import copy
def rescale(m):
cpy = copy.deepcopy(m)
for i in range(len(cpy)):
for j in range(len(cpy[i])):
cpy[i][j] += 128
return cpy
或者如果您改用numpy数组,例如m1 = np.array([[-25, 21, 1],[0, 0, 231],[-0.9, 0, 3]])
,您可以执行以下操作:
def rescale(m):
m += 128
return m