Smart Beholder: An Open-Source Smart Lens for Mobile Photography


Smart lenses are detachable lenses connected to mobile devices via wireless networks, which are not constrained by the small form factor of mobile devices, and have potential to deliver better photo (video) quality. However, the viewfinder previews of smart lenses on mobile devices are difficult to optimize, due to the strict resource constraints on smart lenses and fluctuating wireless network conditions. In this paper, we design, implement, and evaluate an opensource smart lens, called Smart Beholder. It achieves three design goals: (i) cost effectiveness, (ii) low interaction latency, and (iii) high preview quality by: (i) selecting an embedded system board that is just powerful enough, (ii) minimizing per-component latency, and (iii) dynamically adapting the video coding parameters to maximizing Quality of Experience (QoE), respectively. Several optimization techniques, such as anti-drifting mechanism for video frames and QoE-driven resolution/frame rate adaptation algorithm, are proposed in this paper. Our measurement study shows that Smart Beholder outperforms Altek Cubic and Sony QX100 in terms of lower bitrate, lower latency, slightly higher frame rate, and better preview quality. We also demonstrate that Smart Beholder adapts to network dynamics. Smart Beholder has been made public at as an experimental platform for researchers and developers to optimize smart lenses and other embedded real-time video streaming systems.


Chun-Ying Huang, Chih-Fan Hsu, Tsung-Han Tsai, Ching-Ling Fang, Cheng-Hsin Hsu, and Kuan-Ta Chen, "Smart Beholder: An Open-Source Smart Lens for Mobile Photographya," Proceedings of ACM Multimedia, October, 2015.


@inproceedings{huang15:smartbeholder, author = {Chun-Ying Huang and Chih-Fan Hsu and Tsung-Han Tsai and Ching-Ling Fang and Cheng-Hsin Hsu and Kuan-Ta Chen} title = {Smart Beholder: An Open-Source Smart Lens for Mobile Photography}, booktitle = {Proceedings of ACM Multimedia (MM'15)}, pages = {351--360}, month = {October}, year = {2015} }