使用开源软件 enfuse 做照片的曝光合成

所谓曝光合成就是对同一场景用不同的曝光量拍摄多张照片,然后将这些照片再合成为一张照片。之所以我们要这么做是因为现在的相机感光的动态范围相比人眼实在是太小了,经常在一幅照片中暗处太暗,亮处过曝。曝光合成就是针对这种情况提出的算法。

在曝光合成算法出现之前,还有另外一种解决这个问题的手段,就是所谓的 高动态图像 (HDR) 技术。我们通常的图片是用 8 bit 来表示每个颜色分量的,所谓 HDR 就是用更多的位数来存放每个像素的亮度信息,甚至有些 HDR 的图像格式直接用浮点数来存储每个像素。如何得到 HDR 图像呢,有些相机直接可以输出,更多的还是通过不同曝光量的几张照片合成。可是我们通常的显示设备,比如液晶显示器,实际上是显示不了那么大的亮度变化的。所以在显示图像时,还要将 HDR 图像转化为通常的 LDR 图像。这个过程叫做 tone mapping。 tone mapping 的质量直接决定了最后显示出的图像的质量。关于 tone mapping 相关的论文很多,各种方法各有优缺点吧。

在 2007 年,Tom Mertens、Jan Kautz、Frank Van Reeth 提出了一种 Exposure Fusion 技术,这种技术不用先合成 HDR 图像,直接融合几张照片的信息,生成一副保留了各幅图像细节的合成图片。这个技术也就是今天要讲的曝光合成技术。

关于曝光合成的具体算法建议大家直接去看那篇经典的论文,这里不多介绍了。今天只介绍一个非常优秀的开源的图像融合软件 enfuse。软件的主页在这里:

http://enblend.sourceforge.net/

下面是一个小例子。我们有三张同一场景不同曝光量的照片。

IMG_9477.JPG


IMG_9476.JPG


IMG_9478.JPG

这三张照片是用佳能450D 单反相机的曝光包围功能拍摄的,三张曝光量依次增加 2EV。

enfuse 是个命令行软件,下面的命令需要 enfuse.exe 所在的路径在 PATH 环境变量中。否则会找不到这个命令。

enfuse.exe -o out.jpg --compression=100 --contrast-weight=0.0 --exposure-weight=1.0 --saturation-weight=0.0 IMG_9476.JPG IMG_9477.JPG IMG_9478.JPG

下面来解释一下上面的命令。

“-o” 用来指定输出文件的文件名。如果不指定,默认是 a.tiff。
“–compression” 是输出文件的压缩率,1-100 之间,100 就是不压缩。
“–contrast-weight” enfuse 做图像融合时可以利用图像局部的三种信息分别是对比度、曝光量和饱和度。这里是对比度的权重,最小为 0 最大为 1。
“–exposure-weight” enfuse 做图像融合时可以利用图像局部的三种信息分别是对比度、曝光量和饱和度。这里是曝光量的权重,最小为 0 最大为 1。
“–saturation-weight” enfuse 做图像融合时可以利用图像局部的三种信息分别是对比度、曝光量和饱和度。这里是饱和度的权重,最小为 0 最大为 1。

因此上面的命令行表明只用曝光量信息做融合,输入图像是IMG_9477.JPG IMG_9478.JPG 这三幅,融合后的文件名为 out.jpg。

下面是融合后的效果。


out.jpg

可以看到,融合后的效果很好。

