Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Could you please provide Dynamic Calibration Print Target for A4 Size Paper? #10074

Open
ravijo opened this issue Dec 17, 2021 · 32 comments
Open

Comments

@ravijo
Copy link

ravijo commented Dec 17, 2021

Hi,

The current one given at the following URL belongs to US Letter size paper:
https://dev.intelrealsense.com/docs/calibration

While printing it on A4 size paper with "Actual Size", I notice 3-4 mm difference. Therefore could you please provide Dynamic Calibration Print Target for A4 Size Paper?

@MartyG-RealSense
Copy link
Collaborator

MartyG-RealSense commented Dec 17, 2021

Hi @ravijo I loaded the US Letter calibration target PDF into Word, changed the page format to A4 and re-saved the PDF. I have attached it to this message. Could you print it on A4 paper and see whether it provides you with better results, please?

print-target-fixed-width-A4.pdf

@ravijo
Copy link
Author

ravijo commented Dec 17, 2021

Hi @MartyG-RealSense

Thank you very much for the quick response.

I tried many options today. Converting US Letter to A4 via MS Word and Acrobat. But faced a few mm difference.

Is it possible for you to check the attached file once please because I left my workplace already? Can you confirm the dimensions, please?

@MartyG-RealSense
Copy link
Collaborator

My PDF reader states that the modified document is 8.27x11.69 inches, which pretty much matches to A4 size.

@ravijo
Copy link
Author

ravijo commented Dec 17, 2021

Well, I did similar steps and page was shown A4 and used "Actual Size" in printing. But the output wasn't satisfactory. that 3-4 mm difference !!!

@MartyG-RealSense
Copy link
Collaborator

MartyG-RealSense commented Dec 17, 2021

The Dynamic Calibration system offers alternatives to a printed paper target. You can install an Android application that displays a calibration target on the Android device's screen to point the camera at, or use target-less calibration (though this can be less accurate than target-based calibration).

@ravijo
Copy link
Author

ravijo commented Dec 17, 2021

@MartyG-RealSense

I will print PDF given by you above. If it doesn't work, I am gonna use the iPhone app. Though I am concerned about possible reflection on the phone screen.

Anyway, I don't wanna use target-less calibration, because my priority is all about depth accuracy.

@MartyG-RealSense
Copy link
Collaborator

You can significantly dampen glare from reflections by purchasing a physical thin-film linear polarization filter product and applying it over the camera lenses on the outside of the camera. You can find out more about affordable linear polarization filters by going to Amazon and searching for linear polarization sheet.

Any thin-film polarizer that is linear should work - circular polarizers used in 3D glasses won't work.

@ravijo
Copy link
Author

ravijo commented Dec 19, 2021

@MartyG-RealSense

Hi @ravijo I loaded the US Letter calibration target PDF into Word, changed the page format to A4 and re-saved the PDF. I have attached it to this message. Could you print it on A4 paper and see whether it provides you with better results, please?

print-target-fixed-width-A4.pdf

I printed this file on A4 size paper. I found 1 mm difference in width (50 mm) and 2 mm at height (100 mm)

@MartyG-RealSense
Copy link
Collaborator

It sounds like an improvement on the 3-4 mm difference that you had at the beginning of this case, @ravijo

@ravijo
Copy link
Author

ravijo commented Dec 20, 2021

I printed this file on A4 size paper. I found 1 mm difference in width (50 mm) and 2 mm at height (100 mm)

Sorry, this is slightly wrong. The error in height is more than I said before. Please see the attached picture below:

Dimensions

The above picture is a print of print-target-fixed-width-A4.pdf

By the way, are you sure that you get the exact dimensions when printing on a US Letter page? Can you please print one and measure the dimensions? If the original PDF doesn't have correct dimensions, then A4 paper will accommodate those errors too.

@MartyG-RealSense
Copy link
Collaborator

I checked the original US Letter calibration PDF in my PDF reader. It stated that the dimensions of the document were correctly 8.5x11"

I tried a different approach. I copied the calibration image from the original US Letter PDF in Word, reformatted the page size in Word to A4 and then pasted in the original US Letter document's image. This should mean that the original image is used within the confines of the changed page margins.

print-target-fixed-width (1).pdf

If that file does not result in improved accuracy then I would recommend moving on to one of the other calibration methods, such as Android screen image or On-Chip.

@ravijo
Copy link
Author

ravijo commented Dec 22, 2021

@MartyG-RealSense

