您好,我最近看了您的文章”图像色彩增强之python实现——MSR,MSRCR,MSRCP,autoMSRCR”,对MSRCP算法处理图像精度有一些问题,希望得到您的解答!

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)
但是得到的值都是一样的

困扰多天,也查找了一些资料,并没有收获,望您不吝赐教,十分感谢!