I have a half sphere image which contains some information inside. I'm trying to use Image rectification to transform the concave shape into flat image with out losing any information. Assume we have camera parameters (focal length and lens distortions factors). The image below shows an example. I'm trying to remove this depth and make half sphere looks flat surface.

enter image description here

I've been trying to solve a problem. I'm surprised I haven't been able to find anything really useful on the net. Where should I start to solve this problem. You can assume that we can use one image to solve this problem or two images from different angle of view.


With a single image, it is not possible to get depth (at least accurately), even if your camera is calibrated. If you have a calibrated pair of cameras, after rectification, the disparity would provide you with depth information. I feel that the depth computation would be extremely hard in this case, given the fact that intensity is almost the same at many parts of the bowl, so stereo algorithms may not work well. Assuming you know the camera parameters and somehow manage to get the depth, all you need to compute is the depth of 3 points on the table, which would lie on a plane. Since you would know the exact 3D position for each pixel on the bowl, all you need to do is compute the intersection of the ray which lies on the bowl with the plane, and you will get a projection. It may be a many to one mapping as it is a projection. A more sophisticated approach (to get a one to one map) is, since all points on the bowl lie on a manifold, i.e the inherent degree of freedom is 2, you could compute a 3d -> 2d transformation (isometric embedding, commonly used for the generation of maps, the globe is 3d while a map is 2d) of all points in the 3D space which lie on the manifold (surface of the bowl) using multidimensional scaling.

Your Answer