I was able to print it perfectly. I used an A3 size page to print US Letter paper.

print-target-fixed-width (1).pdf

Please wait for some time, I can check the new file provided by you.

@MartyG-RealSense
Copy link
Collaborator

Thanks very much, @ravijo - I look forward to your next report. Good luck!

@MartyG-RealSense
Copy link
Collaborator

Hi @ravijo Do you have an update that you can provide about this case, please? Thanks!

@ravijo
Copy link
Author

ravijo commented Jan 2, 2022

@MartyG-RealSense

Please give me a couple of days as it is new year vacation currently.

@MartyG-RealSense
Copy link
Collaborator

Okay, that's no problem at all, @ravijo - thanks!

@ravijo
Copy link
Author

ravijo commented Jan 4, 2022

@MartyG-RealSense

I tried a different approach. I copied the calibration image from the original US Letter PDF in Word, reformatted the page size in Word to A4 and then pasted in the original US Letter document's image. This should mean that the original image is used within the confines of the changed page margins.

print-target-fixed-width (1).pdf

Thank you for waiting. I printed the above PDF in A4 size paper and unfortunately, it doesn't look good to me. Please see attached picture below.

Photo of print-target-fixed-width

@MartyG-RealSense
Copy link
Collaborator

MartyG-RealSense commented Jan 4, 2022

Instead of trying to adapt the original US Letter PDF to A4, an alternative approach would be to buy a pack of US Letter paper and adjust the border sliders in the printer tray to fit the US Letter size, then print off the US Letter PDF. You could locate retailer sources in your country to purchase such paper by googling for buy us letter paper in <name of country>. For example, buy us letter paper in uk or buy us letter paper in australia

@ravijo
Copy link
Author

ravijo commented Jan 5, 2022

@MartyG-RealSense

Thank you very much. As I said I could print it.

I was able to print it perfectly. I used an A3 size page to print US Letter paper.

At this point in time, may I request you to create a feature request (internally for the dev team), so that we can have the calibration target in A4 size too? It is not urgent but defiantly will help!

@MartyG-RealSense
Copy link
Collaborator

MartyG-RealSense commented Jan 5, 2022

As your request to create an A4 version of the calibration target PDF document is of a documentation nature rather than engineering or SDK programming, I will place a Documentation tag on this case to highlight it to the RealSense team for future attention. This case should now be kept open, but you do not need to take further action in regard to the request. Thanks!

@Vishnu-AP
Copy link

Vishnu-AP commented Feb 20, 2025

Hi There @MartyG-RealSense, Any update on the A4 sized pdf document with the target? Or is there any updated version of the app that I can use? I am running Android 15

@MartyG-RealSense
Copy link
Collaborator

Hi @Vishnu-AP An A4 version of the calibration target was not created. I made another attempt today at creating an A4 printable PDF of the target myself, which can be downloaded from the link below.

A4-Calibration.pdf

@Vishnu-AP
Copy link

Vishnu-AP commented Feb 20, 2025

I tried with this A4 version and it seems to work for me, I have about 1mm of error only in the square boxes below which should be good. I have a few questions with respect to the calibration though, it would be great if you could help me out

  1. I used the sheet printed to calibrate using the dynamic calibration tool and it said the calibration results are now saved to the camera, so I went on to check with the depth quality tool and these are the values that I am getting:
    Z accuracy: 0.04%
    Plane Fit RMS Error: 0.16%
    Fill Rate: 100%
    Subpixel RMS error: 0.03 Pixels
    The angle mentioned is 3.20 degrees
    Are these values good?
  2. If these values are good, how do I get the intrinsic values now? will they be updated to the realsense-viewer application?

@MartyG-RealSense
Copy link
Collaborator

Yes, those are good values.

You can list the intrinsic values for each stream format using the RealSense SDK's rs-enumerate-devices tool by launching it in calibration information mode with the command rs-enumerate-devices -c

@Vishnu-AP
Copy link

Vishnu-AP commented Feb 21, 2025

Thanks for the info!
I tried with rs-enumerate-devices -c

