Temporal noise reduction mode 2 returns green frames

Hello,
I’m trying to configure temporal noise reduction to HQ, but output image is solid green.

In gst-inspect-1.0 nvarguscamerasrc I can see that there is HQ noise reduction :

                        flags: readable, writable
                        Enum "GstNvArgusCamTNRMode" Default: 1, "NoiseReduction_Fast"
                           (0): NoiseReduction_Off - GST_NVCAM_NR_OFF
                           (1): NoiseReduction_Fast - GST_NVCAM_NR_FAST
                           (2): NoiseReduction_HighQuality - GST_NVCAM_NR_HIGHQUALITY

But, when I configure mine pipepline with tnr-mode=2, it stores just green frames.
If I use tnr-mode=0 the image is stored and it is bit noisy. With tnr-mode=1 image is stored and it is bit less noisy than with tnr-mode=0. But, when I use tnr-mode=2, I can see only green frames. Same behavior if I store images in raw format.

pipeline:

gst-launch-1.0 -e nvarguscamerasrc \
        sensor-id=2 \
        aelock=FALSE \
        exposuretimerange="10000000 10001000" \
        gainrange="1 1" \
        ispdigitalgainrange="1 1" \
        ee-mode=0 \
        ee-strength=0 \
        tnr-mode=2 \
        tnr-strength=1 \
        ! "video/x-raw(memory:NVMM),width=3840,height=2160,framerate=3/1" \
        ! nvvidconv \
        ! "jpegenc"\
        ! multifilesink location=/media/sd_card/camera_frames/frame_%03d.jpg max-files=10

I tried to change:

noiseReduction.v6.Chroma.Enable = FALSE;
noiseReduction.v6.Luma.Enable = FALSE;

based on following thread, but no improvement:

I’m using Jetson Nano
L4T 32.4.4 [ JetPack 4.4.1 ]
Ubuntu 18.04.6 LTS

Do you try tnr-mode=2 only?

gst-launch-1.0 nvarguscamerasrc tnr-mode=2 ! "video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160,format=(string)NV12, framerate=(fraction)30/1" ! nvvidconv ! xvimagesink sync=false

Thanks ShaneCCC for an answer,
In deed there is difference, but the output is in green tint.

My previous pipline was providing this output:

When I removed other parameters and set only tnr-mode=2 I got this output:

When I set ‘tnr-mode=1’, got output with correct colors:

The pipeline which I used is following:

gst-launch-1.0 -e nvarguscamerasrc sensor-id=2 tnr-mode=2 ! "video/x-raw(memory:NVMM), width=3840,height=2160, framerate=3/1" ! nvvidconv ! "jpegenc" ! multifilesink location=/media/sd_card/camera_frames/frame2_%03d.jpg max-files=10

I played bit with exposuretimerange and gainrange, it look like the solid green is only under/over exposed picture. But I still don’t know how to remove green tint.

I also used format=(string)NV12 as you suggested in your pipeline, but no improvement.

I tried to remove camera_overrides.isp, and colors, shading… is much worse (of course), BUT TNR=2 is working.

Is there something elementary wrong with those settings? Is there any manual how to tune those parameters?

