Stereo Calibration from images file
Hi
I have a set of images of a checkerboard pattern from a camera whose calibration info I would like to find out. I have a ROS driver for my Point Grey Chameleon3 Camerars and can publish rostopic list like
/camera/left/camera_info
/camera/left/image_raw
/camera/left/image_raw/compressed
/camera/left/image_raw/compressed/parameter_descriptions
/camera/left/image_raw/compressed/parameter_updates
/camera/left/image_raw/compressedDepth
/camera/left/image_raw/compressedDepth/parameter_descriptions
/camera/left/image_raw/compressedDepth/parameter_updates
/camera/left/image_raw/theora
/camera/left/image_raw/theora/parameter_descriptions
/camera/left/image_raw/theora/parameter_updates
/camera/parameter_descriptions
/camera/parameter_updates
/camera/right/camera_info
/camera/right/image_raw
/camera/right/image_raw/compressed
/camera/right/image_raw/compressed/parameter_descriptions
/camera/right/image_raw/compressed/parameter_updates
/camera/right/image_raw/compressedDepth
/camera/right/image_raw/compressedDepth/parameter_descriptions
/camera/right/image_raw/compressedDepth/parameter_updates
/camera/right/image_raw/theora
/camera/right/image_raw/theora/parameter_descriptions
/camera/right/image_raw/theora/parameter_updates
/diagnostics
Unfortunately I can not find instructions on how to feed images to the Camera calibration tool instead of the camera itself. Is there any way to do this using the ROS package? So far my understanding is, firstly to rectify the images coming from my camera. So I need to rectify the images that I saved and wonna use later for the Calibration. Is that right? I find this launch file that need to modify
<launch>
<arg name="video_device" default="/dev/video0" />
<arg name="image_width" default="640" />
<arg name="image_height" default="480" />
<arg name="image_topic_name" default="/usb_cam/image_raw" />
<arg name="camera_info_topic_name" default="/usb_cam/camera_info" />
<node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
<param name="video_device" value="$(arg video_device)" />
<param name="image_width" value="$(arg image_width)" />
<param name="image_height" value="$(arg image_height)"/>
<param name="pixel_format" value="mjpeg" />
<param name="io_method" value="mmap"/>
<!-- update these line accroding to your setting, here are some examples:-->
<!-- <param name="camera_info_url" value="package://your_cameras/info/camera.yaml"/> -->
<!-- <param name="camera_info_url" value="file:///home/behnam/.ros/camera_info/head_camera.yaml"/> -->
<param name="camera_info_url" value="file://${ROS_HOME}/camera_info/head_camera.yaml"/>
<remap from="/usb_cam/camera_info" to="$(arg camera_info_topic_name)"/>
<remap from="/usb_cam/image_raw" to="$(arg image_topic_name)"/>
</node>
</launch>
Then run this image proc.launch file
<arg name="name_space" default="usb_cam" />
<!-- this line is for: ROS_NAMESPACE=usb_cam rosrun image_proc image_proc -->
<node name="image_proc" pkg="image_proc" type="image_proc" ns="$(arg name_space)"/>
<!-- this line is for: rosrun image_view image_view image:=usb_cam/image_rect_color -->
<node name="image_rect_color" pkg="image_view" type="image_view" >
<remap from="image" to="$(arg name_space)/image_rect_color" />
</node>
<node name="image_raw" pkg="image_view" type="image_view" >
<remap from="image" to="$(arg name_space)/image_raw" />
</node>
</launch>
Is that correcet sequence and if the case what after that?Alternatively, are there any other tools I could use? Any help? Thanks
Asked by Astronaut on 2018-08-08 00:26:59 UTC
Answers
Hi,
if I got your question correctly then I can tell you what I usually do for calibrating a camera:
- You can use kalibr to obtain a yaml file containing the calibration of your camera. See its readme page and the wiki. It's better if you use an aprilgrid if you have one, instead of the check-board.
- You can use the yaml file obtained from kalibr with one node of the repo image_undistort. For example, in case of just one camera you can use image_undistort_node to rectify images and publish the camera_info topic. Have a look at the readme file. Moreover in the 'launch' folder you can fine some examples.
I hope this helps.
Regards,
Marco.
Asked by Femer on 2018-08-08 01:45:53 UTC
Comments
I would like to use saved camera images instead to feed directly the calibration tool with real time camera. Also i have another big issue that I need to calibrate camera by long distances, means 30-40 m. Is that possible and in which way?
Asked by Astronaut on 2018-08-08 03:33:17 UTC
Comments