开启辅助访问
 找回密码
 立即注册

hdr合成的原理是什么?

fanter2008 回答数7 浏览数665744
用相机包围曝光拍的几张图放到camera raw里合成的工作原理是什么? Hdr的计算和PS里堆栈的计算一样吗? 如果不一样,hdr的算法是如何对几张相片进行取舍的?
StEwai | 未知
我不是计算机图形学的学生,这篇回答是将搜索到的资料选取整理后得出的。
不一定对,一定不全面。
答案来源:
Programmatic approach to HDR photography with Mathematica image processing functions(帖子回答)
http://rit-mcsl.org/fairchild//PDFs/PAP24.pdf(HDR算法罗列)
你看到的灰灰图像有两步:
    HDR合成色调映射


HDR算法有很多种而且在不断改进。
    Sigmoidal TransformationHistogram AdjustmentRetinexiCAMPhotographic ReproductionBilateral Filtering TechniqueModified iCAMLocal Eye AdaptionRetinex-Based Adaptive Filter
(都是找的,随便看看)
这里引用 Mathematica 论坛中的一个回帖,来看看 HDR 其中的一种算法。
先让四张曝光不同的照片,升序排列。

比较各个照片的曝光比,选取合适的部分,创建蒙版。(直译,不知道怎么选,也没图)
然后确定一条 brightness weight curve ,取消掉暗部低信噪比(signal-to-noise)的部分,然后去掉死白的部分(clipped area),曲线如下图。

观察蒙版的重叠情况。

将曲线应用于蒙版,得到如下效果图。

然后把他们合成(这里也没说是加权相加还是怎么样)

得到这样的一张图。我们可以改变它的曝光值来观察。

因为显示器能显示的范围有限,所以我们需要将这张HDR图像进行色调映射(如降低对比度)将图像的整体或者部分(过曝欠曝区域)进行压缩(线性或对数),来获得一张显示器可以完全显示细节的图像。
色调映射又是另外一种算法,基本是通过对灰度的归一化,再输出到 [0,255]区间上。算法也有很多种。最终看到的效果图应该是这样

灰灰的,丑丑的。然后再此基础上进行新的调整。增加对比度,增加饱和度等等。
堆栈和HDR算法的区别我懒得找了,但是我又猜了一下:HDR关注的是获得depth-of-field,所以会去注重对亮度的转换。而堆栈的种类有很多,有焦点合成的,有最大最小峰值均值中值等等,这些都是针对一组图像的差异。所以在计算亮度的同时,也会考虑到颜色。
用Deepseek满血版问问看
回复
使用道具 举报
srUjPzqr | 未知
没写过hdr的算法,根据原理猜测一下:
首先之所以需要包围曝光是因为LCD(包括胶片)的动态范围小于人眼,所以对暗的地方测光,亮的就过曝;对亮的测光,暗的就曝光不足了。所以需要不同的曝光参数,有些把暗部记录下来,有些把亮部记录下来,然后再合成
最简单的HDR算法可以是把所有照片的相应像素点的值做个平均。假设第一张照片是过曝的,第二张是曝光不足的。那么亮部体现在第一张上就是一堆白色(数字上就一堆255),暗部在第二张上就是一堆黑(数字0)。两张平均一下,亮部和暗部都会变成一个介于0跟255之间的数字,于是细节就都能看清了
这种方法简单粗暴,缺点就是照片显“灰”,对比度不好。关于HDR有不少算法,有兴趣可以看看。这里有OpenCV里面提供的几个算法介绍:High Dynamic Range (HDR)
回复
使用道具 举报
UWqDnJCv | 未知
简单讲就是,亮的照一张,暗的照一张,曝光正好的部分合起来,成了~
回复
使用道具 举报
hffirstboy | 未知
hdr只是一个概念。你讲的hdr是camera hdr,建议想系统了解经典算法的话 可以看看《exposure fusion》mertens的著作,当然这只是camera hdr其中一种方式,但是应该是非深度学习算法里camera hdr应用最广的吧。针对该算法以前做过些改进 申过专利。
回复
使用道具 举报
QijBNKob | 未知
我只知道用途不一样但是没研究过原理,hdr一般是为了弥补宽容度的不足从而保留更多细节,堆栈则是拍星轨或者叠风景照的云层什么的用的。
回复
使用道具 举报
aaron_cybertime | 未知
HDR是根据多张同一场景拍摄的多张不同曝光值照片合成的,因此它的色域很宽,可以达到32bit。对于什么样的算法,应该是开发人员搞的事情吧,普通人只要知道颜色信息比一般的图片丰富就可以了。
回复
使用道具 举报
sbs | 未知
HDR原理有很多,首先说一下sony,绝对的cmos界不可撼动的地位,同样的算法,用别人的sensor拍出来的效果就差,用sony就好很多。为什么?因为sony信噪比好并且电子数多。也就是说,正常LDR图片假如我们能够输出10bit,但是sony能给出14bit(具体数值是举例)。并且暗处的信噪比好,不怕在合成的时候乘gain,天然的hdr。
再说三星,三星的s8 HDR效果还是蛮好的,用的是自家sensor,具体是什么原理不清楚,据说是大小pixel。也就是各个像素点能够存储的电子数不同,或者曝光时间不同。
再说说我们常用的多帧长短曝序列合成的方法。对于静止图像这个其实不难,直接根据过曝和欠曝情况加权合成即可,在权重分配上,可以采用高斯模型,也可以按照相机响应曲线推出实际辐射度,对于ISP来讲,一般我们的相机响应曲线是已知的,基本上为线性,所以重点也就不在这部分。
难的地方在于运动带来的ghost,会导致合成的图像非常难看,关于这一点很多文献中也有相应的方法,比如SVD秩最小化,联合概率密度,以及匹配相关的算法。但是有一个问题文献中没有处理到,但是实际中又特别棘手。就是非过曝地方运动其实可以只考虑采用某一个曝光帧,而不使用其他曝光帧来最小化motion带来的影响,最难的地方就在于这样的场景:背景是过曝的窗外,而人就在过曝下运动,那么多帧图像中,过曝的信息是不能用的,多帧之间过曝非过曝很难合成,只有匹配的方法才有效果,但是计算量大,复杂,暂时很难硬件实现。包括三星s8 这部分处理的也不完美。
那么有没有解决办法呢?
有!强大的google重新定义了ISP,采用6帧等时短曝,然后通过patch进行叠加,效果特别好,既达到了HDR,又达到了DNOISE又达到了DBLUR。但是pixel one是用软件处理的,据说pixel two实现了硬件化,有兴趣的又有钱的可以买pixel two对比一下,效果是真的好。当然,网上也有开源代码!
回复
使用道具 举报
快速回复
您需要登录后才可以回帖 登录 | 立即注册

当贝投影