Comments (3)
Some ideas for failing photometric calibration:
- Is the gain of you camera fixed? Make sure AGC is disabled.
- Do you capture the full range of pixel values form 0 to 255 bytes?
- Is the lighting really controlled and not changing (e.g. moving clouds can already be a problem)?
- Can you do a successful calibration for the online dataset (calibration sequences)?
from mono_dataset_code.
@NikolausDemmel .. first of all thanks for your reply !
regarding your questions:
1- Yes, I've disabled AGC of the camera and the gain of the camera is now fixed.
2- After plotting a histogram of all images in my data set (spectrum-no. of pixels in all images), I've noticed that not all the spectrum is covered. that's why (nan) showed up in pcalib.txt.
so, I decided to perform normalization(feature scaling) on all pixels of all images. that enabled me to cover the whole range.
Note: my camera sensor can't capture 0 value pixels even if the cap of the camera is on !
ICRF(G) (after scaling & fixing camera gain) : https://ibb.co/kwwV7m
3- the lighting is really controlled as I'm capturing in indoor scene with no-moving objects.
4- Yes, it's was a successful calibration.
Now, I'd ask if the scaling operation is a right approach to compensate the uncovered range ?
and what caused that sudden drop in the function attached ? the function is still not monotonic !
Thanks in advance.
from mono_dataset_code.
3- If you have halogen lights, beware that they flicker with 50 or 60 Hz, which might also influence your image acquisition. Inspect all the images visually and watch out for artifacts.
2- Not sure what exactly you are doing, but any transformation you do before the calibration, you must then also do in the exact same way before removing the vignette and applying the inverse camera response later. The transformation must be constant in the sense that it does not depend on the current image. Then I think it should be fine.
If you just don't ever measure pixel intensities below a certain value, you can also manually set the response function for those pixels to something simple like "linear between 0 and the lowest observed value".
- Another idea of what might go wrong: Make sure your exposure times are accurate. Some sensor driver API let you only get the current setting of exposure time, and don't give you up-to-date metadata for every frame. I.e. after changing the exposure time, you might get some frames that were still captured with the previous exposure time, you you record the new exposure time for them.
from mono_dataset_code.
Related Issues (20)
- false result of responseCalib HOT 4
- How to calibrate camera? HOT 3
- Unable to run playDataset with mono_dataset sequences HOT 5
- playDataset can't read calibration file HOT 3
- camera ISP affected the manual calibration HOT 12
- Camera response calibration HOT 4
- Do not know how undistort an image HOT 1
- Checkerboard size HOT 3
- Can I save calibrated image? HOT 1
- create tum dataset for my video HOT 4
- record different dataset and get different calibration result
- Unable to run playDataset with mono_dataset sequences HOT 1
- Remove unnecessary null pointer checks HOT 1
- Improve exception safety with smart pointers HOT 1
- What is the unit of fx an fy? HOT 1
- Calibrate response receives infinite results HOT 2
- response function calibration with own dataset HOT 2
- pcalib.txt and vignette.png generation on TUM VO dataset
- responseCalib error : buffer still too small. abort. HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mono_dataset_code.