所以我想把我的网络摄像头变成一个简单的光谱仪。因为整个过程不仅仅是相机芯片,而且还有获得我必须使用RGB的值的框架。这让我问自己一个问题:我能猜出每个灯光的主波长是什么?
在它到达相机之前,会有一块CD或晶体将光束分解成碎片,但我仍然需要进行一些自校准。而且,我喜欢漂亮的图表
除了转换RGB之外,另一种解决方案可能是生成完整的光谱作为彩虹并将RGB与光谱进行比较。这可能吗?
问题摘要(让我为downvoters说清楚):
对于那些需要源代码示例的人,我正在寻找功能:
int rgb2wave(int r, int g, int b) {
/*some code*/
return wavelength;
}
答案 0 :(得分:3)
如果使用的是衍射光栅或色散棱镜,则像素位置决定波长。
RGB滤镜的问题在于它们会影响给定波长的像素的灵敏度。如果您想要对光谱进行良好估计,则需要分别校准红色,绿色和蓝色像素的响应。
您可以通过比较附近的红色,绿色和蓝色像素的响应来做到这一点。由于附近的像素将会看到几乎相同频率的光线,因此您可以通过观察一个简单的近黑体光源(如白炽灯泡)来提取这种校准。