一种高动态范围图像自动拍摄装置的设计与制作
2022-07-07杨润天
摘 要:由于硬件设备的限制,高动态范围图像(HDRI)需要由一系列同一角度,不同曝光量的图片合成得出。人工完成此过程需要较长时间,而较长的拍摄时间会提高后期处理时的工作量。为此,文章提出了一种以Arduino微控制器为核心,配合电机和个人电脑的自动化HDRI拍摄设备。该系统通过Arduino、蓝牙、Wi-Fi、步进电机以及个人电脑的配合能够有效实现全自动完成HDRI全景图的拍摄,并能降低后续流程的工作量。
关键词:HDRI;全景图;Arduino
中图分类号:TP368 文献标识码:A文章编号:2096-4706(2022)04-0182-04
Design and Manufacture of a HDRI Automatic Image Capturing Device
YANG Runtian
(Department of Electronic and Computer Engineering, University of Toronto, M5S 1A1 Canada)
Abstract: Due to the limitation of hardware equipment, HDRI needs to be synthesized from a series of pictures with the same angle and different exposure. It takes a long time to complete this process manually, and the longer shooting time will increase the workload of post-processing. Therefore, this paper proposes an automatic HDRI photographing device with Arduino microcontroller as the core, combined with motor and personal computer. Through the cooperation of Arduino, Bluetooth, Wi-Fi, stepping motor and personal computer, the system can effectively complete the shooting of HDRI panorama automatically and reduce the workload of subsequent processes.
Keywords: HDRI; panorama; Arduino
0 引 言
高動态范围图像(HDRI)是现代计算机绘图任务中的一类重要资源,在数字艺术以及影视制作中有着广泛的应用[1]。不同于一般的图片,高动态范围图像的亮度未经剪裁,保留了完整的光照信息[1],因此能够在计算机软件中真实地重现拍摄时场景的光照情况,从而使模型渲染,后期特效合成的效果更加真实,在达到相同视觉效果的条件下节省人力[2]。
由于硬件设备的限制,HDRI图像需要由一系列同一角度,不同曝光量的图片合成得出。在拍摄全景HDRI图像时则需在每个不同角度拍摄数张不同曝光量的图片[1]。这一过程十分烦琐费时,且随着拍摄时间增加,云层和太阳的移动会使得后期合成更加困难。拍摄者的阴影也会极大地增添后期处理的工作量。因此本文提出了一种以Arduino微控制器为核心,结合电机和电脑的自动化HDRI拍摄设备。
1 系统结构和工作流程
该系统主要分为两部分,一部分为可遥控的自动三脚架,主要由Arduino控制器、步进电机驱动器、电源、以及蓝牙模块组成,另一部分是PC端的控制软件,如图1所示。
系统工作时,首先由PC通过蓝牙连接自动三脚架,由Wi-Fi连接相机。程序检测连接正常后,用户可以设定拍摄参数并命令开始拍摄。PC端的程序将会通过用户给定的参数计算所需的拍摄角度、曝光时间、光圈大小以及感光度,通过蓝牙连接控制三脚架转动到指定角度,并通过Wi-Fi设置相机的拍摄参数并遥控按下快门。在一个角度拍摄完所需的数张图片后会转动到下一个角度并重复这一流程,直到拍摄完所有角度的图片。
之后用户可导出相机中的图片,用PC端软件将不同曝光量的图片合并形成高动态范围图像,并用现有的全景图拼接软件拼接成全景图片。
2 硬件设计
本系统的设计目标人群为计算机艺术及摄影爱好者,因此以器材易于购买,制作方便,模块化为主要设计思路。
2.1 电源系统
由于全景图大多拍摄于野外,此系统使用12 V,1500 mAh可充电锂电池作为电源。此型号的电池便于携带,容量适中且易于购买,符合此系统的设计思路。由于Arduino要求5 V电压供电,此系统使用了DC-DC降压模块将12 V转换为5 V电压,如图2所示。为方便使用者查看电池剩余电量,系统内设置了可开关的数码管电压显示器,在方便使用者的同时也能避免显示器的灯光在夜间环境下影响拍摄质量。降压模块和电机驱动模块被分开放置以防发热过于集中。
2.2 电机及机械结构
电机选用了市面上常见的42步进电机。该电机被广泛用于3D打印机等创客项目中,有丰富的配件支持以及较高的稳定性。
机械结构主要由3D打印成型,对强度要求高的连杆和轴承等结构则购买市面上的通用部件。大体上此系统可以分为三部分:基座、主体、摇臂,如图3、图4所示。基座被固定在三脚架上,系统中的大部分电子元件用尼龙扎带固定在基座的预留槽中。主体由钢轴和轴承与基座连接,并用同步带驱动。主体包含了系统中的两个步进电机,并起到连接基座和摇臂的作用。摇臂用钢轴和轴承与主体连接,由同步带驱动,末端有用于固定相机的卡扣。
系统工作时,一颗电机控制相机的平面朝向(即东南西北),另一颗电机控制相机的俯仰(即低头抬头)。其中控制俯仰的电机需要对抗相机自身的重力,因此在其上方设置了可增加皮筋的挂钩,可在相机较重的时候使用皮筋助力以防止电机扭矩不足。
电机与打印件之间连接的同步带皆有可调节结构锁紧,在方便组装的同时防止在工作时打滑。
2.3 控制系统
Arduino Nano、蓝牙模块、电机驱动器、以及降压模块由尼龙扎带固定在基座上,之间用杜邦线连接,方便组装和故障检修。其中Arduino Nano和电机驱动器之间的连线较多,因此被集成在同一块电路板上,如图5所示。模块和电路板之间的连接使用了标准的杜邦插槽,方便组装和更换。
Arduino Nano的通用IO接口被用于控制电机驱动器的电机转向和步进接口,以及接收蓝牙模块的数据输入。PCB布局如图6所示。
3 软件设计
3.1 控制软件
此系统包含两套软件,一套为Arduino中的程序,一套为PC端上的程序。其中Arduino的程序用C++编写,PC端的程序由Python编写。
Arduino的任务只有控制电机,因此Arduino与PC端的通讯方式参考了功能类似的G-code。G-code通常被用于控制数字机床,激光切割机或3D打印机。鉴于此系统的功能略有不同,同时也为降低指令的处理难度,此系统极大的简化和更改了G-code的格式和指令集以适应此系统的应用场景。
工作时,PC端的软件通过蓝牙的串口透传功能将指令字符串发送给Arduino,Arduino在接受并完成指令后会再通过蓝牙发送表示完成的字符串,此时PC端的软件便可以发送下一条指令。如果PC端一次发送了多条指令,Arduino会在内存中保存指令队列并按顺序执行。PC端也可以在任何时刻发送急停信号来终止并清空指令队列。
PC端与相机的通讯由Wi-Fi连接,并用佳能相机的网络API完成。其中相机作为服务器,PC端的软件通过GET或POST http指令来获取或设置相机参数并遥控快门。
PC端使用pybluez库实现跨平台的蓝牙访问[3],使用了requests库实现跨平台网络访问。Arduino指令如表1所示。
3.2 图像合并软件
在完成拍摄后,需要先將同一角度不同曝光量的图片合并成亮度未剪裁的高动态范围图片。
一般相机拍摄的jpg格式图片都会由相机从线性颜色空间转换为sRGB颜色空间[4]。这是因为常见的显示器能够显示的亮度范围有限,为了使图片观感上更接近拍摄时的效果,图像的颜色需要经过非线性变换,即颜色空间的转换[5,6]。
但HDRI的拍摄目的并非感官上好看的图片,而是与真实环境亮度相符的图片,因此不应经过这一步处理。为保证HDRI图片画面质量不被压缩,拍摄者应直接使用包含相机感光元件记录的完整信息的RAW格式图片。这些文件在经过RAW格式处理软件转码后可以得到图像亮度与现实亮度为线性关系的图片,通常保存为16位TIFF文件[5]。
在得到不同曝光量的线性亮度图片后,这些图片需要被合成为高动态范围图片。因为相机的硬件限制,感光元件只能准确记录一定范围内的亮度信息,过亮或过暗都会导致信息的不准确和噪点。这一记录范围就是图片的动态范围。在得到不同曝光量的图片后,可以在软件中将每张图片过亮(过曝)或过暗(欠曝)的部分去除,并将几张图片进行适当的曝光补偿后叠加,就能使整个画幅都有准确的亮度信息[1]。因为最终的成品图片有着远超出一般相机能够拍摄的动态范围,所以被称为高动态范围图片(HDRI)。以上操作由Python脚本使用imageio及numpy自动完成[7,8]。
最终的高动态范围图片可被现有的全景图拼接软件拼接成全景图[9,10],并导入至3D软件中使用[2]。
4 结 论
本文介绍了一种自动化HDRI图片拍摄的设备,探讨了软硬件的设计思路和方法,以及HDRI合成的基本原理。
本文提到的自动化系统已经能够实现基本功能,拍摄和合成HDRI,并能够在3D软件中使用。但此系统在操作的便捷和便携性上还有较大提升空间。可以预见的改进方向包括整体机械结构的小型化,稳定化,结构与收纳箱的集成,防尘防雨结构,以及移动端图形化控制软件的开发。
参考文献:
[1] POLY HAVEN BLOG. How to Create High Quality HDR Environments [EB/OL].[2021-12-12].https://blog.polyhaven.com/how-to-create-high-quality-hdri.
[2] 吴昊.影视制作中HDRI技术的应用与研究 [J].电脑编程技巧与维护,2011(20):116-117.
[3] GITHUB. pybluez [EB/OL].[2021-12-12].https://github.com/pybluez/pybluez.
[4] CAMBRIDGE IN COLOUR. Understanding Gamma Correctio [EB/OL].[2021-12-12]. https://www.cambridgeincolour.com/tutorials/gamma-correction.htm.
[5] RAWPEDIA. rawpedia [EB/OL].[2021-12-12].http://rawpedia.rawtherapee.com/.
[6] CHAOS. Understanding sRGB,gamma,color values [EB/OL].[2021-12-12]. https://support.chaos.com/hc/en-us/articles/4528579184657--Understanding-sRGB-gamma-color-values-.
[7] IMAGEIO. Welcome to imageio’s documentation! [EB/OL].[2021-12-12].https://imageio.readthedocs.io/en/stable/.
[8] NUMPY. NumPy documentation [EB/OL].[2021-12-12].https://numpy.org/doc/stable/.
[9] 漆驰,刘强,孙家广.摄像机图像序列的全景图拼接 [J].计算机辅助设计与图形学学报,2001.(7):605-609.
[10] YOUKIAAA.全景拼接原理及实现_Yokia-CSDN博客_全景拼接 [EB/OL].[2021-12-12].https://blog.csdn.net/qq_37374643/article/details/88930316.
作者简介:杨润天(2001—),男,汉族,北京人,本科在读,主要研究方向:硬件与软件工程。