寻找混合颜色的起源作为波长

时间:2013-02-21 19:53:17

标签: c++ algorithm colors

所以我想把我的网络摄像头变成一个简单的光谱仪。因为整个过程不仅仅是相机芯片,而且还有获得我必须使用RGB的值的框架。这让我问自己一个问题:我能猜出每个灯光的主波长是什么? 在它到达相机之前,会有一块CD或晶体将光束分解成碎片,但我仍然需要进行一些自校准。而且,我喜欢漂亮的图表 除了转换RGB之外,另一种解决方案可能是生成完整的光谱作为彩虹并将RGB与光谱进行比较。这可能吗?
问题摘要(让我为downvoters说清楚):

  1. 如何不仅猜测RGB中的主色,还尝试猜测一些复合值(例如洋红色)?
  2. 如何生成彩虹,以便我可以用它来与RGB进行比较?
  3. 对于那些需要源代码示例的人,我正在寻找功能:

    int rgb2wave(int r, int g, int b) {
        /*some code*/
        return wavelength;
    }
    

1 个答案:

答案 0 :(得分:3)

如果使用的是衍射光栅或色散棱镜,则像素位置决定波长。

RGB滤镜的问题在于它们会影响给定波长的像素的灵敏度。如果您想要对光谱进行良好估计,则需要分别校准红色,绿色和蓝色像素的响应。

您可以通过比较附近的红色,绿色和蓝色像素的响应来做到这一点。由于附近的像素将会看到几乎相同频率的光线,因此您可以通过观察一个简单的近黑体光源(如白炽灯泡)来提取这种校准。