Everything looks good except for this
21/02 10:25:47,367 ERROR [139314910298688] (rs.cpp:237) [rs2_get_video_stream_intrinsics( from:0x578c923caba0, intr:[ -1237344144x32766 p[0 0] f[0 0] UNKNOWN [4.59149e-41 -2.85547e-06 4.59149e-41 0 0] ] ) Not Implemented] No intrinsics are available for this stream profile!
21/02 10:25:47,367 ERROR [139314910298688] (rs.cpp:237) [rs2_get_video_stream_intrinsics( from:0x578c923ba7f0, intr:[ -1237344144x32766 p[0 0] f[0 0] UNKNOWN [4.59149e-41 -2.85547e-06 4.59149e-41 0 0] ] ) Not Implemented] No intrinsics are available for this stream profile!
21/02 10:25:47,368 ERROR [139314910298688] (rs.cpp:237) [rs2_get_video_stream_intrinsics( from:0x578c923c8300, intr:[ 640x480 p[320.459 240.305] f[389.323 389.323] Brown Conrady [0 0 0 0 0] ] ) Not Implemented] No intrinsics are available for this stream profile!
21/02 10:25:47,368 ERROR [139314910298688] (rs.cpp:237) [rs2_get_video_stream_intrinsics( from:0x578c923c4030, intr:[ 640x480 p[320.459 240.305] f[389.323 389.323] Brown Conrady [0 0 0 0 0] ] ) Not Implemented] No intrinsics are available for this stream profile!
21/02 10:25:47,368 ERROR [139314910298688] (rs.cpp:237) [rs2_get_video_stream_intrinsics( from:0x578c923caca0, intr:[ 424x240 p[212.254 120.179] f[214.939 214.939] Brown Conrady [0 0 0 0 0] ] ) Not Implemented] No intrinsics are available for this stream profile!
21/02 10:25:47,368 ERROR [139314910298688] (rs.cpp:237) [rs2_get_video_stream_intrinsics( from:0x578c923c22b0, intr:[ 424x240 p[212.254 120.179] f[214.939 214.939] Brown Conrady [0 0 0 0 0] ] ) Not Implemented] No intrinsics are available for this stream profile!
21/02 10:25:47,368 ERROR [139314910298688] (rs.cpp:237) [rs2_get_video_stream_intrinsics( from:0x578c923c83b0, intr:[ 640x480 p[320.459 240.305] f[389.323 389.323] Brown Conrady [0 0 0 0 0] ] ) Not Implemented] No intrinsics are available for this stream profile!
21/02 10:25:47,368 ERROR [139314910298688] (rs.cpp:237) [rs2_get_video_stream_intrinsics( from:0x578c923c4180, intr:[ 640x480 p[320.459 240.305] f[389.323 389.323] Brown Conrady [0 0 0 0 0] ] ) Not Implemented] No intrinsics are available for this stream profile!
Intrinsic Parameters:

After which I see the distortion coeficients all as 0.
I am not sure if this is anything to worry about, since this topic might be out of scope of the above mentioned issue, I would be happy to raise a new one if required

@MartyG-RealSense
Copy link
Collaborator

@Vishnu-AP On certain RealSense 400 Series camera models (D415, D435 and D435i) it is normal for all distortion coefficients to be zero.

Regarding the intrinsics errors, I would recommend resetting your camera to its factory-new default calibration in the RealSense Viewer tool using the instructions at #10182 (comment) in case the errors are being caused by a corrupted 'calibration table' inside the camera hardware (a table that the calibration values are stored in). Performing the factory-reset procedure creates a new calibration table in place of a corrupted one.

@Vishnu-AP
Copy link

Vishnu-AP commented Feb 21, 2025

Okay I will try that, but wouldnt that mean I will lose my new calibration data?