noiseReduction.v2.MaxValue = 7;
noiseReduction.v2.Preview[0] = { 1, 2, 3, 5, 6, 7, 7 };
noiseReduction.v2.Preview[1] = { 1, 2, 3, 5, 6, 7, 7 };
noiseReduction.v2.Preview[2] = { 1, 2, 3, 5, 6, 7, 7 };
noiseReduction.v2.Preview[3] = { 1, 2, 3, 5, 6, 7, 7 };
noiseReduction.v2.Still[0] = { 1, 2, 3, 5, 6, 7, 7 };
noiseReduction.v2.Still[1] = { 1, 2, 3, 5, 6, 7, 7 };
noiseReduction.v2.Still[2] = { 1, 2, 3, 5, 6, 7, 7 };
noiseReduction.v2.Still[3] = { 1, 2, 3, 5, 6, 7, 7 };
noiseReduction.v2.Video[0] = { 1, 2, 3, 5, 6, 7, 7 };
noiseReduction.v2.Video[1] = { 1, 2, 3, 5, 6, 7, 7 };
noiseReduction.v2.Video[2] = { 1, 2, 3, 5, 6, 7, 7 };
noiseReduction.v2.Video[3] = { 1, 2, 3, 5, 6, 7, 7 };
noiseReduction.v6.Chroma.Enable = TRUE;
noiseReduction.v6.Luma.Enable = TRUE;
noiseReduction.v6.Chroma.GainThreshold = 1.0;
noiseReduction.v6.Luma.GainThreshold = 2.0;
noiseReduction.v6.NumSignalConditioningPoints = 7;
noiseReduction.v6.SignalConditioning[0].Gain = 2;
noiseReduction.v6.SignalConditioning[0].NoiseBlend = 0.95;
noiseReduction.v6.SignalConditioning[0].Shaping = 1.0;
noiseReduction.v6.SignalConditioning[1].Gain = 4;
noiseReduction.v6.SignalConditioning[1].NoiseBlend = 0.90;
noiseReduction.v6.SignalConditioning[1].Shaping = 1.0;
noiseReduction.v6.SignalConditioning[2].Gain = 6;
noiseReduction.v6.SignalConditioning[2].NoiseBlend = 0.86;
noiseReduction.v6.SignalConditioning[2].Shaping = 1.0;
noiseReduction.v6.SignalConditioning[3].Gain = 8;
noiseReduction.v6.SignalConditioning[3].NoiseBlend = 0.82;
noiseReduction.v6.SignalConditioning[3].Shaping = 1.0;
noiseReduction.v6.SignalConditioning[4].Gain = 10;
noiseReduction.v6.SignalConditioning[4].NoiseBlend = 0.80;
noiseReduction.v6.SignalConditioning[4].Shaping = 1.0;
noiseReduction.v6.SignalConditioning[5].Gain = 12;
noiseReduction.v6.SignalConditioning[5].NoiseBlend = 0.79;
noiseReduction.v6.SignalConditioning[5].Shaping = 1.0;
noiseReduction.v6.SignalConditioning[6].Gain = 16;
noiseReduction.v6.SignalConditioning[6].NoiseBlend = 0.40;
noiseReduction.v6.SignalConditioning[6].Shaping = 1.0;
noiseReduction.v6.NumChromaPoints = 7;
noiseReduction.v6.Chroma[0].Gain = 1;
noiseReduction.v6.Chroma[0].FilterStrength = 0.03;
noiseReduction.v6.Chroma[0].Levels = 2;
noiseReduction.v6.Chroma[0].Scaling = 1.0;
noiseReduction.v6.Chroma[0].SignalBoost = 1.0;
noiseReduction.v6.Chroma[1].Gain = 1.1;
noiseReduction.v6.Chroma[1].FilterStrength = 0.04;
noiseReduction.v6.Chroma[1].Levels = 2;
noiseReduction.v6.Chroma[1].Scaling = 1.0;
noiseReduction.v6.Chroma[1].SignalBoost = 1.0;
noiseReduction.v6.Chroma[2].Gain = 2;
noiseReduction.v6.Chroma[2].FilterStrength = 0.06;
noiseReduction.v6.Chroma[2].Levels = 3;
noiseReduction.v6.Chroma[2].Scaling = 1.0;
noiseReduction.v6.Chroma[2].SignalBoost = 1.0;
noiseReduction.v6.Chroma[3].Gain = 4;
noiseReduction.v6.Chroma[3].FilterStrength = 0.07;
noiseReduction.v6.Chroma[3].Levels = 3;
noiseReduction.v6.Chroma[3].Scaling = 1.0;
noiseReduction.v6.Chroma[3].SignalBoost = 1.0;
noiseReduction.v6.Chroma[4].Gain = 6;
noiseReduction.v6.Chroma[4].FilterStrength = 0.08;
noiseReduction.v6.Chroma[4].Levels = 3;
noiseReduction.v6.Chroma[4].Scaling = 1.0;
noiseReduction.v6.Chroma[4].SignalBoost = 1.0;
noiseReduction.v6.Chroma[5].Gain = 8;
noiseReduction.v6.Chroma[5].FilterStrength = 0.09;
noiseReduction.v6.Chroma[5].Levels = 3;
noiseReduction.v6.Chroma[5].Scaling = 1.0;
noiseReduction.v6.Chroma[5].SignalBoost = 1.0;
noiseReduction.v6.Chroma[6].Gain = 10;
noiseReduction.v6.Chroma[6].FilterStrength = 0.10;
noiseReduction.v6.Chroma[6].Levels = 3;
noiseReduction.v6.Chroma[6].Scaling = 1.0;
noiseReduction.v6.Chroma[6].SignalBoost = 1.0;
noiseReduction.v6.NumLumaPoints = 7;
noiseReduction.v6.Luma[0].Gain = 2;
noiseReduction.v6.Luma[0].FilterStrength = 0.5;
noiseReduction.v6.Luma[0].Levels = 1;
noiseReduction.v6.Luma[0].Scaling = 1.0;
noiseReduction.v6.Luma[0].SignalBoost = 1.0;
noiseReduction.v6.Luma[1].Gain = 4;
noiseReduction.v6.Luma[1].FilterStrength = 0.8;
noiseReduction.v6.Luma[1].Levels = 1;
noiseReduction.v6.Luma[1].Scaling = 1.0;
noiseReduction.v6.Luma[1].SignalBoost = 1.0;
noiseReduction.v6.Luma[2].Gain = 6;
noiseReduction.v6.Luma[2].FilterStrength = 1.0;
noiseReduction.v6.Luma[2].Levels = 1;
noiseReduction.v6.Luma[2].Scaling = 1.0;
noiseReduction.v6.Luma[2].SignalBoost = 1.0;
noiseReduction.v6.Luma[3].Gain = 8;
noiseReduction.v6.Luma[3].FilterStrength = 1.3;
noiseReduction.v6.Luma[3].Levels = 1;
noiseReduction.v6.Luma[3].Scaling = 1.0;
noiseReduction.v6.Luma[3].SignalBoost = 1.0;
noiseReduction.v6.Luma[4].Gain = 10;
noiseReduction.v6.Luma[4].FilterStrength = 1.5;
noiseReduction.v6.Luma[4].Levels = 1;
noiseReduction.v6.Luma[4].Scaling = 1.0;
noiseReduction.v6.Luma[4].SignalBoost = 1.0;
noiseReduction.v6.Luma[5].Gain = 12;
noiseReduction.v6.Luma[5].FilterStrength = 1.6;
noiseReduction.v6.Luma[5].Levels = 1;
noiseReduction.v6.Luma[5].Scaling = 1.0;
noiseReduction.v6.Luma[5].SignalBoost = 1.0;
noiseReduction.v6.Luma[6].Gain = 16;
noiseReduction.v6.Luma[6].FilterStrength = 0.20;
noiseReduction.v6.Luma[6].Levels = 1;
noiseReduction.v6.Luma[6].Scaling = 1.0;
noiseReduction.v6.Luma[6].SignalBoost = 1.0;

Do you get the ISP override file from camera partner?
Could you report to them to get tuning help.

Thanks

Thanks ShaneCCC for the answer,

For the record.
I tried again to turn of Chroma and Luma and now the output image looks colorful even with tnr-mode=2, I don’t see difference between tnr-mode=1 and tnr-mode=2, but I guess that’s because Chroma and Luma is turned off in isp file. I probably forgot to delete serial_no_2.bin in folder with .isp file when I did this modification first time.

noiseReduction.v6.Chroma.Enable = FALSE;
noiseReduction.v6.Luma.Enable = FALSE;

When I set Chroma.Enable=FALSE and Luma.Enable=FALSE image with tnr-mode=2 is RGB, visible noise.

When I set Chroma.Enable=FALSE and Luma.Enable=TRUE image with tnr-mode=2 is dark red, value for G, B is zero on whole output image.

When I set Chroma.Enable=TRUE and Luma.Enable=FALSE image with tnr-mode=2 is green,
values for R, B is zero on whole output image. (as seen in previous comments).

When I set Chroma.Enable=TRUE and Luma.Enable=TRUE image with tnr-mode=2 is green, values for R, B is zero on whole output image. (as seen in previous comments).

I contacted Nvidia partner regarding this issue and I’m waiting for the answer.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.