【问题标题】:Finding origins of mixed color as wavelength [duplicate]寻找混合颜色的起源作为波长[重复]
【发布时间】:2013-02-07 07:03:09
【问题描述】:

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

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

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

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

【问题讨论】:

  • 为什么要投票?我也需要这个问题的答案!
  • 这与特定的编程问题几乎没有关系。
  • @TylerDurden:认为编程问题必须用一些代码来表示的观点仅表明您的想象力不足。理论上提出问题并不意味着解决方案不会作为程序实施。
  • 有一些 SE 网站可以提出理论问题,这不是其中之一。事实上,这里的常见问题解答指出,好的问题应该与问题的编程部分相关。

标签: c++ algorithm colors


【解决方案1】:

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

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

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

【讨论】:

  • 如果驱动程序或软件尝试进行白平衡补偿,您会发现 RGB 输出完全无法校准。
  • 驱动平衡以及光学过滤器将被移除或禁用。我会为此选择合适的网络摄像头。
  • 由于社区认为我不值得回答我的问题(我已阅读并且对链接为重复的问题不满意),我将接受此作为至少奖励即将到来的风暴努力的答案。
  • @TomášZat我认为您还没有找到好的答案的原因是这是一个难题。如果您想更多地关注另一个问题,您可以随时悬赏,甚至提供返回该问题的链接。
  • @MarkRansom 你完全正确,我会尝试提出一个更好的问题。
猜你喜欢
  • 2015-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多