ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    Hadron ov64b snapshots have a vertical image artifact

    Video and Image Sensors
    3
    34
    1790
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Alex KushleyevA
      Alex Kushleyev ModalAI Team @cguzikowski
      last edited by

      @cguzikowski ,

      We can add the jpeg meta to the jpeg file saved from voxl-record-raw-image. which fields specifically are good to have?

      Also, regarding the exposure settling - can you please provide the exact configuration you are running? specifically, which are enabled (misp, small_video, snapshot) and is auto exposure set to "isp" or not -- maybe provide a camera server config? When using MISP, i believe there is a case that if none of the streams are being used, the AE won't run, but we can fix this for the case of enabled snapshot.

      Alex

      C 1 Reply Last reply Reply Quote 0
      • C
        cguzikowski @Alex Kushleyev
        last edited by

        @Alex-Kushleyev Our application doesn't specifically need the metadata, just figured I should point it out in case it was intended to be there. It may be useful to have shutter speed, ISO, aperture, and date/time though.

        Ah yes that seems to be the issue, we are using MISP, preview, and snapshot. It would be useful to have the AE run without us viewing the stream. Here is the conf file:

        {
        	"version":	0.1,
        	"fsync_en":	false,
        	"fsync_gpio":	109,
        	"cameras":	[{
        			"type":	"boson",
        			"name":	"boson",
        			"enabled":	true,
        			"camera_id":	0,
        			"fps":	30,
        			"en_preview":	true,
        			"en_misp":	true,
        			"preview_width":	640,
        			"preview_height":	512,
        			"en_raw_preview":	true,
        			"en_small_video":	false,
        			"en_large_video":	false,
        			"ae_mode":	"off",
        			"en_rotate":	false,
        			"misp_width":	512,
        			"misp_height":	640,
        			"misp_venc_enable":	true,
        			"misp_venc_mode":	"h264",
        			"misp_venc_br_ctrl":	"cqp",
        			"misp_venc_Qfixed":	30,
        			"misp_venc_Qmin":	15,
        			"misp_venc_Qmax":	50,
        			"misp_venc_nPframes":	29,
        			"misp_venc_mbps":	2,
        			"misp_venc_osd":	false,
        			"misp_awb":	"off",
        			"misp_gamma":	1,
        			"misp_zoom":	1,
        			"gain_min":	100,
        			"gain_max":	100
        		}, {
        			"type":	"ov64b",
        			"name":	"hires",
        			"enabled":	true,
        			"camera_id":	1,
        			"fps":	30,
        			"en_preview":	true,
        			"en_misp":	true,
        			"preview_width":	9216,
        			"preview_height":	6912,
        			"en_raw_preview":	true,
        			"en_small_video":	false,
        			"en_large_video":	false,
        			"en_snapshot":	true,
        			"ae_mode":	"isp",
        			"gain_min":	100,
        			"gain_max":	100,
        			"misp_width":	9216,
        			"misp_height":	6912,
        			"misp_venc_enable":	false,
        			"misp_venc_mode":	"h265",
        			"misp_venc_br_ctrl":	"cqp",
        			"misp_venc_Qfixed":	38,
        			"misp_venc_Qmin":	15,
        			"misp_venc_Qmax":	50,
        			"misp_venc_nPframes":	29,
        			"misp_venc_mbps":	30,
        			"misp_venc_osd":	false,
        			"misp_awb":	"auto",
        			"misp_gamma":	1,
        			"misp_zoom":	1,
        			"ae_desired_msv":	75,
        			"exposure_min_us":	1000,
        			"exposure_max_us":	1001,
        			"exposure_soft_min_us":	5000,
        			"ae_filter_alpha":	0.6,
        			"ae_ignore_fraction":	0.2,
        			"ae_slope":	0.1,
        			"ae_exposure_period":	1,
        			"ae_gain_period":	1,
        			"max_request_queue_depth":	6,
        			"en_snapshot_width":	9216,
        			"en_snapshot_height":	6912,
        			"exif_focal_length":	3.1,
        			"exif_focal_length_in_35mm_format":	17,
        			"exif_fnumber":	1.24,
        			"snapshot_jpeg_quality":	90
        		}]
        }
        
        
        Alex KushleyevA 1 Reply Last reply Reply Quote 0
        • Alex KushleyevA
          Alex Kushleyev ModalAI Team @cguzikowski
          last edited by

          @cguzikowski , got it, thanks for the clarification. I will add a camera server config param that would force the auto exposure to run all the time, regardless of whether the streams are used or not. this should be simple.

          Also, i was wondering if you decided that the ISP snapshot is good enough for you or you want to explore saving the RAW bayer and processing offline? We have been experimenting with some approaches for offline processing and I can share some scripts, which have some flexibility on how much to de-noise , sharpen, etc. I am also going to add the LSC (lens shading correction) for the offline processing (and later into real-time misp pipeline) to correct for those artifacts that you saw where the colors change across the image.

          Alex

          C 2 Replies Last reply Reply Quote 0
          • C
            cguzikowski @Alex Kushleyev
            last edited by cguzikowski

            @Alex-Kushleyev Sorry for the delayed response, but I believe the ISP snapshots are good enough quality for us, but could I still get the scripts to mess around and test with?

            Also is the most recent camera server here the version with the auto-auto exposure? If so, what is the parameter to use to activate that?

            1 Reply Last reply Reply Quote 0
            • C
              cguzikowski @Alex Kushleyev
              last edited by

              @Alex-Kushleyev Also just noticed the vertical artifact again. The artifact is only present in the snapshots and not the raw images saved as jpeg - will definitely need those post processing scripts now.

              Here is the raw image:
              5b9ca86b-79b0-4ca3-a317-7c0365efd312-image.png

              And here is the snapshot:
              2a55882f-b782-4044-8d5d-f0bd7cbe4881-image.png

              Alex KushleyevA 1 Reply Last reply Reply Quote 0
              • Alex KushleyevA
                Alex Kushleyev ModalAI Team @cguzikowski
                last edited by

                @cguzikowski , thanks for following up.

                I don't know why the ISP is outputting the jpeg with the issue - that is outside of our area of expertise. It could be a bug in the ISP or JPEG encoder.

                I will get together some scripts i have been using for testing. I need add the LSC (lens shading correction) otherwise the colors look wrong and also image gets darker towards the edges. In order to apply LSC correction, we need a map (either look-up table or a poly fit) of each channel's response as a function of pixel coordinate (or radius) -- this needs to be calibrated (not for each camera module, but for each camera type + lens type). So after the calibration, my results should apply to your camera as well.

                I will follow up early next week.

                Alex

                Alex KushleyevA 1 Reply Last reply Reply Quote 0
                • Alex KushleyevA
                  Alex Kushleyev ModalAI Team @Alex Kushleyev
                  last edited by

                  @cguzikowski , quick question for you. For your application, does it matter how much time (reasonable) it takes to debayer the image? some of my offline processing scripts are not optimized for real-time operation, but are very flexible to use and the full resolution image from ov64b is huge and it may take a few seconds to process without optimizations.

                  We also have opencl code that runs offline pretty quick on an nvidia GPU, but it does not have as many tuning knobs.

                  I guess it all depends on whether you are using the images right on the voxl2 or just collecting and analyzing offline at a later time.

                  Alex

                  C 2 Replies Last reply Reply Quote 0
                  • C
                    cguzikowski @Alex Kushleyev
                    last edited by

                    @Alex-Kushleyev Thanks for the follow up and working towards the calibration map. For us the real time processing speed doesn't matter too much, but the image file size does as we need to send the unprocessed images over radio in real time. We were hoping to use voxl-record-raw -j -q 90 as this doesn't show the vertical artifact and results in reasonable file sizes.

                    1 Reply Last reply Reply Quote 0
                    • C
                      cguzikowski @Alex Kushleyev
                      last edited by

                      @Alex-Kushleyev Hi Alex, just following up to see if it would be possible to get those image processing scripts. Also we have been trying to get the Hadron working on another voxl2 and have followed the same steps you gave before and we are using the same camera server. The boson seems to be working, but the hires camera does not. When both are enabled the camera server starts up and then immediately says "aborted". With the boson disabled I see the following output from voxl-camera-server:

                      MISP channels enabled in defaults : 0
                      MISP channels enabled in config file: 0
                      Setting MISP AWB to Auto
                      MISP channels enabled in defaults : 0
                      MISP channels enabled in config file: 0
                      max request queue depth: 6
                      =================================================================
                      configuration for 2 cameras:
                      
                      cam #0
                          name:                boson
                          type:                boson
                          bayer_type:          0
                          enabled:             0
                          camera_id:           0
                          camera_id_second:    -1
                          fps:                 30
                          en_rotate:           0
                          en_rotate2:          0
                      
                          en_preview:          1
                          en_raw_preview:      1
                          preview_width:       640
                          preview_height:      512
                      
                          en_misp:             1
                          misp_width:          512
                          misp_height:         640
                      
                          en_small_video:      0
                          small_video_width:   640
                          small_video_height:  480
                      
                          en_large_video:      0
                          large_video_width:   -1
                          large_video_height:  -1
                      
                          en_snapshot:         0
                          snap_width:          -1
                          snap_height:         -1
                          exif_focal_length:   0.000000
                          exif_focal_len_35mm_format:0
                          exif_fnumber:        0.000000
                      
                          ae_mode:             off
                          msv_exposure_min_us: 20
                          msv_exposure_max_us: 33000
                          gain_min           : 100
                          gain_max           : 100
                          standby_enabled:     0
                          decimator:           1
                          independent_exposure:0
                      
                      cam #1
                          name:                hires
                          type:                ov64b
                          bayer_type:          1
                          enabled:             1
                          camera_id:           1
                          camera_id_second:    -1
                          fps:                 30
                          en_rotate:           0
                          en_rotate2:          0
                      
                          en_preview:          1
                          en_raw_preview:      1
                          preview_width:       9216
                          preview_height:      6944
                      
                          en_misp:             1
                          misp_width:          9216
                          misp_height:         6944
                      
                          en_small_video:      0
                          small_video_width:   1024
                          small_video_height:  768
                      
                          en_large_video:      0
                          large_video_width:   3840
                          large_video_height:  2160
                      
                          en_snapshot:         0
                          snap_width:          3840
                          snap_height:         2160
                          exif_focal_length:   3.100000
                          exif_focal_len_35mm_format:17
                          exif_fnumber:        1.240000
                      
                          ae_mode:             isp
                          msv_exposure_min_us: 20
                          msv_exposure_max_us: 33000
                          gain_min           : 100
                          gain_max           : 800
                          standby_enabled:     0
                          decimator:           1
                          independent_exposure:0
                      
                      fsync_en:            0
                      fsync_gpio:          109
                      =================================================================
                      thread is locked to cores: 4 5 6 7
                      connected to mavlink pipe
                      Connected to cpu-monitor
                      Skipping Camera: boson, configuration marked disabled
                      Starting Camera: hires (id #1)
                      ModalExposureMSV: initializing for camera name  type 
                      Estimated imu dt = 0.000976s
                      gbm_create_device(156): Info: backend name is: msm_drm
                      MISP Initializing for camera hires
                       Detected 1 platform(s)
                       Detected 1 GPU device(s)
                      ERROR in json_from_yaml, failed to open file
                      MISP: Loading intrinsics cal file hires_intrinsics.yml for camera hires, ret -1
                      WARNING: Lens calibration for camera hires is missing (hires_intrinsics.yml). Using defaults:
                      
                      ------ voxl-camera-server: Started 1 of 2 cameras
                      
                      ------ voxl-camera-server: Camera server is now running
                      ERROR:   Received "Result" error from camera: hires, frame number 0
                      ERROR:   Received "Buffer" error from camera: hires, frame number 0
                      WARNING: Pushed buffers back to pools for frame: 0
                      ERROR:   Received "Result" error from camera: hires, frame number 1
                      ERROR:   Received "Buffer" error from camera: hires, frame number 1
                      WARNING: Pushed buffers back to pools for frame: 1
                      ERROR:   Received "Result" error from camera: hires, frame number 2
                      ERROR:   Received "Buffer" error from camera: hires, frame number 2
                      WARNING: Pushed buffers back to pools for frame: 2
                      ERROR:   Received "Result" error from camera: hires, frame number 3
                      ERROR:   Received "Buffer" error from camera: hires, frame number 3
                      WARNING: Pushed buffers back to pools for frame: 3
                      ERROR:   Received "Result" error from camera: hires, frame number 4
                      ERROR:   Received "Buffer" error from camera: hires, frame number 4
                      WARNING: Pushed buffers back to pools for frame: 4
                      ERROR:   Received "Request" error from camera: hires, frame number 5
                      WARNING: Pushed buffers back to pools for frame: 5
                      ^C
                      received SIGINT Ctrl-C
                      
                      ------ voxl-camera-server: Camera server is now stopping
                      ------------------------------
                      Stats For Camera hires:
                      	 Received Frame Count: 12
                      	 Request  Error Count: 1
                      	 Buffer   Error Count: 5
                      	 Result   Error Count: 5
                      
                      ------ voxl-camera-server: Camera server exited gracefully, returning 0
                      
                      

                      Here is the output of voxl-version on the non-working voxl:

                      ────────────────────────────────────────────────────────────────────────────────
                      system-image: 1.8.06-M0054-14.1a-perf
                      kernel:       #1 SMP PREEMPT Wed Oct 22 03:21:50 UTC 2025 4.19.125
                      ────────────────────────────────────────────────────────────────────────────────
                      hw platform:  M0054
                      mach.var:     1.0.0
                      SKU:          MCCA-M0054-C11-T0-M0-X0
                      ────────────────────────────────────────────────────────────────────────────────
                      voxl-suite:   1.6.3
                      ────────────────────────────────────────────────────────────────────────────────
                      Packages:
                      Repo:  http://voxl-packages.modalai.com/ ./dists/qrb5165/sdk-1.6/binary-arm64/
                      Last Updated: 2023-03-02 13:58:13
                      List:
                      libfc-sensor                   1.0.9
                      libmodal-cv                    0.6.0
                      libmodal-exposure              0.1.4
                      libmodal-flow                  1.0.3
                      libmodal-journal               0.2.7
                      libmodal-json                  0.4.8
                      libmodal-pipe                  2.14.11
                      libqrb5165-io                  0.6.3
                      libvoxl-cci-direct             0.3.3
                      libvoxl-codec                  0.0.2
                      libvoxl-cutils                 0.1.6
                      modalai-slpi                   1.2.2
                      mv-voxl                        0.1-r0
                      qrb5165-bind                   0.1-r0
                      qrb5165-dfs-server             0.2.0
                      qrb5165-mini-tof-server        0.2.2
                      qrb5165-rangefinder-server     0.1.6
                      qrb5165-slpi-test-sig          01-r0
                      qrb5165-tflite                 2.17.2
                      voxl-bind-spektrum             0.1.1
                      voxl-camera-calibration        0.6.1
                      voxl-camera-server             2.2.23-202604170806
                      voxl-ceres-solver              2:2.0.0-2
                      voxl-configurator              1.1.5
                      voxl-cpu-monitor               0.7.7
                      voxl-docker-support            1.3.1
                      voxl-elrs                      1.1.0
                      voxl-esc                       1.5.7
                      voxl-esptool                   0.2.0
                      voxl-feature-tracker           0.5.2
                      voxl-flow-server               0.3.6
                      voxl-gphoto2-server            0.0.10
                      voxl-imu-server                2.0.1
                      voxl-io-server                 0.0.8
                      voxl-jpeg-turbo                2.1.3-7
                      voxl-lepton-server             1.3.3
                      voxl-lepton-tracker            0.0.4
                      voxl-libgeographic             1.0.0
                      voxl-libgphoto2                0.0.4
                      voxl-libuvc                    1.0.7
                      voxl-logger                    0.6.1
                      voxl-mavcam-manager            0.6.0
                      voxl-mavlink                   0.1.6
                      voxl-mavlink-server            1.4.14
                      voxl-modem                     1.2.3
                      voxl-mongoose                  7.19.0
                      voxl-mpa-to-ros                0.3.9
                      voxl-mpa-tools                 1.5.8
                      voxl-nano-tracker              0.1.7
                      voxl-open-vins-server          0.6.0
                      voxl-opencv                    4.5.5-3
                      voxl-osd                       0.3.8
                      voxl-portal                    0.8.7
                      voxl-px4                       1.14.0-2.0.133
                      voxl-px4-params                0.9.0
                      voxl-qvio-server               1.2.3
                      voxl-remote-id                 0.0.9
                      voxl-reset-slpi                0.0.1
                      voxl-state-estimator           0.0.6
                      voxl-streamer                  0.8.0
                      voxl-suite                     1.6.3
                      voxl-tag-detector              0.1.0
                      voxl-tflite-server             0.5.1
                      voxl-utils                     2.0.2
                      voxl-uvc-server                0.1.7
                      voxl-vision-hub                1.9.21
                      voxl-vtx                       2.0.2
                      voxl-wavemux                   0.0.3
                      voxl2-io                       0.0.3
                      voxl2-security-hardening-utls  1.0-r0
                      voxl2-system-image             1.8.06-r0
                      voxl2-wlan                     1.0-r0
                      ────────────────────────────────────────────────────────────────────────────────
                      

                      And here are the versions for the working voxl:

                      ────────────────────────────────────────────────────────────────────────────────
                      system-image: 1.8.06-M0054-14.1a-perf
                      kernel:       #1 SMP PREEMPT Wed Oct 22 04:13:18 UTC 2025 4.19.125
                      ────────────────────────────────────────────────────────────────────────────────
                      hw platform:  M0054
                      mach.var:     1.0.1
                      SKU:          TF-M0054-4-V1-C11
                      ────────────────────────────────────────────────────────────────────────────────
                      voxl-suite:   1.6.3
                      ────────────────────────────────────────────────────────────────────────────────
                      Packages:
                      Repo:  http://voxl-packages.modalai.com/ ./dists/qrb5165/sdk-1.6/binary-arm64/
                      Last Updated: 2026-05-07 16:00:59
                      List:
                      libfc-sensor                   1.0.9
                      libmodal-cv                    0.6.0
                      libmodal-exposure              0.1.4
                      libmodal-flow                  1.0.3
                      libmodal-journal               0.2.7
                      libmodal-json                  0.4.8
                      libmodal-pipe                  2.14.11
                      libqrb5165-io                  0.6.3
                      libvoxl-cci-direct             0.3.3
                      libvoxl-codec                  0.0.2
                      libvoxl-cutils                 0.1.6
                      modalai-slpi                   1.2.2
                      mv-voxl                        0.1-r0
                      qrb5165-bind                   0.1-r0
                      qrb5165-dfs-server             0.2.0
                      qrb5165-mini-tof-server        0.2.2
                      qrb5165-rangefinder-server     0.1.6
                      qrb5165-slpi-test-sig          01-r0
                      qrb5165-tflite                 2.17.2
                      voxl-ardupilot                 4.8.0-8ed7441c
                      voxl-bind-spektrum             0.1.1
                      voxl-camera-calibration        0.6.1
                      voxl-camera-server             2.2.23-202604170806
                      voxl-ceres-solver              2:2.0.0-2
                      voxl-configurator              1.1.5
                      voxl-cpu-monitor               0.7.7
                      voxl-docker-support            1.3.1
                      voxl-elrs                      1.1.0
                      voxl-esc                       1.5.7
                      voxl-esptool                   0.2.0
                      voxl-feature-tracker           0.5.2
                      voxl-flow-server               0.3.6
                      voxl-gphoto2-server            0.0.10
                      voxl-imu-server                2.0.1
                      voxl-io-server                 0.0.8
                      voxl-jpeg-turbo                2.1.3-7
                      voxl-lepton-server             1.3.3
                      voxl-lepton-tracker            0.0.4
                      voxl-libgeographic             1.0.0
                      voxl-libgphoto2                0.0.4
                      voxl-libuvc                    1.0.7
                      voxl-logger                    0.6.1
                      voxl-mavcam-manager            0.6.0
                      voxl-mavlink                   0.1.6
                      voxl-mavlink-server            1.4.14
                      voxl-microdds-agent            3.0.0-0
                      voxl-modem                     1.2.3
                      voxl-mongoose                  7.19.0
                      voxl-mpa-to-ros                0.3.9
                      voxl-mpa-to-ros2               0.0.7
                      voxl-mpa-tools                 1.5.8
                      voxl-nano-tracker              0.1.7
                      voxl-open-vins-server          0.6.0
                      voxl-opencv                    4.5.5-3
                      voxl-osd                       0.3.8
                      voxl-portal                    0.8.7
                      voxl-px4                       1.14.0-2.0.133
                      voxl-px4-params                0.9.0
                      voxl-qvio-server               1.2.3
                      voxl-remote-id                 0.0.9
                      voxl-reset-slpi                0.0.1
                      voxl-ros2-foxy                 0.0.1
                      voxl-state-estimator           0.0.6
                      voxl-streamer                  0.8.0
                      voxl-suite                     1.6.3
                      voxl-tag-detector              0.1.0
                      voxl-tflite-server             0.5.1
                      voxl-utils                     2.0.2
                      voxl-uvc-server                0.1.7
                      voxl-vision-hub                1.9.21
                      voxl-vtx                       2.0.2
                      voxl-wavemux                   0.0.3
                      voxl2-io                       0.0.3
                      voxl2-security-hardening-utls  1.0-r0
                      voxl2-system-image             1.8.06-r0
                      voxl2-wlan                     1.0-r0
                      ────────────────────────────────────────────────────────────────────────────────
                      

                      The versions look to be the same for the most part, which is confusing us.

                      Alex KushleyevA 1 Reply Last reply Reply Quote 0
                      • Alex KushleyevA
                        Alex Kushleyev ModalAI Team @cguzikowski
                        last edited by

                        @cguzikowski ,

                        Sorry for the delay.

                        Regarding the new HW not working, since you have two identical setups, i would recommend swapping components to identify what exactly is not working. This is the most efficient way to diagnose it. From the logs you provided, the ov64b camera is detected and initialized, it seems, but no frames come in, which could be a cabling or interposer issue.

                        I will get back to you with an update on the lens shading tomorrow.

                        Alex

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post
                        Powered by NodeBB | Contributors