After my articles and videos about 3D cameras — one of the most popular questions was — “Which 2D camera should I choose for my project?”
This question is orders of magnitude more complicated than it seems. For most systems that I have seen, “choosing a camera” is part of the final product — as important and complicated as “collecting a dataset” or “training a neural network.”
Goto HBVCAM to know more.
Why?
Today, it’s pretty clear that expertise in VLM and Edge models differs. The same is true of cameras. When people develop low-power cameras for home use and cameras for astronomy, they will use different approaches and solutions.
So, I’ll warn you right away — this guide does not pretend to be comprehensive. I tried to focus on a few things:
Also, when preparing the article and video, I asked a few experts to criticize and add their point of view on these issues:
By the way. This article also has a video on YouTube. In this video I tell a few additional examples and share practice experience:
When choosing a camera, you need to evaluate several characteristics at a high level:
To estimate this, let’s check all these characteristics on the camera
USB, CSI, and LAN are the primary interfaces that account for 95% of cameras. We will talk about them in detail later, and here are a few words about the rest. Partly, these are wrappers over existing ones:
Each interface has two main parameters: speed and signal delay. The slowest ones now are old cameras (USB 2.0, etc.). The fastest ones utilize several PCIe lines.
The further your camera is from your processing unit, the bigger the difference. The more intermediate processing your signal will go through — the later you will output your result.
We can talk about optics endlessly. But let’s focus on the main characteristics:
Main characteristics of the matrix:
Also, some cameras have their own light system; sometimes, you need to choose whether to build your system or use existing boxing.
Also, for some applications, it’s super important to choose a shutter type. Global vs. Rolling Shutter. Global shutter allows you to have the same moment of exposure for all pixels. Also, for some cameras mechanical shutter, it’s still an option(astronomy, for example). But it’s quite rare.
Some cameras have an internal CPU/NPU/GPU for image processing, and for some, you need to use another device.
The first advantage is that preprocessing works on the camera. Some USB cameras can stream a raw image, but most cameras will stream already processed and compressed images. This allows you to utilize the channel width optimally.
The second advantage is that most USB cameras are “plug and play.” They will work out of the box under Windows andmost Linux systems, MacOS, Android, etc.
The third advantage is availability. A USB camera will be sold in a nearby store. Of course, not every USB camera is so easy to buy, but this will be reasonable for most examples.
The fourth advantage is that USB 3 is a fairly fast protocol. Especially considering compression.
The first disadvantage is the limited cable length. The camera out of the box will most likely have:
The second minus. Simple cameras can have a large delay and it can be unstable.
The third minus. Sometimes, finding a ready-made camera with the target characteristics isn’t easy.
The fourth minus is that drivers can be unstable. Recently, this part has improved. But 6–7 years ago, the driver could freeze on Jetson, requiring a system reboot.
In my opinion, USB cameras are super good for prototyping. They allow you to quickly connect something and minimize problems caused by drivers and codecs.
Very often, small-scale indoor solutions/factory solutions are made on USB cameras, where the camera’s price is no longer a determining factor at $200-$300.
USB cameras are good for providing high FPS with high-quality images.
In general, USB is when it is “Fast” and “Good” but “Expensive”.
Several examples of USB cameras that can be used in projects.
First option. Cheap, quick to buy, good quality for student projects, testing algorithms, etc. — Logitech C270 (Logitech C920/C922 has a little bigger resolution and framerate)
Second option. Expensive, rich, good quality, lots of implemented interfaces, good drivers and lenses — Basler cameras. We used them a lot back in –. They where super nice.
Third option. Good Chinese cameras — Vision Datum. In general, covers most of what Basler can do. But the software is a little worse, the design is a little worse. Etc., etc.
Forth Option. Super Small USB Boards (1, 2). They are nice if you want build your own camera.
The most configurable protocol is CSI. You can use a different number of lines or a different approach to transmission. Both the fastest and the slowest cameras are made with CSI protocol.
Cameras transmit raw information — this allows you to preprocess the image yourself. Also, it’s one of the fastest protocols.
There are a lot of camera vendors. You can choose a camera that suits the task.
Also, there are a lot of different connectors based on the top of the CSI protocol.
Limited length. This can be partially fixed with coaxial connectors, but this increases the system’s complexity and cost. People try to stay within the 30cm main range for most everyday applications. But it’s hard to find something much longer then 10m.
If your board does not have a separate chip for image encoding, you must do it on the processor. Which will additionally load it
More development time if you go down to the lower level.
CSI cameras are different. They require mutual calibration of the camera and the board. If this is some “arbitrary camera and arbitrary board,” — they may not work out of the box.
When you need to maximize control over the system, when you need to achieve the minimum production cost but do not want to lay out your own matrix yet, or when the final device should be small (this can be achieved with USB, but with CSI, the choice will be greater).
Also, if you are still developing your own board — using CSI is a fairly logical step.
Of course, there are a few classic examples that everyone uses
RPi camera — (works on a lot of boards)
On the Nvidia website, you can find a lot of cameras that work with Jetson.
And here is, for example, another extensive list of different cameras.
A clear protocol that will work with all devices. Problems arise much less often than with USB. Lots of goodies out of the box: the camera can be on the other side of the world. Multicast.
There are many cameras on the market. You can find good lenses, good lighting, and competent filters right out of the box.
You can find good cases. Dust and moisture are protected with heating and anti-fogging.
You can find full control: rotation, zoom, pointing, and sharpness.
High latency — much higher than USB/CSI. Usually much more expensive than USB and CSI. Cheap models have almost no settings and may not have a good picture.
Are you interested in learning more about USB Global Shutter Camera Module? Contact us today to secure an expert consultation!
You are essentially buying a box. No ability to configure internal algorithms. Unless you are developing a camera.
You need a network infrastructure. Most likely, you will need a router and lay networks.
When latency is not important to you. When there are many users. When you have already installed the camera and the algorithm needs to be run on a ready camera. When you have a central computer where you want to calculate everything. When the working conditions are challenging.
From expensive cameras, Moxa and Axis are worth mentioning.
Middle class — HikVision and Dahua.
You can go to Aliexpress for cheap cameras. But remember that for some, even receiving a stream is a problem. The cameras I chose 2–3 years ago are already out of stock. Different cameras from the same vendor may not work, etc.
There is no straightforward solution to the question, “What camera should I choose?” Even top companies experiment a lot.
So, the best approach is to schedule an additional amount of time to research this question for your case as well. After this:
While you wait for the camera of your dreams, take some simple USB/LAN cameras for experiments.
When it comes to developing a camera-related project on embedded systems like the Raspberry Pi (RPi) or NVIDIA Jetson Nano (NJN), we will take many factors into consideration. To help you better select a camera module, here is a quick start guide from Arducam.
If you are going to add a camera module to embedded systems like RPi or NJN, you should know how it’ll be connected. There are several interfaces available on those two devices for camera connection, which lead you to different camera families, respectively MIPI, USB, and SPI cameras.
MIPI Alliance is an organization that develops interface specifications, including the MIPI Camera Serial Interface 2 (MIPI CSI-2). MIPI CSI-2 was widely used in mobile industries, and companies like Apple have long adopted this interface in their smartphones. As this camera interface was high-performance, cost-effective, and easy to use, it was quickly expanded beyond the mobile industry with the support of manufacturers.
Therefore, it’s natural to see this interface on embedded systems like the RPi and NJN. On the Raspberry Pi, the MIPI CSI-2 interface takes the form of two physical connectors: 15-pin connector on standard Raspberry Pi models and a 22-pin connector on Pi zero and Compute Module. The Jetson Nano, on the other hand, adopts the 15-pin connector. The 15-pin and 22-pin connectors work with the same camera modules, just with different flex ribbon cables.
The MIPI CSI-2 interface is the default camera interface for Raspberry Pi and Jetson Nano, and the Raspberry Pi camera module V1 and V2 are all based on it. These cameras, along with the third-party upgrades based on them, would serve well to cover most of the basic applications. Even if you want to use these two kinds for multi-camera applications, you can do that with Arducam camera multiplexers and stereo camera HATs.
Powerful and popular as the MIPI CSI-2 Interface seems, it still comes with some limits. The MIPI cameras rely on extra drivers to work, so there is little support of different image sensors if the embedded system manufacturers do not push it forward. Take the Raspberry Pi as an example, we had been stuck with the OV and IMX219 for a long time before the third one – HQ camera – was out.
Arducam has tried hard to change this situation and introduced the Arducam MIPI camera module lineup to fill this gap. With Arducam SDK and examples, you can use various MIPI camera modules on the Raspberry Pi other than the official two.
With Arducam’s latest Pivariety camera series, native ISP tuning on higher-spec sensors is also supported.
However, if the Arducam MIPI camera modules still cannot cover your needs, you might have to consider other interfaces.
Aside from the dedicated MIPI CSI-2 camera interface, the RPi and NJN also come with multiple USB ports for connecting more devices, including USB cameras. The USB cameras adopt the standards of the USB interface, so they are easily expandable and adapted. What’s more, they could be made driver-free by following the USB device standards.
Those driver-free USB cameras are UVC cameras, and those not are usually developer kits for camera evaluation and development. UVC is short for USB Video Class, and it’s one of the USB device classes. The drivers for UVC cameras to work have already been preinstalled in the operating system, so it’s a plug-and-play experience for them.
The most used UVC cameras are webcams, but there are also other UVC cameras available for embedded uses. Arducam offers several UVC board cameras as an implement for our current embedded MIPI camera modules. These cameras have more case-specific features like Wide Dynamic Range (WDR), low light enhancement and so on.
On the other hand, the Arducam USB camera shield is a general-purpose camera control board designed for both PCs and embedded systems like the Raspberry Pi, Odriod, TI Beaglebone, and similar hardware. It supports almost all parallel interface image sensors and many MIPI camera sensors ranging from 0.3MP to 18MP, including both global and rolling shutter sensors. The camera comes with a comprehensive software SDK library and example source code you need to make it work on Windows and Linux systems.
The SPI camera solution is feasible on the Raspberry Pi and Jetson Nano platform but is less recommended for those two devices. The SPI camera is a general-purpose camera solution that can work with any device that has SPI and I2C connectors. It was mainly designed for the platforms without a dedicated camera interface, such as the Arduino boards. Although you can use it on a Raspberry Pi, the limited SPI rate will become a handicap for the camera application.
Another thing to consider is the sensor type. It might not apply to all cameras, but most Arducam global shutter cameras are monochrome and most rolling shutter cameras are color sensors.
A color sensor is an image sensor with color filters, and the Bayer array filter is the most common one. A color filter passes light with a certain wavelength and blocks the others in a sub-pixel, and the information on the sub-pixels will then be used to generate the color of the pixel.
Rolling shutter, on the other hand, refers to a method of capturing images. A rolling shutter does not expose the entire sensor simultaneously, instead, it exposes line by line from top to the bottom.
The good thing about the color sensor with a rolling shutter is that it shows what our human eyes see better. It’s cheaper to build and easy to equip with more pixels. However, it may fail to capture objects that move faster than the speed of exposure.
Unlike a rolling shutter camera, a global shutter camera exposes all pixels at the same time. The shutter opens and closes in a short period. Therefore, it can take better pictures of fast-moving objects without blurring the details.
A monochrome sensor captures an image only recording the strength of illumination, regardless of the colors. In this way, it can capture more light – or more specifically, photons – because no light will be blocked by a filter. That’s a good companion for global shutter, because the fast shutter speed and high frame rates on those shutters capture less light during each exposure, and the extra lights passed without the color filter would offset the loss in exposure time.
Conclusion: If you aim at higher frame rates and fast-moving objects, you can go with global shutter monochrome cameras. If you want to capture more details and still photos, you can try a high-resolution rolling shutter color camera.
Unlike human eyes, the cameras cannot switch between objects near the lens and those far away easily. Most times the focus of a camera is set to infinity by default, and you might find it hard to see closer objects, just like the official Raspberry Pi cameras.
If a camera comes with a camera lens, such as an M12 or CS-Mount lens, the focus would be manually adjustable, and you can screw the lens further from the thread to focus on closer objects after it’s focused to infinity.
However, if your application required the focus to change from time to time, you would not want to adjust the focus manually each time. The autofocus camera modules come with built-in motors to move the lens, so you can remotely control the focus either by sending commands or use software for autofocus.
For example, a customer of ours wants to use a camera on Raspberry Pi for day/night surveillance, and he wants to keep the color details at night. At first, he uses a 5MP OV camera, only to find it’s not able to capture enough light for the picture to show anything. He then wants a larger lens to capture more lights and get our CS-Mount lens camera for Raspberry Pi, but the image area is narrower than his expectation and the dark areas are still not identifiable. After knowing his detailed requirements, we have recommended a low-light USB camera module with a wide-angle lens, and he is happy with that.
In conclusion, the key to finding the right module for your project is to know your applications and requirements. Do you need to capture crisp sharp details? How large is the captured area and how far will you be shooting the scene? Does the object move fast like on a convey belt? What is the lighting condition? Will you be using the camera on different platforms?
After figuring out these questions, you can decide between the camera interfaces, colors, Field of View, and focus methods. When all these questions have been answered, we are getting to the right camera.
For more Monochrome USB Camerainformation, please contact us. We will provide professional answers.