技术说起来不复杂,但是传感器是在索尼定制的,效果很棒,所以整个市场占有率来说奥林巴斯处于垄断地位。可是,所谓的窄带技术,其光谱范围在普通照明的连续光谱中是存在的,为什么我们不能直接提取这些光谱?
结果就回到了我们三原色技术的起点,我们通过三种颜色的滤光膜来获得光源中三原色的分量,而滤光膜对于光谱的选择是宽带的,实际上我们的红绿蓝三原色,在CMOS的光电二极管中,是包含了其它的光谱,例如红色会覆盖部分橙色,绿色会覆盖部分蓝色和黄色,蓝色又会覆盖部分绿色和紫色。
而获取的光电信号到显示端显示的时候,又是通过混色得到的,而不是纯色。自然界中的橙色,是橙色630nm左右的光谱,而我们显示的时候,橙色却是红色和绿色依照一定比例混合显示出来的。下图就是标准色版在电脑显示屏上显示的时候,橙色对应的光谱。
所以从现在的原理上来说,是没办法从电脑端实现将某一段光谱直接取出,因为源头上得到的就是已经混色以后的电压信号。
经过考察,以及和做CIS的专家沟通,现在确实有一种叫多光谱传感器的CIS,但实际上只是把原来的三原色的滤光膜,变成了8原色、16原色等多种滤光膜,因此可以获得更细分的图像信息,实际上的成像原理并没有改变。
而现有的光谱传感器是对输入的光源信号进行色散,然后透射到一个线性CMOS传感器上,每一个像素对应着一个频率的光线,因此读取CMOS上的电压就可以直接得到该频率光线的光强,进而绘制出整个光谱范围的曲线,而上面的图就是这样的原理的光谱仪绘制出的曲线。
那么如果我们获得每一个像素点的光谱曲线,那么可不可以获得更多的影像信息?理论上当然是没有错。于是我找来了一张标准24色图,并使用光谱仪获取每一个色块的光谱信息。
然后将所有的数据放到一个excel表格中,由于数据太多,这里就不复制了。
随后用vb编写了一个数据分析的软件,这里吐槽一下,vs2019最新版本安装以后,生成一个vb的空程序编译竟然会直接报错,神奇的很,没办法只好卸载了重新安装2017版本,就成功运行。虽然去年学了一下python,但是实际使用中发现,对于我这样偶尔需要一个桌面的小程序的外行,BCB死了以后,vb确实要更适合。
上面是界面截图,其实大家不要被迷惑了,我只是为了好看而绘制了类似的方格,用解析的颜色填充,但实际上只是24个点而已。
第一行两个黑白图像,第一个是单一频率下,24个点的灰度值;第二幅是该灰度值图像增强对比度拉伸后的效果,说明还是获取到了一定的图像。
第三幅图是456nm、515nm、710nm三个频率的光谱当做三原色合成的图像。
中间两幅,左边的是把380nm-505nm全部算成蓝色,506-630nm全部算成绿色,631-780nm全部算成红色,合成的图像;右边是截取其中一部分,将407-505为蓝色,506-525为绿色,640-730为红色,比较接近实际三原色的光谱范围,合成以后的图像还是有点接近原始标准色板的意思。
最下面三幅图像是三原色的分别图像数据。
从上面的图像效果来看,确实从光谱上是可以得出一个图像的,但是由于一开始所讲述的三原色成像及显示的机理,导致光谱和三原色如何对应,还是没能摸出规律,还需要进一步的研究分析。
重新用别的图像来测试,颜色更加单一。
从反映的效果来看,蓝色分量较多。
但是为什么颜色不对?然后在某一天夜里突然意识到问题在什么地方,这或许就是程序员喜欢夜里加班的原因,其实原因很简单,就是我把颜色对应的频率给弄错了。
如上图所示,三原色的光谱对应的峰值频率经过数据分析,是447、520、600,而不是一开始根据光谱分段的定义取的456、515、710;另外,数据分析发现,原来统计的24色板的数据,第一个色块数据错误,导致所有的数据都偏移了一格,所以看起来很像,又差别很大,数据修正后呈现的效果如下图,就和原始的色板非常的接近了。
程序上也做了一些修改,将原来红绿蓝分别根据最大值的比例进行归一化操作的,导致蓝色会比例偏大的问题,改成统一的放大倍数,例如上图中三原色图像是数据放大99倍,下图中累计的数据是放大2倍所呈现出的效果。
从当前的测试结果中可以看出,达到了我最初的设计目标,也证实了我用全光谱数据可以获得图像信息的猜测。也许这是未来影像的发展趋势,将使用全光谱数据来取代现有的区分可见光、红外、紫外等多传感器的设计,显示也会取代三原色的图像模式,将会进一步拓展我们的视野。
作者: 忆轻狂, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-1384650.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
yzw92 2021-5-22 08:48