Default noise suppression

What does OpenMV use by default for non suppression?
Using giga r1 and ov 7670, with arduino camera to display examples there are quite a few green artifacts, meanwhile with openmv this issue doesn’t occur. I wonder if any and what kinda filter gets applied by default to get rid of the noise

Can you post a picture of the differences? Also, what’s the pixel format.

We don’t do any non suppression on the raw data feed.

You can see on the second one there’s a lot of bright purple / green particles


In some cases like pointing at a wall the particles get even worse

Ah, that looks like issues with processing the color format and or register settings.

The ridges around color areas are bit math errors and truncations happening. Not sure what format they are using under the hood. RAW RGB565 output shouldn’t require any conversion and should be okay. Not sure why there are any bit errors there.

As for the image quality in general, that’s probably related to camera register settings and or the clock frequency they are driving the camera at. Most likely the clock frequency. When you turn that up the image looks very bad. A lot of camera drivers turn this up higher to deal with the fact that they are dropping every other frame unless they have implemented a full double or triple buffered frame buffer architecture. We have that now so we don’t have to overclock the camera to get all frames.

Anyway, I don’t know the exact reason for the difference. I remember on older Omnivision cameras the image quality looked like that (e.g the OV2640). Picture quality was pretty much a function of the clock frequency and resolution you used as the camera would output very ugly images with some register settings. In particular, when using binning internally in the camera you’d get nasty artifacts like that.

So, the issue is likely with just the register settings and camera clock freq.

1 Like

It is supposed to be RGB565 indeed so it is strange. The resolution is 320x240 and frame rate 30fps, so it shouldn’t be a necessary clock, and so I have submitted a GitHub issue for developers of the library - Arducam to hopefully look into this.

What clock frequency do you use?

24 Mhz.

Here’s our driver: https://github.com/openmv/openmv/blob/master/src/omv/sensors/ov7670.c

Hmm I can try to replace the Arduino driver with that to see if it fixes it. The Arduino driver also has some issue with grayscale.

I have replaced the registers I could, all but { COM10, COM10_VSYNC_NEG},
worked, but still get the issue.
Regarding clock it was actually just 12 on Arduino by default, making it 24 increased the frame rate from +/- 8 to about 10 but its still much slower than on OpenMV, for which I wanted to say, you have done very well on optimalization

1 Like