Update 2022-04-26: In a newer post I compare the contemporary webcams of 2022: Logitech StreamCam, Logitech Brio, Razer Kiyo Pro and Elgato Facecam.

During the supply shortages of 2020 I always wondered wether my Raspberry Pi High Quality Camera would have better image quality in Zoom than the Logitech c922 I normally use. Now that you can again order any webcam at a reasonable price I finally got around to test which one is better.

Focus of the tests are less pixel peeping and more a qualitiative result wether it would be worthwile to check out the Raspberry Pi High Quality Camera as a streaming option.

Setup

I use the Raspberry Pi High Quality Camera with the recommended 6mm wide angle lens. Both together have a full frame equivalent focal length of 33.6mm. The Raspberry Pi 4 runs Raspberry Pi OS Bullseye. In this release the developers reworked the complete library stack for the Raspi camera. So future quality improvements are possible.

The Logitech c922 is connected to the Raspi via USB. Its lens has a full frame equivalent focal length of 22.2mm.

As a benchmark camera I use the Fujifilm X-T4 with the 21mm wide angle lens. Here I capture the stills in camera and transfer them from the SD card. For video streaming I use THE 12€ no name USB Video Capture Card attached to the Raspberry Pi.

Still Images

Still images may not be your main application for a webcam. But they are good at showing the capabilities and restrictions of each system. Especially as the Raspberry Pi High Quality Camera cannot stream in 4k but takes still images with 12 megapixels.

As far as possible I let the cameras decide which settings to use: exposure, ISO, color temperature etc… The aperture of the Raspberry Pi High Quality Camera is fully open, the aperture of the Fujifilm 21mm lens is at f/5.6.

How to take still images from the Raspberry Pi Camera

The Raspi has a dedicated still image tool for its cameras that is now based on libcamera. You can snap a still image from the camera using the libcamera tools:

libcamera-still --width 4056 --height 3040 -o hqcam_full.jpeg

You can get the possible resolutions either from the official documentation or my last post about streaming with the Raspberry Pi.

How to take still images from a webcam with the Raspberry Pi

You can take a still image from the video stream of the attached webcam using ffmpeg. You capture video for a short time and take out one frame and convert it to a JPEG image. Choose a slightly longer capture time to account for the webcam startup. The following example shows the command line for this operation for the Logitech c922 on its maximum resolution using my Raspberry Pi 4.

ffmpeg -f v4l2 -s 2304x1536 -i /dev/video0 -ss 2 -frames 1 webcam_full.jpeg

Nature Scene

A fractal subject with some colour and dynamic range. Also readily available outside my window.

You can immediately see the focal length and format difference between the Raspberry Pi High Quality Camera and the other two. The Raspberry Pi High Quality Cameras lens is much narrower and the sensor is in a 4:3 format compared to the 3:2 of the other two.

In comparison to the reference image the image of the 6mm lens of the Raspberry Pi High Quality Camera is much less sharp, especially towards the edges of the frame. The 6mm lens also has a pronounced barrel distortion and suffers from chromatic aberrations. Because of the center of the image we can speculate that the Sony IMX477R sensor is capable of way more than the lens can deliver. The dynamic range seems to be ok overall.

As much as the image of the Raspberry Pi High Quality Camera is worse than the one from the Fujifilm X-T4, the image from the Logitech c922 is worse than the one from the Raspberry Pi High Quality Camera. It looks like the shot was taken through a stick of butter. It is generally unsharp except maybe the lower right corner. I also played around with the camera focus because I suspected a focusing error, but the image above is the best I can do. The colours of the leaves are hardly distinguishable in the c922 image. The dynamic range seems to be pretty bad. At least there is hardly any barrel distortion compared to the 6mm lens of the Raspberry Pi High Quality Camera.

Studio Scene

A more controlled setting where I was able to almost match the image section of the lenses.

Again we see the pronounced barrel distortion of the 6mm lens on the Raspberry Pi High Quality Camera and that it’s only sharp in the middle of the frame. Contrast is good, though.

The Logitech c922 seems to be less sharp. Here we can see that the image is sharper in the right and lower side of the image. Maybe the lens has a decentering defect. Contrast is weak but there is almost no barrel distortion.

Video Captures

Video seems to be a more natural application for the Logitech c922 webcam and the Raspberry Pi High Quality Camera can also be used that way. So let’s see what they can do. We use a stream resolution of 1920x1080 and capture a still image from the stream. The process is the same as described above, just in 1080p.

Nature Scene

Again we start with the nature scene.

In 1080p and its 16:9 aspect ratio, the barrel distortion of the 6mm lens on the Raspberry Pi High Quality Camera is less noticeable. The sharpness advantage over the Logitech c922 also decreases. Colours and contrast remain better on the Raspberry Pi High Quality Camera than the Logitech c922.

The decentering defect of the Logitech c922 stays visible. The lack of colours and contrast is even more pronounced.

The 1080p capture of the Fujifilm X-T4 is nicely saturated and has good contrast but seems to be a bit oversharpened.

Studio Scene

Back to the indoor scene.

No real surprises here. Funny enough, the Logitech c922 seems to be a bit sharper in its lower right corner than the Raspberry Pi High Quality Camera. Perfect if you want to record yourself lying down with the face to the right blurring the rest of your room. But who would want that? Only your fans would watch it?

The captured image from the Fujifilm looks surprisingly close to the other two. I expected more.

Quick Improvements

Let’s briefly look at two possible improvements to the results above.

Stopping down the Raspberry Pi High Quality Camera

You can stop down the 6mm lens of the Raspberry Pi High Quality Camera. But there is no f-stop scale so the results are not really reproduceable. For the following test I stopped it down to about half and repeated the indoor tests. The following images are all taken with the Raspberry Pi High Quality Camera.

When stopping down sharpness improves noticeably across the frame. The barrel distortion remains however. Unfortunately the increase in sharpness is less visible in 1080p.

The usual tradeofs to stopping down of course apply like reduced light gathering and increased depth of field.

1080p from SD Card (Fujifilm)

The captures from the no name USB video capture card I use with the Fujifilm X-T4 seemed to be a bit low in resolution for me. So here I compare it to a frame from a in camera video recorded to the SD card with the lowest quality settings available in the camera.

The difference is striking. Even on lowest settings the in camera encoder produces a much better image than the USB capture card.

Future Work

So the Raspberry Pi High Quality Camera definitely has the potential to be a great Zoom camera. The sensor is capable but the 6mm lens is very poor. I guess I would have to get a better one. Also the encoders of both cameras seem to have a great impact on the final image. Maybe I should compare them as well. Also it’s unclear wether the improved image quality would be visible in a Zoom session. So, more tests are in order. Or I just shop a Brio…