Welcome new user! You can search existing questions and answers without registering, but please register to post new questions and receive answers.

FYI: Success with OV9653 120deg Fisheye Sensor

+1 vote

For anyone interested. There is an available OV9653 (the same camera sensor, same connector) but comes with a 120deg fisheye lens instead and it works well. It's hard to find and a bit pricey, but if you need it for your application, it does exist. 

The other method is to use an add-on phone lens, which would require a modified camera shell where the external lens can be screwed on. I noticed that these external add-on phone camera lenses have a standard screw size, so one modified shell design can allow for interchanging those lenses. 

One view with OV9653 with 120deg lens

View 1

Another view

Second View

Two add on lenses that work well too, albeit losing some of the image peripheral from lens obstruction.

Add on Lenses. 180deg and 235deg.

The original and the alternative camera sensor. 

The orignal camera, and the other with 120deg lens

asked Mar 28 in Hardware Questions by alsaibie (510 points)

2 Answers

0 votes

Very nice work, thanks for sharing!

I just talked to our camera sensor manufacturer and they could make a model with 120deg fisheye lens if we order at least 100. Estimated cost around $10 extra compared to standard lens. All, please note that some algorithms may not work well because the wider field of view creates some distortions of the image. This could be a problem for things like SURF, QR-code, ARuCo, etc. But you may be able to write a GPU shader to do the dewarping directly on the JeVois GPU at a very low cost in terms of JeVois CPU utilization. You would possibly extend the GPU component that is already developed for the GPU demo, and implement a dewarping shader instead of twirl and others in that demo.

Anyone interested, please email jevoisinc@gmail.com with subject line "interested in fisheye lens" and if there is enough interest we will order some.

answered Mar 28 by JeVois (7,090 points)
Unwraping on the GPU sounds very interesting and will definitely speed up my work. I've started reading into shaders and unwraping. If you have any helpful resources, it would be great if you can share them. Thanks.
+1 vote

I added a dewarping shader under DemoGPU. You can find it in this branch here:

It works pretty well. 30fps for 320x240 on Jevois (Ignore the numbers on the images, they're from a host daemon run, 457fps wouldn't be bad though hehe). Requires some parameter tweaking. Thanks again for pointing this out. 

It implements a logarithmic model with a backward mapping approach on the fragment shader. It boils down to tweaking parameters (s and lamda) in fisheye function. The code is adopter from here

answered Apr 7 by alsaibie (510 points)
Wow, really nice work! So you could be running other things on the CPU if you delay 1 frame (process frame N-1 on CPU while frame N is being de-warped). Great stuff. Or just use JeVois for dewarping and then some host CPU for additional processing. Since this was a fork of jevoisbase, may we integrate it into it for everyone to enjoy, we will give you proper credit of course?
Of course! Just sent a pull request. Added build directories and doc to gitignore too.