Perspective correction for panoramic digital camera with remote processing
AssigneeSTMicroelectronics S.r.l.
InventorsMassimo Mancuso, Emmanuel Lusinchi, Patrick Cheng-san Teo
Life of this patent
Estimating the term…
Abstract
A method for converting a rectilinear image and a focal length into a cylindrical image parameterized by a height of the cylinder and an angular distance in a single buffer on a remote processing device. The method, on the remote processing device, comprising joining two or more images together to form a panoramic image with corrected perspective. The rectilinear transformation is “in-place” and requires only one buffer. Color correction and motion estimation is also carried out on the remote device. In an alternate embodiment, a computer readable medium corresponding to the above method is described.
Claims19
A method for converting a rectilinear image and a focal length into a cylindrical image parameterized by a height of the cylinder and an angular distance in a single buffer on a remote processing device, the method comprising the steps of:
- collecting a source rectilinear image in a single buffer from a camera;
- dividing the single buffer with a first end and a second end, into a series of successive scan lines of predetermined width, the single buffer containing the source rectilinear image;
- grouping the series of scans lines, into two groups, a first group of adjacent scan lines having a first boundary at the first end of the buffer and a second boundary at a predetermined position of an angular distance, and a second group of scan lines defined by the remainder of the scan lines within the single buffer not within the first group,
- transforming each scan line divided into the first and second group from rectilinear coordinates to cylindrical coordinates comprising the successive sub-steps of:
- (a) reading each source scan;
- (a.1) wherein each successive source scan line in the first group is read from the buffer at a position starting from the first end and continuing to the predetermined angular position;
- (a.2) wherein each source scan line in the second group is read from the buffer at a position starting from the second end and continuing to the predetermined angular position;
- (b) transforming each scan line read from rectilinear coordinates to cylindrical coordinates;
- and
- (c) writing each scan line transformed back into the buffer at the position in the buffer from where the source scan line was read;
- and
- (d) repeating the sub-steps (a) through (e) above until all the scan lines have been transformed.
A method for converting a rectilinear image parameterized by an optical center (x_ctr, y_ctr) and a focal length (f) into a cylindrical image parameterized by a height (h) and an angular distance (_) in a single buffer on a remote processing device, the method comprising the steps of:
- collecting a source rectilinear image in a single butter from a camera;
- dividing the single buffer with a first end and a second end, into a series of successive scan lines of predetermined width, the single buffer containing the source rectilinear image;
- grouping the series of scans lines, into two groups, a first group of adjacent scan lines having a first boundary at the first end of the buffer and a second boundary at a predetermined position of an angular distance, and a second group of scan lines defined by the remainder of the scan lines within the single buffer not within the first group;
- reading a source scan line at a location (col_src) on the rectilinear source image from the single buffer so that col_src=x_src+x_ctr;
- transforming the source rectilinear scan line (x_src, y_src) into a destination cylindrical scan line (x_dst, y_dst) based on:
- a location of each vertical scanline as defined by the equation:
- col—src=col—dst+(col—src−col—dst);
- where
- col_src=f*tan _+x_ctr;
- and
- col_dst is a destination column location in the buffer;
- a scale factor for each source scan line (y_src) defined by the equation:
- y—src=[(f/sqrt(tan2—+1))]/[(min(f/sqrt(tan2_min+1), f/sqrt(tan2_max+1)]* y—dst;
- where
- _min=a tan2(−x_src, f);
- _max=a tan2(width-x_src, f);
- width is the width of the source rectilinear image;
- and
- writing the cylindrical scan line at a location (col_dst) in the buffer.
A computer readable medium containing programming instructions for converting a rectilinear image and a focal length into a cylindrical image parameterized by a height of the cylinder and an angular distance in a single buffer on a remote processing device, the programming instructions comprising:
- collecting a source rectilinear image in a single buffer from a camera;
- dividing the single buffer with a first end and a second end, into a series of successive scan lines of predetermined width, the single buffer containing the source rectilinear image;
- grouping the series of scans lines, into two groups, a first group of adjacent scan lines having a first boundary at the first end of the buffer and a second boundary at a predetermined position of an angular distance, and a second group of scan lines defined by the remainder of the scan lines within the single buffer not within the first group;
- transforming each scan line divided into the first and second group from rectilinear coordinates to cylindrical coordinates comprising the successive sub-steps of:
- (a) reading each source scan;
- (a.1) wherein each successive source scan line in the first group is read from the buffer at a position starting from the first end and continuing to the predetermined angular position;
- (a.2) wherein each source scan line in the second group is read from the buffer at a position starting from the second end and continuing to the predetermined angular position;
- (b) transforming each scan line read from rectilinear coordinates to cylindrical coordinates;
- and
- (c) writing each scan line transformed back into the buffer at the position in the buffer from where the source scan line was read;
- and
- (d) repeating the sub-steps (a) through (c) above until all the scan lines have been transformed.
Dependencies are inferred from the claim text.