gpt4 book ai didi

image - 将RGB像素转换为波长

转载 作者:行者123 更新时间:2023-12-02 08:22:41 25 4
gpt4 key购买 nike

我需要识别从光源(光谱仪)发出的光谱。
为此,我需要将每个像素转换为波长。

为了克服 RGB 值没有单一值的问题,我将使用棱镜来获得光学晶格。这样,我收到了频谱的部署,频谱的差异仅沿 X 轴。

我的问题是,如何将像素转换为波长并接收作为波长函数的强度图。

example

最佳答案

  • 你必须从 wavelength 位置 得到 x
    您不能从颜色计算波长,因为两者不是一回事。所以首先你应该用已知的波长校准你的光谱仪。从那个推断函数:
    wavelength = f(x)

    通过 LUT 和插值,或通过近似多项式。有关更多信息,请参阅:
  • Piecewise cubic interpolation
  • Reverse complex 2D lookup table 虽然你只需要一维案例

  • 您可以使用太阳光作为引用,并根据已知的光谱 (Fraunhofer) 线进行校准。这里首先 example I found on google :

    Sun reference

    所以在我这里拍摄/绘制阳光:

    My shot of Sun

    交叉匹配 Fraunhofer lines (较暗的线,当心过度曝光的图像,它们可能会搞砸,强度也是 R+G+B 没有重量,我们不希望人类感知像转换)并制作一张已知波长 x 图像中位置的表格。从中插入您的 wavelength = f(x)

    正如你所看到的,我拍摄的太阳光谱或多或少与引用光谱相匹配(差异是由于光栅 Material 、拜耳滤光片、相机属性、云和大气等造成的……)。弗劳恩霍夫线如何不容易被局部最小值检测到,所以可能是一些用户辅助 GUI 样式将是一个更好的开始。

    但请注意,WEB 上的大多数光谱图像都是错误的或非线性的或偏移的!!! 所以为了确保我从线性化光谱数据 like this 和这里的结果 400-700 [nm] 创建了一个引用光谱:

    real linearized unshifted sunlight spectra

    这里的情节:

    plot for real data

    灰线是 400-700 nm 的网格,步长为 10 nm。

    以下是您的设置应如下所示:

    spectro-meter

    这是来自我的光谱仪的图像(查看我的 LCD 上的白色区域):

    White on my LCD

    我使用的是由 DVD 制成的光栅,因此是圆弧形状。现在,如果您的相机相对于棱镜处于固定位置,那么对于选定的水平线,像素的 x 位置直接对应于特定波长。

    如果您没有看到任何 Fraunhofer 线,那么您在棱镜/光栅之前缺少光圈。我通常使用由薄纸设置的 0.1 mm 距离的 2 个 Razor 片。如果您的图像失焦,您需要在相机/传感器之前添加镜头,或者添加更多的外部光线屏蔽。

    正如我之前提到的 您无法从颜色 中获取波长,因为输入光谱的“无限”组合会产生相同的 RGB 响应。例如,采用白色......它可以由 3 个或更多不同的波长组成,甚至可以由连续的白噪声组成。所以从RGB你无法分辨它是哪一个......如果你还加上棱镜/光栅组合的x位置,那么你可以获得波长,但它会更复杂,更不精确,然后直接从 x位置转换...
  • 从 RGB 计算强度

    这可能有点棘手,因为您的传感器可能对不同的波长具有不同的灵敏度。您可以将强度归一化,类似于 #1 。只需拍摄已知强度的光源并估算丢失的波长即可。这也可以用阳光作为光源来完成

    从标准化颜色中,您只需计算灰度强度即可。

    为了提高准确性,您可以对相同 x 的所有像素进行平均。

    此外,为了提高准确性和灵敏度,通常会通过设计或删除 Bayer filter 来使用非颜色传感器(主要是线性相机),这样它就不会弄乱数据。
  • 绘制数据

    x轴是波长,y轴是强度。如果要应用光谱颜色,可以使用:
  • RGB values of visible spectrum

  • 请注意校准数据可能会随温度变化...

    关于image - 将RGB像素转换为波长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35481345/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com