吉祥如意12 2022-04-29 22:58
浏览 365
已结题

您好,我最近看了您的文章”图像色彩增强之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)
但是得到的值都是一样的

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

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 5月7日
    • 创建了问题 4月29日

    悬赏问题

    • ¥15 java面向对象程序设计
    • ¥20 Keil uVision5创建project没反应
    • ¥15 mmseqs内存报错
    • ¥15 vika文档如何与obsidian同步
    • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
    • ¥15 陆空双模式无人机飞控设置
    • ¥15 sentaurus lithography
    • ¥100 求抖音ck号 或者提ck教程
    • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)
    • ¥20 web页面如何打开Outlook 365的全球离线通讯簿功能