This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OPT9221: SSCG registers and reliability of depth

Part Number: OPT9221
Other Parts Discussed in Thread: OPT8241,

Problem we are trying to solve:

Our application uses the OPT8241+OPT9221 in a short range (0.5m), 7-camera system. There is significant overlap in illumination over the array. I have read in another post that using different SSCG modulation settings for the cameras will mitigate the interference patterns that come and go over time when all the cameras are powered on and illuminating. Doing so does indeed seem to visually suppress the interference to our satisfaction.

However, changing this register introduces a new problem for us. Our application needs consistency of voxel depth values over time. We have achieved this by applying a median filter and temporal filter, which yield a good result if the cameras are using default register values (i.e. SSCG modulation = 0). Note that our cameras have been calibrated with common phase calibration, pixelwise phase calibration, and lens calibration.

Important metrics for the application:

1. A repeatable average depth of a surface. This means that from image to image (with filters) and power cycle to power cycle, if we were to measure a flat, unchanging surface, the average voxel depth value for the entire image should be consistent over time, that is to say around +/-5 mm from the mean trend line. A range of +/-50 mm would be unacceptable. We also realize that there is a small drift in the average over time due to temperature. This is something we can live with.

2. Bounded noise for all voxels. Noise is measured for our testing purposes as the max voxel depth value - the min voxel depth value of a uniform, non-reflecting surface that is orthogonal to the camera. In an ideal system, all voxel depth values would be exactly the same in this case. What we typically see is a [max-min] range of 20 mm, which is tolerable.

New problem - more error with SSCG:

Setting the SSGC register to a non-zero value destabilizes system, in that we get much worse metrics for 1 and 2 above. If we set each camera to a different modulation index before streaming begins, the average image depth will be unpredictable - varying 100 mm or more, and the voxel depth noise range can increase to 50 mm. Is there something that I am missing here? Is there a particular sequence that needs to be followed here in order to achieve the desired reliability? 

Another possible solution:

Ideally, we want to be able to stream all the cameras all the time (though that is not a hard requirement). I have noticed that minimizing the illuminator (to 48%) for all cameras besides the one that is in active capture helps with the interference, but does not eliminate it. Without switching external power, I believe there is no way to completely turn off the illuminator with our board - I have seen that discussed in another thread. I also notice that there seems to be a 0.5 to 1.0 second stabilization time when switching the illuminator from min to max setting. Can this be shortened somehow?

Thanks in advance for your response. Anything that I can try to achieve the desired results here will be greatly appreciated.

Ezekiel