Hi @mark , thanks for testing out the new camera binaries. Here are the answers to your recent questions:
In this version of the imx412 tuning file, i have removed several stages of filtering. There is indeed more detail that you can see but there is also more pixel noise as you noticed.
the relative brightness of the image has also changed, but you should double check the exposure and gain values before and after you switched to new camera binaries. It is possible that the Auto Exposure control is not commanding as high exposure or gain. We can adjust this if needed.
please note that the amount of filtering depends on the application. The "before" image is actually much more preferable to use in video encoding (h264 / h265). you would need a lot less bandwidth to send that image. If there is a lot of pixel noise, the encoder will require much higher bit rate to encode that image, otherwise the quality of compressed video will significantly degrade. So if your application is related to small feature detection, you may not want heavy filtering done by the ISP, but for use in video encoder (especially with a low bandwidth communication link), you would want something closer to the original image.
Regarding the resolution question.. The camera driver has a small set of different resolutions and fps (lets call them RAW resolutions) that it can use the camera. When you request some resolution in camera server config, there is a process that goes through all available RAW resolutions and fps and picks the best one. The best pick is usually either a perfect match of RAW = desired resolution. If that is not available, the next best is RAW size > desired size. Then the ISP will get a larger image and crop it to the desired size. In the latest IMX412 driver, here is the list of available RAW resolutions and fps:
4056x3040 @ 30fps (full frame = maximum image size)
3840x2160 @ 30fps (exact 4K size, cropped on camera)
1920x1080 @ 30-120fps (exact 1080p size, 2x2 binned and cropped on camera)
1280x720 @ 60-180fps (exact 720p size, 2x2 binned, cropped and downscaled on camera)
So, when you requested 4000x3000, the best match is 4056x3040, which is the size the ISP receives from camera and then ISP will just crop it to 4000x3000.
Additionally, regarding the pixel noise - usually the pixel noise is directly proportional to the gain that is applied on the pixel level. This is the gain that you see in voxl-inspect-cam and usually the exposure and gain have to be adjusted to together to achieve best results. For example, having a long exposure will work well for still images (so you reduce the gain thus reduce noise), but will have a lot of blur in dynamic images. For fast moving applications, you want to keep exposure low, but have to increase the gain in order for image brightness to be sufficient, which will result in more pixel noise. The ISP in VOXL2 has very advanced filters that attempt to de-noise the image without sacrificing detail, but they need to be carefully tuned, so for now i have disabled them.
Also, indoor applications where there is little light, will typically be a bit more complicated to get low noise image (it seems that is your test case right now). If you test outdoors or with good indoor illumination, the auto exposure algorithm, will set the gain to a low value, and pixel noise should be reduced.
If you tell me a bit more about your application (does not have to be very detailed), i can make suggestions how to better use this camera. I am also looking into making a few "tuning knobs" available for users to control amount of filtering, but it is not available yet.