首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python OpenCV中绘制图像日志-色度图

如何在Python OpenCV中绘制图像日志-色度图
EN

Stack Overflow用户
提问于 2017-12-10 00:02:01
回答 1查看 1.1K关注 0票数 1

我正试图用OpenCV在python中创建一个2D日志色度图。这里也提出了同样的问题。

如何计算二维对数色度?

但没人回答。

(撇开:猜测轴必须是对数而不是线性,但这是不正确的,因为文件使用负坐标,日志轴不能是负的。而且,我被剥夺了权利,尝试了plt.xscale('log')plt.yscale('log'),但没有成功)。

这项工作是以本文为基础的:

https://www.cs.sfu.ca/~mark/ftp/Eccv04/

(我在下面再提一下)

我的代码:

代码语言:javascript
复制
import numpy as np
import cv2
import os
import matplotlib.pyplot as plt

root = r'.\path\to\root'
root = r'my_img.jpg'

if __name__ == '__main__':

    img = cv2.imread(os.path.join(root, fl))

    cv2.imshow('Original', img)
    cv2.waitKey(0)

    b, g, r = cv2.split(img)

    img_sum = np.sum(img, axis = 2) # NOTE: This dtype will be uint32.
                                    #       Each channel can be up to
                                    #       255 (dtype = uint8), but
                                    #       since uint8 can only go up
                                    #       to 255, sum naturally uint32

    # "Normalized" channels
    # NOTE: np.ma is the masked array library. It automatically masks
    #       inf and nan answers from result

    n_r = np.ma.divide(1.*r, g)
    n_b = np.ma.divide(1.*b, g)

    log_rg = np.ma.log( n_r )
    log_bg = np.ma.log( n_b )

    plt.scatter(l_rg, l_bg, s = 2)
    plt.xlabel('Log(R/G)')
    plt.ylabel('Log(B/G)')
    plt.title('2D Log Chromaticity')
    plt.show()

输入:

色标图

结果:

我的对数色度图

预期结果:

Finlayson对数色度图

预期结果取自本文(“熵极小化的本征图像”),作者: Finlayson,G,et。(A))

https://www.cs.sfu.ca/~mark/ftp/Eccv04/

(上文亦提及的文件)

,你能帮帮我吗?!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-10 04:49:57

这是我能想到的最接近的了。阅读以下内容:

ICCV03.pdf

我偶然发现了一句话:

图2(a)显示了麦克白ColorChecker图的24个表面的对数色度,(六个中性斑块都属于同一簇)。如果我们现在改变每个斑块__的照明和图的中值,我们可以在图2(B)中看到曲线。

如果你仔细看一下对数色度图,你会看到19个斑点,对应于麦克白图中的18种颜色,再加上下面一行所有6个灰度目标的总和:

对数色度的解释

使用1张图片,我们只能得到每个的一个点:我们取每个目标内的中值并绘制它。为了从纸上得到情节,我们必须用不同的灯光创建多幅图像。我们可以通过改变图像编辑器中图像的温度来做到这一点。

现在,我只看了原始图像中的色块,并绘制了以下几个点:

输入:

输出:

图中的点并不都和纸在同一个地方,但我认为它是相当接近的。请有人检查一下我的作品,看看这是否合理?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47734513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档