I believe there must be a confusion here @MartyG-RealSense, I see these errors and then the intrinsics values are printed, I have pasted a concatenated output below. I do get all the required intrinsics values
21/02 17:14:58,369 ERROR [281473464101472] (rs.cpp:237) [rs2_get_video_stream_intrinsics( from:0xaaaaef14bf80, intr:[ -1072098784x65535 p[2.10195e-44 0] f[7.31541e+34 2.74886e+26] UNKNOWN [9.31105e-39 -3.42606e-16 9.18341e-41 0 0] ] ) Not Implemented] No intrinsics are available for this stream profile!
21/02 17:14:58,369 ERROR [281473464101472] (rs.cpp:237) [rs2_get_video_stream_intrinsics( from:0xaaaaef17f6d0, intr:[ -1072098784x65535 p[2.10195e-44 0] f[7.31541e+34 2.74886e+26] UNKNOWN [9.31105e-39 -3.42606e-16 9.18341e-41 0 0] ] ) Not Implemented] No intrinsics are available for this stream profile!
21/02 17:14:58,450 ERROR [281473464101472] (rs.cpp:237) [rs2_get_video_stream_intrinsics( from:0xaaaaef18b3a0, intr:[ 640x480 p[320.459 240.305] f[389.323 389.323] Brown Conrady [0 0 0 0 0] ] ) Not Implemented] No intrinsics are available for this stream profile!
21/02 17:14:58,450 ERROR [281473464101472] (rs.cpp:237) [rs2_get_video_stream_intrinsics( from:0xaaaaef190e20, intr:[ 640x480 p[320.459 240.305] f[389.323 389.323] Brown Conrady [0 0 0 0 0] ] ) Not Implemented] No intrinsics are available for this stream profile!
21/02 17:14:58,450 ERROR [281473464101472] (rs.cpp:237) [rs2_get_video_stream_intrinsics( from:0xaaaaef14c080, intr:[ 424x240 p[212.254 120.179] f[214.939 214.939] Brown Conrady [0 0 0 0 0] ] ) Not Implemented] No intrinsics are available for this stream profile!
21/02 17:14:58,450 ERROR [281473464101472] (rs.cpp:237) [rs2_get_video_stream_intrinsics( from:0xaaaaef17f010, intr:[ 424x240 p[212.254 120.179] f[214.939 214.939] Brown Conrady [0 0 0 0 0] ] ) Not Implemented] No intrinsics are available for this stream profile!
21/02 17:14:58,451 ERROR [281473464101472] (rs.cpp:237) [rs2_get_video_stream_intrinsics( from:0xaaaaef18b450, intr:[ 640x480 p[320.459 240.305] f[389.323 389.323] Brown Conrady [0 0 0 0 0] ] ) Not Implemented] No intrinsics are available for this stream profile!
21/02 17:14:58,451 ERROR [281473464101472] (rs.cpp:237) [rs2_get_video_stream_intrinsics( from:0xaaaaef190f70, intr:[ 640x480 p[320.459 240.305] f[389.323 389.323] Brown Conrady [0 0 0 0 0] ] ) Not Implemented] No intrinsics are available for this stream profile!
Intrinsic Parameters:

Intrinsic of "Depth" / 256x144 / {Z16}
Width: 256
Height: 144
PPX: 128.765686035156
PPY: 72.5411987304688
Fx: 648.870971679688
Fy: 648.870971679688
Distortion: Brown Conrady
Coeffs: 0 0 0 0 0
FOV (deg): 22.32 x 12.66

Intrinsic of "Depth" / 424x240 / {Z16}
Width: 424
Height: 240
PPX: 212.253631591797
PPY: 120.179275512695
Fx: 214.938507080078
Fy: 214.938507080078
Distortion: Brown Conrady
Coeffs: 0 0 0 0 0
FOV (deg): 89.21 x 58.35

Intrinsic of "Depth" / 480x270 / {Z16}
Width: 480
Height: 270
PPX: 240.287139892578
PPY: 135.202941894531
Fx: 243.326614379883
Fy: 243.326614379883
Distortion: Brown Conrady
Coeffs: 0 0 0 0 0
FOV (deg): 89.21 x 58.04

Intrinsic of "Depth" / 640x360 / {Z16}
Width: 640
Height: 360
PPX: 320.382843017578

@MartyG-RealSense
Copy link
Collaborator

The sets of intrinsic values for the different resolutions that are printed after the error messages look fine, so if it is providing the information that you need then you can ignore the errors.

Yes, resetting the calibration to factory-new would overwrite your camera's current calibration.

@Vishnu-AP
Copy link

Vishnu-AP commented Feb 21, 2025

Okay got it! sorry for the confusion. I also wanted to know if there are any other distortion models that an be printed, currently it is the Brown Conrady model, can I get something like the Rad Tan model? Or will I have to calibrate it using other methods?

@MartyG-RealSense
Copy link
Collaborator

MartyG-RealSense commented Feb 21, 2025

The distortion model is applied inside the camera hardware before the data is sent through the USB cable to the computer, so the model cannot be changed.

If the RealSense SDK's software-device 'virtual camera' interface was used - which allows the definition by users of a simulated camera - then you could define your own custom distortion.

https://github.com/IntelRealSense/librealsense/tree/e1688cc318457f7dd57abcdbedd3398062db3009/examples/software-device

@Vishnu-AP
Copy link

Okay great! This pretty much sorts my issue
Thanks for the help @MartyG-RealSense !

@MartyG-RealSense
Copy link
Collaborator

You are very welcome, @Vishnu-AP - I'm pleased that I could help!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants