Key Moments

PhotoTechEDU Day 25: Open-source-based high-resolution cameras

Google TalksGoogle Talks
Education6 min read44 min video
Aug 22, 2012|655 views|5
Save to Pod

Want to know something specific about what's covered?

We've already dissected every moment. Ask and we will deliver (with timestamps).

TL;DR

Open-source modular cameras offer high-resolution video and customizable software for a fraction of the cost of commercial alternatives, but require significant engineering effort to utilize fully.

Key Insights

1

The founder of Elphel, Andrey Filippov, was inspired to create open-source hardware after witnessing the limitations and difficulties of proprietary Windows systems for multi-camera synchronization in 2001.

2

Elphel's cameras integrate processors, FPGAs (Field-Programmable Gate Arrays), and dedicated memory to handle tasks like JPEG compression and, in newer models, Ogg Theora codec, achieving resolutions like 1280x1024 at 30fps.

3

The company's commitment to open-source extends to licensing, with all software distributed under the GPL (GNU General Public License), refusing commercial licenses to maintain the open nature of their designs.

4

Achieving higher frame rates with high resolutions is a multi-faceted challenge, involving limitations in the sensor, FPGA processing bandwidth, network transmission, and the direct system memory transfer speed.

5

Elphel is developing an Ubuntu-based distribution to simplify the user experience, embedding development tools like Eclipse and offering pre-configured IDEs to lower the barrier to entry for customization.

6

Synchronization of multiple cameras can be achieved via network or wired connections, with wired connections offering negligible latency (microseconds) but requiring additional hardware, while network synchronization incurs latency due to the non-real-time OS aspects.

From Windows limitations to Linux innovation

Andrey Filippov, founder of Elphel, Inc., began his journey in hardware development in 2001, moving away from proprietary Windows systems due to their limitations in managing multiple firewire video cameras simultaneously. He observed colleagues struggle for weeks to set up a system that he later saw could be achieved much faster with Debian Linux, albeit with initial challenges. This experience led him to believe in the power of open-source and Linux for hardware integration, prompting him to quit his job and establish Elphel, focusing on building hardware around Linux. His initial foray involved using Atmel's (now Microchip) XScale processors, chosen for their ability to run standard Linux, a network bootloader for easy firmware updates, and readily available SDKs and documentation. Within three months, with minimal prior Linux experience, he developed a camera capable of serving JPEG images, a feat that previously took half a year with embedded assembly language. This early success validated his vision of leveraging existing software to accelerate hardware development.

Early modular designs and FPGA integration

Elphel's initial projects focused on creating networked cameras. The first iteration, a gated intensified camera module, was developed with a former employer's needs in mind and was not a general-use product. Following interest sparked by articles on LinuxDevices.com and Slashdot, Filippov shifted to creating a more general-purpose network camera. This second project incorporated a configurable Xilinx FPGA, not just for controlling internal camera functions but also for processing, such as JPEG compression. The decision for Xilinx over Altera was partly due to their software licensing policies at the time, which offered more long-term flexibility for developers. This modular approach, separating the sensor board from the computer board (housing processor, memory, FPGA, and network interface), allowed for easier upgrades and product lifespan extension. The computer board design was kept consistent across different camera models, with variations primarily on the sensor board, enabling reuse of significant FPGA and software code for new camera projects.

Scaling up resolution and adopting Ogg Theora

As demand grew for higher resolutions, Elphel developed subsequent camera generations. A key project addressed a client's need for cameras with 10-plus megapixels, a significant leap from the earlier models' capabilities. This camera utilized the same processor board but required a more complex sensor board due to the CCD sensor's needs. To overcome performance limitations of the processor's lack of hardware checksum calculation, two processor boards were sometimes used, with each handling half the image, simplifying development by reusing code. The third generation featured increased memory and FPGA capacity, enabling video compression at 1280x1024 resolution and 30 frames per second. Filippov chose to implement the Ogg Theora codec instead of MPEG due to MPEG's complex and prohibitive licensing fees, which at the time were charged not just per device but per megabyte-second of stream. Ogg Theora, being royalty-free, aligned better with Elphel's open-source philosophy (GPL2, moving to GPL3). This implementation focused on static scenes as it lacked motion compensation, a feature he hoped to enable with future, more powerful FPGAs.

Hardware bottlenecks for high-speed, high-resolution imaging

Achieving higher frame rates with high-resolution cameras presents several limitations. Filippov identified the sensor's pixel clock, the FPGA's processing capabilities for compression, and the network bandwidth as primary bottlenecks. Additionally, the data transfer rate between the FPGA and the system's main memory (DMA transfer) is critical. Current implementations require multiple memory cycles per data word, limiting throughput. Newer processors support bus acquisition, which could theoretically increase this transfer rate fivefold by decoupling memory from the processor, but this requires careful clock synchronization and controller implementation. The sensor technology has also advanced, with newer 5-megapixel sensors capable of higher frame rates (up to 15fps) than the current FPGA compression code can handle (around 11fps), although FPGA code can be optimized. The network bandwidth, especially for uncompressed or lightly compressed formats like JPEG, also becomes a limiting factor, dependent on image detail and quality rather than just pixel count.

