





摘? 要:由于硬件設備的限制,高動態范圍圖像(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—),男,漢族,北京人,本科在讀,主要研究方向:硬件與軟件工程。