TX2 onboard CSI camera blurry in 640x360mode

Hi, I am using the TX2 onboard CSI camera to capture images, but find the image was very blurry in 640x360 mode. Please see the video here http://www.artlystyles.com/tmp/cl_full.mp4. Any one know how to fix it? Is that because of the mode 640x360?


hello AutoCar,

I won’t say it’s a blurry capture results, but it’s a motion blur.
please refer to the snapshot of your videos as below.

  1. mostly of textures looks normally once the vehicle keep moving straight forward.

  2. it’s a motion blur while your vehicle is turning, or even drifting.
    you should also note that, those ceiling light distortion were on the opposite way of your vehicle movements.

may I know what’s the frame-rate settings you’re working with.
due to rolling shutter sensor capability, motion blur usually caused by scene change while programming a frame.
you may reduce the motion blur by increasing the sensor frame-rate.

I was using jetson-util code from Nvidia (https://github.com/dusty-nv/jetson-utils). Not sure exactly what the frame rate was.

When the gst camera was initialized, it print-out some config as:

Available Sensor modes : 
2592 x 1944 FR=30.000000 CF=0x1109208a10 SensorModeType=4 CSIPixelBitDepth=10 DynPixelBitDepth=10
2592 x 1458 FR=30.000000 CF=0x1109208a10 SensorModeType=4 CSIPixelBitDepth=10 DynPixelBitDepth=10
1280 x 720 FR=120.000000 CF=0x1109208a10 SensorModeType=4 CSIPixelBitDepth=10 DynPixelBitDepth=10

However, I want just 640x360, so I create my c++ camera object as

myCamera = Nvidia_gstCamera(640, 360);

So I really do not know how the camera was initialized and what the frame rate was.

hello AutoCar,

it’ll depends-on requested surface aspect ratio and VI converter handle the scaling/cropping for results.
you may also found the information to indicate which sensor mode were used.

how about skip those image scaling operations, choose the 1280x720 sensor mode as your request surface for verification.

Hi @JerryChang: Thank you very much for your post.

I changed the launch string to the follow and got 60FPS

nvcamerasrc ! video/x-raw(memory:NVMM), width=(int)640, height=(int)360, format=(string)NV12, framerate=(fraction)120/1 ! nvvidconv flip-method=0 !

And I got the same 60FPS for both 640x360 and 1280x720. I have expected 120FPS. How can I achieve 120FPS?

hello AutoCar,

couple of question as below.

  1. may I know which JetPack release you’re working with?
  2. could you please execute gst-inspect to check the sensor capability.
    for example,
$ gst-inspect-1.0 nvcamerasrc

assume you’re not based-on the latest JetPack release since we deprecated nvcamerasrc recently.
you might also check Topic 1056210, for the pre-built library to removes 120-fps frame rate upper bound limitation.

I was using Jetpack 3.1 r28.

hello AutoCar,

please execute gst-inspect to check the sensor capability.
would you consider moving to the latest JetPack release, for example, JetPack 4.2.2.

gst-inspect-1.0 printed out a lot of info, which piece should I look at? I can not upgrade Jetpack since my application requires r28

Below is the output of gst-inspect-1.0

Pad Templates:
  SRC template: 'src'
    Availability: Always
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
                 format: { I420, NV12, UYVY }
              framerate: [ 0/1, 2147483647/1 ]

hello AutoCar,

please refer to several comments and suggestions as below,

  1. according to gst-inspect-1.0 results, there’s no frame-rate limitation for nvcamerasrc.
  2. assume you’ll see the motion blur improvements by using higher frame-rate. could you please have confirmation that streaming with 60-fps is sufficient for your use-case.
  3. besides frame-rate settings, suggest you should also keep exposure time as low as possible. please configure exposuretimerange to have fix values to check the results.
  4. you might also consider to contact with Jetson Preferred Partners for camera solutions.