Open-source philosophy and licensing

A cornerstone of Elphel's operation is its unwavering commitment to open-source principles and licensing. All software developed by the company is distributed under the GNU General Public License (GPL). This means that while the designs and code are freely available, they cannot be incorporated into proprietary products without also making those products open-source. Elphel explicitly states they do not offer alternative commercial licenses, even when approached by other IP camera companies interested in their designs. This principled stand ensures that their technological advancements remain accessible to the wider community for modification and further development, aligning with the spirit of collaborative innovation that drove Filippov to start the company.

Simplifying development and user accessibility

To make their powerful and customizable cameras more accessible to a broader audience, Elphel is actively working on simplifying the development environment. Traditionally, users had to compile C/C++ programs and FTP them to the camera, or delve into FPGA design using tools like Xilinx's. Elphel is creating an Ubuntu-based distribution that can run as a live DVD/CD, providing a working environment out-of-the-box. This distribution will include pre-configured development tools, potentially within an Eclipse framework, allowing users to recompile or modify code with a lower barrier to entry. They are also adapting software to run PHP in fast CGI mode for web interfaces and aim to expose more low-level functions accessible via PHP scripts, making the camera's capabilities more manageable for web developers and hobbyists. This initiative is crucial for fulfilling the goal of truly enabling users to shape the cameras to their specific needs.

Multi-camera synchronization strategies

Synchronizing multiple cameras is essential for various applications, such as 3D reconstruction or high-speed event capture. Elphel offers two primary methods: network synchronization and hardware-based synchronization. Network synchronization relies on packet timing over the network, which is simpler as it requires no additional physical wiring. However, due to the non-real-time nature of standard operating systems, there can be inherent latency and jitter. For applications demanding the utmost precision, Elphel provides hardware synchronization through opto-isolated inputs and outputs that connect directly to the FPGA. This wired approach bypasses network latency, achieving negligible delay (microseconds), but necessitates extra cabling and connectors, introducing potential grounding and noise issues that opto-isolation helps mitigate.

Common Questions

Andre Philippov founded Alphal after encountering limitations with Windows systems for multi-camera synchronization tasks. Witnessing the power and flexibility of Linux and free software, he decided to build hardware around these technologies, leading to the development of open-source cameras.

Topics

Mentioned in this video

Software & Apps
Linux

An operating system that Andre Philippov decided to build his hardware around, finding it powerful after initial challenges.

XScale

An architecture of processors that Andre chose for his early cameras due to their ability to run normal Linux and having a hard-wired network bootloader.

SDRAM

Synchronous Dynamic Random-Access Memory, used as additional memory for frame storage and buffering in Alphal's FPGA-based cameras.

Verilog

A hardware description language used for designing FPGAs. Alphal's FPGA code is written in Verilog.

JPEG

An image compression standard implemented in Alphal's cameras, achieving significant frame rates at 1.3 megapixels.

Gmail

An application that inspired Andre's approach to the camera's web interface, aiming for a richer, more application-like experience within a browser.

ModelSim

A simulator used for FPGA development, with a limited free version and a commercial option.

Eclipse

An integrated development environment (IDE) framework that Andre envisions for Alphal cameras, to simplify the development process for users without prior FPGA experience.

Ubuntu

A popular Linux distribution that Alphal is now switching to for its distribution to allow for live DVD mode and easier installation of software.

MJPEG

Motion JPEG, a video compression format used in Alphal cameras that generates a lot of data and can be limited by network bandwidth.

DDR memory

Dedicated memory used for buffering and image processing in the newer generation cameras, not sharing bandwidth with the system bus.

PHP

A server-side scripting language that Andre is porting to Alphal's new cameras to make low-level functions accessible to a wider range of developers.

SDK

Software Development Kit provided by XScale, which was comprehensive and allowed downloading documentation from one place.

Slashdot

A tech news website where articles about Andre's cameras gained significant attention and interest from the public.

GDB

The GNU Debugger, a tool used for software development that Andre aims to integrate into a pre-configured IDE for easier development on Alphal cameras.

Debian

A Linux distribution that Andre's colleagues installed, taking several weeks to get running but proving powerful for multi-camera setups.

Oak Theory

A royalty-free video codec that Alphal implemented in their cameras, chosen over MPEG due to licensing complexities.

Icarus Verilog

A free and open-source simulator for the Verilog hardware description language, which Andre is using to convert his test fixtures.

Windows

The operating system Andre Philippov used initially, which presented limitations for connecting multiple firewire cameras.

MPEG

A set of video compression standards that Andre considered implementing but ultimately avoided due to complicated and expensive licensing.

More from GoogleTalksArchive

View all 48 summaries

Ask anything from this episode.

Save it, chat with it, and connect it to Claude or ChatGPT. Get cited answers from the actual content — and build your own knowledge base of every podcast and video you care about.

Get Started Free