def MSRCP(img, sigma_list, low_clip, high_clip):
img = np.float64(img) + 1.0 这里为什么要对图像+1呢,是因为float的范围在[-1,1]或[0,1]吗
intensity = np.sum(img, axis=2) / img.shape[2]
retinex = multiScaleRetinex(intensity, sigma_list)
intensity = np.expand_dims(intensity, 2)
retinex = np.expand_dims(retinex, 2)
intensity1 = simplestColorBalance(retinex, low_clip, high_clip)
intensity1 = (intensity1 - np.min(intensity1)) / \
(np.max(intensity1) - np.min(intensity1)) * \
255.0 + 1.0 这里为什么是256呢
img_msrcp = np.zeros_like(img)
for y in range(img_msrcp.shape[0]):
for x in range(img_msrcp.shape[1]):
B = np.max(img[y, x])
A = np.minimum(256.0 / B, intensity1[y, x, 0] / intensity[y, x, 0]) 这里我看原论文对放大系数的公式是255/B,这里为什么是256呢
img_msrcp[y, x, 0] = A * img[y, x, 0]
img_msrcp[y, x, 1] = A * img[y, x, 1]
img_msrcp[y, x, 2] = A * img[y, x, 2]
img_msrcp = np.uint8(img_msrcp - 1.0) 这里我想可能我不懂+1,所以也不懂-1
我的解答思路和尝试过的方法
我尝试输出
img = np.float64(img) + 1.0
print(img)
img1 = np.float64(img) + 1.0
print(img1)
但是得到的值都是一样的
困扰多天,也查找了一些资料,并没有收获,望您不吝赐教,十分感谢!