|
StEwai
| 未知
我不是计算机图形学的学生,这篇回答是将搜索到的资料选取整理后得出的。
不一定对,一定不全面。
答案来源:
Programmatic approach to HDR photography with Mathematica image processing functions(帖子回答)
http://rit-mcsl.org/fairchild//PDFs/PAP24.pdf(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,所以会去注重对亮度的转换。而堆栈的种类有很多,有焦点合成的,有最大最小峰值均值中值等等,这些都是针对一组图像的差异。所以在计算亮度的同时,也会考虑到颜色。 |
|