3

我有两张图像,都是从同一个探测器同时拍摄的。

两个图像都有11 位分辨率(是的,这很奇怪,但这里就是这种情况)。两幅图像之间的区别在于,一幅图像被放大了 1 倍, 而另一幅图像被放大了10倍。

如何获取这两个11 位图像,并组合它们的像素值以获得单个16 位图像?基本上,这增加了最终图像的动态范围。

我对图像处理相当陌生。我知道有一个解决方案,因为其他系统在 FPGA 中逐个像素地执行此操作。我只是希望能够在 Matlab 后期处理中而不是在现场中做到这一点。我知道在 Matlab 中进行按位运算可能有点困难,但我们确实拥有每个可用工具箱的教育许可证。

如下所述,这看起来非常像 HDR 处理。目标不是艺术,而是数据保存。这最终将被放入 C++ 并在自主飞行计算机上飞行,并且在运行中运行标准臃肿的 HDR 软件会扼杀我们的时间要求

谢谢您的帮助!

作为旁注,我希望能够为任何收益组合做到这一点。即 2x 和 30x、4x 和 8x 等。在我的直觉中,我觉得这是一个看似简单的算法或插值,但我只是不知道从哪里开始。

收益

由于收益的含义存在一些混淆,我将尝试解释。我们定制相机上使用的图像传感器 (CMOS) 能够同时输出两个单独的图像,这两个图像都是从相同的曝光中拍摄的。它可以做到这一点,因为传感器在其数据路径上有2 个不同的电子放大器。

在摄影方面,就像您的 DSLR 能够同时使用2 个不同的 ISO 值拍照一样。

对困惑感到抱歉

4

2 回答 2

3

您提出的问题被称为“高动态范围成像”“色调映射”。我建议您从那些 Wikipedia 文章开始,然后深入到其中引用的参考书目。

您没有提供有关图像的足够详细信息,无法给出更具体的答案。你提到的“收获”是什么?您是否提高了传感器的增益(达到 ISO 等效数字?),或者您是否使用了更长的曝光时间?11 位像素值是线性的还是已经进行了伽马压缩?

于 2012-06-12T01:46:07.873 回答
0

将 11 位范围放大到 16 位范围,乘以 (2^16-1)/(2^11-1)。
假设您想要线性缩放。(按比例放大时这是合理的。)

如果增益是离散的(应用于 11 位范围),那么您有两个 11 位图像,其中可能有一些值饱和。

如果在连续(模拟)或浮点范围内应用增益,那么您的值可能会超出原始 11 位。此外,如果增益应用于连续(模拟)或浮点范围,则可能首先将值缩放到另一个范围,例如 [0,1](除以 (2^11-1))。如果将值缩放到另一个范围,则必须除以新范围的最大值而不是 (2^11-1)。

无论哪种方式(无论增益是否在 11 位范围内),由于增益和添加,结果值可能大于原始范围。在这种情况下,您需要决定如何缩放它们:

  • 是否要将原来的 11 位范围缩放到 16 位(可能导致饱和)?
    如果是乘以 (2^16-1)/(2^11-1) 的倍数

  • 您想将最大可能值缩放到 2^16-1 吗?
    如果这样乘以 (2^16-1)/( (2^11-1) * (G1+G2) )

  • 是否要将实际最大值缩放为 2^16-1?
    如果这样乘以 (2^16-1)/(max(sum(I1+I2))

编辑:

由于您不想添加图像,而是使用其中的不同细节,也许这篇文章会对您有所帮助:

带闪光灯和无闪光灯图像对的数码摄影

于 2012-06-12T02:04:41.630 回答