如何使用 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
我对灰度图像归一化有疑问。 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