如何用正负值重新缩放矩阵以将0到255之间的范围映射为0并固定映射

问题描述 投票:0回答:1

给出具有负值和正值的矩阵,如何映射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

python numpy colors scale cv2
1个回答
0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.