1

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

  1. 如何不仅猜测 RGB 中的主色,还尝试猜测一些复合值(例如洋红色)?
  2. 如何生成彩虹以便我可以使用它与 RGB 进行比较?

对于那些需要源代码示例的人,我正在寻找功能:

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

1 回答 1

3

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

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

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

于 2013-02-21T20:31:12.920 回答