IMX412 Poor performance vs IMX214?
-
Recently I went about upgrading from the
M0024 IMX214
to the
M0161 IMX412
Lens Mount: m12
Lens Part No: 27629F-16MAS-CM.However, initial tests left us somewhat puzzled. For the imx412 I used the latest VOXL2 platform release with SDK 1.4.0. I saw a significant degradation in quality of the image with the IMX412. For the IMX412 I used the preview frame at the full resolution (4056x3040). For the IMX214 I also used the preview frame but at (4208x3120) Posted below are some samples. I recorded them via voxl-logger
I believe the imx412 has a wider field of view so perhaps some degradation in quality it to be expected as it might have a slightly lower angular resolution? As perhaps fewer pixels are available per degree of FOV? That being said I wouldn't think this much worse. Similarly, the exposure looked much worse. A good target here is the donut box.
Here are two downsampled images since the forum wouldn't let me post the full images. For the full images straight from voxl-logger I included a link to them in google drive folder (granted google might also downsample them but you'll still be able to see the difference. Any help/input on the quality difference would be much appreciated. Not sure if this is to be expected? Maybe something is wrong with the driver?
IMX214
IMX412
[Google Drive link] (https://drive.google.com/drive/folders/1rZV6LM5qSqLjSTxz58Eq4tsZ0AO3cMxz?usp=sharing)
-
@jameskuesel , can you please do a quick test:
move / rename the following file:
/usr/lib/camera/com.qti.tuned.cmk_imx577.bin
then restart camera server and take a look at the image again.
I believe the tuning file is smoothing out the image too much. the imx412 sensormodule file (also in
/usr/lib/camera
) is linked tocom.qti.tuned.cmk_imx577.bin
tuning file. By removing the file, the camera pipeline will load the default tuning file, which is what I believe your imx214 is using (com.qti.tuned.default.bin
).another thing to try is to use a different tuning file, which we have been testing, which removes a lot of the smoothing for IMX412:
cd /usr/lib/camera mv com.qti.tuned.cmk_imx577.bin com.qti.tuned.cmk_imx577.bin.bak ln -s com.qti.tuned.imx412_fpv.bin com.qti.tuned.cmk_imx577.bin #then restart voxl-camera-server
Essentially this will replace the tuning file that is currently being used with a custom one we are experimenting with.
Please let me know if these options look better.
In order to see which camera is using which tuning file you can enable a special debug mode:
add to
/vendor/etc/camera/camxoverridesettings.txt
:logInfoMask=0x20000
if you see
systemLogEnable=0
, set it to1
:systemLogEnable=1
run in one terminal:
logcat | grep -i tuning
Then restart
voxl-camera-server
and you should see in the first terminal something like the following..chromatix
file is analogous totuning
file.voxl2-mini:/$ logcat | grep -i tuning 01-29 02:22:27.003 3844 3844 I CamX : [ INFO][HWL ] camxhwenvironment.cpp:1762 CreateTuningDataManager() Enter : sensor index: 0, sensor name: imx412_fpv, chromatix name: imx412_fpv 01-29 02:22:27.003 3844 3844 I CamX : [ INFO][HWL ] camxhwenvironment.cpp:1798 CreateTuningDataManager() Searching regular tuning file 01-29 02:22:27.014 3844 3844 I CamX : [ INFO][HWL ] camxhwenvironment.cpp:1839 CreateTuningDataManager() Loaded tuning file: /usr/lib/camera/com.qti.tuned.imx412_fpv.bin for sensor index: 0 01-29 02:22:27.118 3844 3844 I CamX : [ INFO][HWL ] camxhwenvironment.cpp:1762 CreateTuningDataManager() Enter : sensor index: 1, sensor name: ar0144, chromatix name: onsemi_ar0144 01-29 02:22:27.118 3844 3844 I CamX : [ INFO][HWL ] camxhwenvironment.cpp:1798 CreateTuningDataManager() Searching regular tuning file 01-29 02:22:27.118 3844 3844 I CamX : [ INFO][HWL ] camxhwenvironment.cpp:1811 CreateTuningDataManager() No tuning data file for sensor: ar0144, assigning default 01-29 02:22:27.127 3844 3844 I CamX : [ INFO][HWL ] camxhwenvironment.cpp:1839 CreateTuningDataManager() Loaded tuning file: /usr/lib/camera/com.qti.tuned.default.bin for sensor index: 1 01-29 02:22:27.158 3844 3844 I CamX : [ INFO][HWL ] camxhwenvironment.cpp:1762 CreateTuningDataManager() Enter : sensor index: 2, sensor name: imx214, chromatix name: imx214 01-29 02:22:27.158 3844 3844 I CamX : [ INFO][HWL ] camxhwenvironment.cpp:1798 CreateTuningDataManager() Searching regular tuning file 01-29 02:22:27.158 3844 3844 I CamX : [ INFO][HWL ] camxhwenvironment.cpp:1811 CreateTuningDataManager() No tuning data file for sensor: imx214, assigning default 01-29 02:22:27.163 3844 3844 I CamX : [ INFO][HWL ] camxhwenvironment.cpp:1839 CreateTuningDataManager() Loaded tuning file: /usr/lib/camera/com.qti.tuned.default.bin for sensor index: 2
I currently have hooked up 3 cameras, my results probably wont match yours since i don't have exactly the same setup and drivers, but you can see what to expect.
After testing, you can disable the log mask and system logging to reduce cpu usage.
Alex