将8位图像增强至16位

3
我的目标是将8位图像提升到16位。换句话说,我想增加8位图像的动态范围。为了做到这一点,我可以按顺序拍摄多个8位图像,并保持场景和相机不变。为了简化问题,我们假设它们是灰度图像。
直观地说,我认为我可以通过以下方法实现目标:
1. 将两个8位图像相乘 ``` resimage = double(img1) .* double(img2) ``` 2. 对指定数量的8位图像进行平均处理 ``` resImage = mean(images,3) ``` 其中 `images(:,:,i)` 包含第 `i` 个8位图像。
之后,我可以将结果图像转换成16位图像。
resImage = uint16(resImage)

在测试这些方法之前,我想知道是否有其他方法可以做到这一点 - 除了购买16位相机,或者关于这个主题的文献可能更好。

更新:如下面的评论所显示,我得到了关于简单平均法的缺点以及关于图像堆栈用于增强的信息。因此,这可能是一个很好的研究课题。感谢大家的精彩评论。


2
你这样做是为了增加图像的分辨率吗?我可能错了,但是将两个8位图像相乘并不会增加图像中的细节。浮点值可能是16位的,但图像的质量不会提高。 - kkuilla
2
如果你看过我的第一篇帖子,即使你能克服那些问题,你仍然基本上是在进行一个移动平均,因此你会失去信息而不是获得。正如Jigg所说的,对多个图像进行平均可以减少白噪声/高斯噪声,是一种低通滤波器。边缘信息和更细节的细节将会消失,这样就限制了强度/颜色值的动态范围。顺便说一句,这是一个很酷的问题,但很遗憾我们不能给你想要的答案。 - rayryeng
3
OP希望增加图片的动态范围,但有些回答中将其与空间分辨率即像素计数混淆了。问题是是否可以通过整合来自个别8位图像的数据,将一组8位图像(可能为同一物体而没有移动)合并成一个具有更高动态范围的16位图像。我理解这是可行的,在天文成像中是常见实践,称为“图像堆栈”,多张图像叠加平均。请查看http://keithwiley.com/astroPhotography/imageStacking.shtml以获取解释。 - jcollomosse
3
我猜我当时有点困惑。我没有意识到原帖作者想要增加动态范围。在这种情况下,使用 HDR 也可以通过对场景进行多次曝光来实现。我以为原帖作者想要用相同的参数(曝光、照明等)拍摄同一环境的图像。在那种情况下,我不应该做出假设......我肯定自己很丢脸! - rayryeng
2
@jcollomosse:同意。我会点赞的。我还建议楼主稍微修改一下问题,因为它有误导性。我没有意识到目标是增加动态范围。 - rayryeng
显示剩余14条评论
2个回答

3
这个问题似乎涉及通过将多个8位曝光的信息集成到一个16位图像中来增加图像的动态范围。这与在天文成像和其他领域捕获和组合“图像堆栈”的做法有关。这里提供了这种做法的解释,以及它如何既能减少图像噪点,又能增强动态范围的内容:

http://keithwiley.com/astroPhotography/imageStacking.shtml

这个想法是,对同一场景的连续捕捉受到图像噪声的影响,而这种噪声会导致所捕捉的像素值出现随机变化。在最简单的情况下,可以通过求和和除以操作(即对堆栈进行均值平均)来利用这些变化,以提高其动态范围,但实际可行性非常取决于相机的噪声特性。

2
您想将许多图像相加,假设没有抖动且相机稳定。累加大量图像,然后除以某个数量。

请注意,要从8位源获取合理的16位图像,您需要拍摄数百张图像才能获得任何合理的结果。请注意,抖动会扭曲边缘信息,并且相机存在一定的噪声水平,这可能意味着您基本上是在“磨金属”。在实际情况下,您可能会从图像求和中获得2或3个数据位,但不会获得8个以上的数据位。要获得3个数据位,至少需要64个图像(6个数据位)进行求和。然后除以8(3个数据位),因为较低的数据位是无用的。

经验法则是,要获得一个新的数据位,您需要图像的平方(位数),因此3个数据位(8)表示需要64个图像,4个数据位需要256个图像,依此类推。

这里有一个关于采样的链接:

http://electronicdesign.com/analog/understand-tradeoffs-increasing-resolution-averaging

“实际上,可以证明改进程度与平均样本数的平方根成比例关系。”
“请注意,信噪比是对数刻度,因此将其等同于比特是合理的。”

太好了。你能给我一个可以参考的答案吗? - Tae-Sung Shin
这并不是惯例,而是信噪比问题。我会尝试找到参考资料。 - Jiminion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接