首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Matlab/ C++中结合两幅不同增益的图像

如何在Matlab/ C++中结合两幅不同增益的图像
EN

Stack Overflow用户
提问于 2012-06-11 21:16:10
回答 2查看 966关注 0票数 3

我有两张照片,都是同时从同一台探测器上拍摄的。

这两幅图像都具有11位分辨率(是的,很奇怪,但这里就是这样)。这两幅图像的不同之处在于,一幅图像被1的倍数放大,另一幅被10的倍数放大。

如何将这两幅11位图像组合成像素值,得到一幅16位图像?基本上,这增加了最终图像的动态范围。

我对图像处理相当陌生。我知道这是有解决方案的,因为其他系统都是在FPGA中逐像素运行的。我只是希望能在Matlab的后置处理中完成这个任务,而不是现场直播。我知道在Matlab中进行按位操作可能有些困难,但是我们确实有一个教育许可证,每个工具箱都有。

正如下面提到的,这看起来很像HDR处理。目标不是艺术,而是数据保存。这最终将被放入C++中,并在自主飞行的计算机上飞行,运行标准的膨胀的HDR软件就会扼杀我们的计时要求。

谢谢你的帮助!

顺便提一句,我希望能在任何收益组合中做到这一点。2倍和30倍,4倍和8倍等。在我的直觉中,我觉得这是一个看似简单的算法或插值,但我只是不知道从哪里开始。

增益

由于对收益的含义有些混淆,我试着解释一下。在我们的自定义相机上使用的图像传感器(CMOS)具有同时输出两个不同的图像的能力,这两个图像都是从相同的曝光中获取的。它可以做到这一点,因为传感器有2不同的电放大器沿其数据路径。

在摄影方面,就像你的单反可以同时使用2不同的ISO值拍照一样。

抱歉给你添乱了

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-12 01:46:07

你提出的问题被称为“高动态范围成像”“声调映射”。我建议你从维基百科的文章开始,然后钻研其中引用的书目。

你没有提供关于你的图像的足够的细节来给出一个更具体的答案。你提到的“收益”是什么?你是提高了传感器的增益(达到什么ISO-等效数字?),还是使用了更长的曝光时间?11位像素值是线性的还是已经压缩的?

票数 3
EN

Stack Overflow用户

发布于 2012-06-12 02:04:41

将11位范围提升到16位范围乘以(2^16-1)/(2^11-1)。

(__假设您想要线性缩放.(这在扩展时是合理的)。

如果增益是离散的(适用于11位范围),则有两个11位图像,它们的值可能饱和。

如果增益在连续(模拟)或浮点范围内应用,那么您的值可以超出原始的11位。此外,如果增益被应用在连续(模拟)或浮点范围内,那么这些值可能首先被缩放到另一个范围,例如0,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)/(最大值(I1+I2))

编辑:

由于您不想添加图像,而是使用它们中的不同细节,所以本文可能会帮助您:

闪光灯和无闪存图像对的数字摄影

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10987641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档