如何使用 PIL Lib 将图像标准化为 0 255 范围

How to normalize image to range 0 255 with PIL Lib

我对灰度图像归一化有疑问。 OpenCV 有一个 cv2.normalize() 方法(带有代码中的参数),但我需要使用 Pillow 库 来读取图像和 numpy 来对它们进行操作。 我需要将其从输入范围标准化为 [0,255]。 这是我的代码,但结果很糟糕。

def disparity_normalization(self, disp): # disp is an array in uint8 data type
        # disp_norm = cv2.normalize(src=disp, dst= disp, beta=0, alpha=255, norm_type=cv2.NORM_MINMAX)
        _min = np.amin(disp)
        _max = np.amax(disp)
        disp_norm = disp - _min * 255.0 / (_max - _min)
        disp_norm = np.uint8(disp_norm)
        plt.imshow(disp_norm)
        plt.show()

        return disp_norm 

编辑: 函数的最小值和最大值是正确的,但绘图给出了错误的结果。

Here is function plot

Here is cv2.normalize() plot

我想你忘记了括号。

大概应该是:

def disparity_normalization(self, disp): # disp is an array in uint8 data type
        # disp_norm = cv2.normalize(src=disp, dst= disp, beta=0, alpha=255, norm_type=cv2.NORM_MINMAX)
        _min = np.amin(disp)
        _max = np.amax(disp)
        #disp_norm = disp - _min * 255.0 / (_max - _min)
        disp_norm = (disp - _min) * 255.0 / (_max - _min)
        disp_norm = np.uint8(disp_norm)
        plt.imshow(disp_norm)
        plt.show()

        return disp_norm