我的目标是将8位图像增强到16位图像。换句话说,我想增加8位图像的动态范围。为此,我可以按固定场景和固定摄像头顺序拍摄8位的多个图像。为简化问题,我们假设它们是灰度图像
直觉上,我认为我可以通过
实现目标将两个8位图像相乘
resimage = double(img1) .* double(img2)
平均指定数量的8位图像
resImage = mean(images,3)
假设images(:,:,i)
包含i
8位图像。
之后,我可以将结果图像设为16位。
resImage = uint16(resImage)
但在测试这些方法之前,我想知道还有另一种方法可以做到这一点 - 除了购买16位相机,或者这个主题的文献可能会更好。
更新:正如下面的评论显示的那样,我获得了关于上面和图像堆栈上的简单平均的缺点的很好的信息,用于增强。毕竟,这可能是一个很好的研究课题。感谢大家的好评。
答案 0 :(得分:3)
这个问题似乎与通过将来自多个8位曝光的信息整合到16位图像中来增加图像的动态范围有关。这与在其他领域中捕获和组合天文成像中的“图像堆栈”的实践有关。这里可以解释这种做法以及如何降低图像噪声和增强动态范围:
http://keithwiley.com/astroPhotography/imageStacking.shtml
这个想法是相同场景的连续捕获受到图像噪声的影响,并且这种噪声导致所捕获的像素值的随机变化。在最简单的情况下,这些变化可以通过求和和分频来利用,即均值平均叠加以改善其动态范围,但实用性在很大程度上取决于相机的噪声特性。
答案 1 :(得分: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
“事实上,可以证明这种改善与平均样本数量的平方根成正比。”
请注意,SNR是对数刻度,因此将其与位等同是合理的。