使用开源软件 enfuse 做照片的曝光合成相关推荐

  1. 利用开源软件 Hugin 实现照片的景深合成

    利用开源软件 Hugin 实现照片的景深合成 本文主要参考了下面的文章:http://macrocam.blogspot.jp/2013/09/using-hugin-for-focus-stacki ...

  2. 开源做账软件_开源软件应该做广告吗?

    开源做账软件 鉴于我们对开源软件的依赖程度,人们会认为我们会有很多选择来支持编写代码的开发人员,但我们没有. 哦,可以肯定的是,如果这是一个涉及巨额资金的大型项目, 例如Kubernetes ,那么筹 ...

  3. 云启资本陈昱:开源软件公司市场估值已超平均市值 20 倍

    PART ONE 序言 2021年12月19日,云启资本合伙人.腾源会导师陈昱在由腾讯云 TVP 联合腾源会发起的闭门会上进行了<开源软件商业化路径和投资策略>的主题演讲.云启资本曾成功发 ...

  4. 我所理解的开源软件供应链安全

    供应链与断供 隐喻会帮助人,也会误导人. 当我们谈到"供应链"时,会产生哪些联想?环环相扣?缺一不可?掉链子?当我们这样去思考软件供应链,或者开源软件供应链时,同样的"意 ...

  5. COSCon'22 开源商业论坛 | 圆桌复盘:开源软件如何推进全球商业化?

    COSCon'22 开源社/KAIYUANSHE    近日,业界最具影响力的开源年度盛会--2022第七届中国开源年会 (COSCon'22) 圆满结束.作为从Day 1 开始的开源支持者,云启深度 ...

  6. 做移动端视频通话软件,大致看了下现有的开源软件(转)

    转自:链接 要做一个移动端视频通话软件,大致看了下现有的开源软件 一) sipdroid1)架构sip协议栈使用JAVA实现,音频Codec使用skype的silk(Silk编解码是Skype向第三方 ...

  7. 想做开源软件开发谁能带一下呀

    2019独角兽企业重金招聘Python工程师标准>>> 想做开源软件开发谁能带一下呀 转载于:https://my.oschina.net/u/200898/blog/130024

  8. 电脑做照片视频的软件用哪个?3步制作高清照片视频,超多酷炫转场效果

    电脑做照片视频的软件用哪个?在电脑上用什么软件做照片视频?如何快速做一个效果精美的高清照片视频? 今天直接教大家我一直在用的数码大师,做一个高清的精美照片视频吧,这里分享我的制作教程和效果截图: 在电 ...

  9. 做为一个开源软件开发者,需要什么样的开源许可证?(一)

    开源许可证教程 作者: 阮一峰 日期: 2017年10月11日 作为一个开发者,如果你打算开源自己的代码,千万不要忘记,选择一种开源许可证(license). 许多开发者对开源许可证了解很少,不清楚有 ...

最新文章

  1. android 程序 读logo,Android端APP更换logo和名称后都需要些测试哪些内容呢?
  2. 基因测序的回顾与展望
  3. iOS开发笔记[16/50]:Views
  4. 书呆子rico_寻找设计和类型书呆子的清道夫
  5. windows 本地搭建git仓库_Windows系统下搭建Git本地代码库
  6. Javascript正则
  7. (转)Linux中的screen命令使用
  8. 《从Excel到R 数据分析进阶指南》一2.6 查看数据表数值
  9. mysql代码创建表博客园_数据库——用代码创建表
  10. 如何加减单元格指定数字_表格怎么自动计算加减
  11. 安装ie9提示未能完成安装_win7系统32位旗舰版,IE8升级IE9失败,提示未能完成安装...
  12. PADS中常用无模命令快捷键
  13. win10如何关闭自动更新及修改更新时间
  14. HAN - Heterogeneous Graph Attention Network 异构图注意力网络 WWW 2019
  15. moviepy音视频剪辑:使用concatenate_videoclips和clips_array将多个视频合成一个顺序播放或同屏播放的视频
  16. java 判断域密码到期提醒_域帐号密码过期邮件提醒
  17. 官场直升机 鸿蒙笔著,担当:老衲笔尖无墨水,要从空处想鸿蒙
  18. Android 蓝牙自动打开并扫描设备,以及获取对方蓝牙设备的种类
  19. send sendto ,recv recvfrom有什么区别
  20. 汉字转16进制 php,PHP实现中文汉字与16进制编码转换

热门文章

  1. 手机怎么访问kodi_教你苹果手机(iPhone)上怎么装KODI (不用越狱)
  2. LUNA崩了背后的原因
  3. android微信分享图片踩坑之旅
  4. 记录、总结、复盘的重要性和方法(另有周报、月报、年度总结撰写方法)
  5. 安全狗技术研究论文入选中国科技核心期刊
  6. Flink 的背压机制(Back Pressure)
  7. putty 连接服务器 server refused our key
  8. Android 开发之Loading
  9. html中,将字符串对象数组转成对象数组
  10. css 签名字体,SVG 花样字体文本的自动签名动画