Attached to this application is a CD (i.e. a compact disk) that includes text files (that is, an octal dump) of the programs listed below plus several text files.
a) A calibration program used to determine the parameters needed to seam images.
b) A seaming program which will seam images using the parameters determined by the calibration program.
c) Text files with a copyright notice, operating instructions and an example of camera calibration parameters.
The present invention relates to cameras and more particularly to a system and method for determining the characteristics of cameras.
Panoramic images can be created by seaming together multiple single view images. Multi lens cameras are available which can simultaneously capture multiple single view images. The images captured by such a camera can be subsequently seamed into a panoramic image. Patent application Ser. No. 09/602,290 filed Jun. 23, 2000 describes an interactive seamer for creating panoramic images. Patent application Ser. No. 09/338,790 filed Jun. 23, 1999 describes a multi-lens cameras. The disclosure in the referenced patent application is hereby incorporated herein by reference.
It is practically impossible to obtain a set of single view images that fit together perfectly into a panorama. Parameters such as the heading, pitch, bank, offset, brightness and contrast of each image must be adjusted in order to make the images fit together into a panorama. One of the reasons that the parameters of the individual images must be adjusted is that the individual camera elements in the cameras that recorded the images have their own peculiarities and idiosyncrasies. In general each individual camera and each individual camera lens has parameters and idiosyncrasies that are peculiar and particular to that lens alone
If one determines the adjustments that will make to one set of images (recorded by a particular camera) fit together to form a panorama, these adjustments will in general provide an acceptable modification for a different set of images from the same camera so that the second set of images will fit together into a panorama.
The present invention provides a system and method for determining the adjustments that must be made to the individual images recorded by a multi-lens camera so that the images will fit together into a panorama. With the present invention the camera is placed in the center of a structure, the edges of which have at least one row on indicia. Each camera records an image which includes the indicia along each edge that will be seamed with an edge of another image in order to form a panorama. Each edge of the structure which is along a seam that will be seamed with an edge of another image is recorded by two lenses on the camera. The amount of adjustment required to make the indicia in the two images fit together is then determined. The values of these adjustments are recorded along with an identification of the camera which recorded the images. Subsequent sets of images recorded by this same camera can then be seamed using the same adjustments.
Another feature of the present invention includes providing two rows of indicia along the edges of the cube. The two rows of indicia are spaced apart by an amount equal to the distance between the lenses on the camera. This eliminates the need to correct for parallax and eliminates the need to position the camera at the exact center of the cube. Another feature of this invention is that the shape of the indicia is distorted so that when the indicia are recorded through a fisheye lens, the dots appear un-distored, thereby facilitating exact alignment of the images.
An overall flow diagram of the process performed by a preferred embodiment of the invention is shown in
The camera is a multi-lens camera with one lens pointing toward each side of the cube 200. A detailed description of camera 213 is given in co-pending application Ser. No. 09/338,790 filed Jun. 23, 1999 entitled “System for Digitally Capturing and Recording Panoramic Movies” the specification of which is hereby incorporated herein by reference. The camera 213 has six lenses and six images, one of each side of cube 200, are simultaneously recorded. Two lenses of camera 213 capture an image of each edge of the cube 200.
After the images have been recorded, the operator manually indicates to the program (as indicated by block 102) which dots in the various images correspond to each other.
During this step, the two images which show the same edge of the cube are displayed adjacent to each other as shown in
Next as indicated by block 104, the operator finds the settings of various parameters needed in order to align the images so that they can be seamed into a panorama without artifacts. The correction factors found are recorded along with an identification of the camera that created recorded the images. In the first preferred embodiment, the parameters of the camera that are determined for each of the six camera lenses are:
a) camera aiming which includes heading pitch and bank,
b) field of view,
c) offset of the camera lens to the CCD,
d) amount of pin cushion distortion in the camera lens,
e) amount of pitch, roll, heading and offset.
In the following discussion, when reference is made to camera parameters, it is the above parameters that are being discussed. It is however, noted that the invention could be extended to other camera parameters (or some could be eliminated) as necessary for particular applications.
A camera that went through the above process can then be used to record some other set of images and the parameters determined as described above can be used to seam this new set of images. That is, the final step 105 shown in
When activated, camera 213 records an image of each side of the cube 200. Each image so recorded includes the four panels surrounding the sides of the cube which is recorded. An example of such an image is shown in
The distance between the two rows of dots on each panel matches the distance between the lenses on camera 213. This is done in order to eliminate the need for any adjustment due to parallax. The reason for this is illustrated in
An example of the main elements of such a table are given in Table One below.
In the above table, each row pertains to a particular dot. The columns in the table give the following information:
When as illustrated in
It is noted that each images does not need to contain a complete image of both rows of dots. For example, the bottom of image 331 shown in
Next the program seams the images into a panorama using a set of default parameters. When the program is initiated it brings up the window shown in
Provision is also made for other parameters that can be used if desired. For example the amount of Fisheye adjustment on pin cushion adjustment can be set.
The images as seamed using the default parameters are shown to the operator as shown in
First as indicated by block 601, the six bitmaps (i.e. the six images) recorded by a particular camera 213 are loaded into the program. These images show the edges of calibration cube 200. Each edge appears in two of the images. Next as indicated by block 602 a conventional shape recognition routine is used to identify the location of the center of the dots at the periphery of each image.
The operator next identifies corresponding dots to the program as indicated by block 603. The operator can for example visually determine that dots 301 and 302 shown in
Next as indicated by block 605, the alignment points are mapped onto a sphere of unit radius. The mapping is done using a default set of parameters for camera direction, field of view, lens distortion, etc. The heading and pitch of each alignment point on the sphere is determined. Zero pitch and zero heading is taken as perpendicular to the center of each image.
The next series of steps 606A to 606D is at the heart of the calibration process. A least squares fitting process is used to change the various parameters so that the corresponding dots in the images coincide with each other. First as indicated by block 606A a vector is established going between each pair of corresponding points. For example a vector going between 301 and 302 is
Next as indicated by block 606B, the amount of change in each vector which results from a small change in each lens parameter is determined. That is, each of the lens parameters such as heading, field of view etc. is changed by a small increment and the resulting change in the length of the vectors is determined. The lens parameters are changed one at a time and the resulting change in each vector is determined.
A conventional least squares fit for the error vectors is calculated to determine the changes in the camera parameters that reduce the error vectors to the smallest values. This is indicated by block 606C. Next the changes are applied to the parameters as indicated by block 606D. If the effect of changes in camera parameters on the error vectors was linear, it would only be necessary to go through steps 606A to 606D one time. However, the effect on the error vectors of changing the camera parameters is not linear, hence, steps 606A to 606D re executed three times as indicated by block 607. Each time steps 606A to 606D are executed the result converges closer to the optimum values. Naturally it will be understood by those skilled in the art that the selection of three times is arbitrary and based on experience and that a number is selected that produces a result of sufficient accuracy.
After the process in blocks 606A to 606D has been repeated three times, the resulting panorama is displayed to the operator to insure that the process has been successful. If the panorama displayed is not satisfactory the operations are repeated. If the resulting panorama is acceptable, the operator saves the values of the parameters which generated the satisfactory panorama.
It has been found that if the program is given the freedom to change all the camera parameters, the result can be a relatively large change in the field of view from one particular camera to another particular camera. While this does get the image into alignment, it adds a certain amount of size distortion to the image. This potential problem can be avoided by giving the operator the ability to lockout (not use) some of the camera offsets during the least squares fit operation. Alternate embodiments provide a mechanism whereby the program automatically determines which offsets to lock during the least squares fit operation.
Another feature of this invention is that the dots on the edges of the cube 200 are not in fact round. It is known that when a circle is viewed through a fisheye lens the image of the circle will not be round. The distortion produced by a fisheye lens can be understood by examining
In an alternate embodiment of the invention, a program is provided which automatically identifies the corresponding dots in adjacent images. this eliminates the need for the operator to identify corresponding dots to the program operator.
It is noted that the calibration structure used by the preferred embodiment is in the shape of a cube. The reason for this is that the camera 213 is in the shape of a cube. That is, the lenses on camera 213 are positioned on the sides of a cube. If the lenses where positioned differently, the structure would have a different shape. The term “edge which will be seamed” is used to mean an edge of an image which will be seamed with the edge of another image to create a panorama. The structure must have a shape so that (a) each edge which will be seamed is captured by two lenses, and (b) the image captured by each camera includes at least one row of dots along each edge which will be seamed. In the preferred embodiment, each edge panel 201 to 212 is captured by two lenses, and the image captured by each lens contains at least one row of dots along each edge. If the lenses of a camera are positioned in a configuration which differs from the positions of the lenses on camera 213, the calibration structure would have a different shape. The important point is that the calibration structure would have a shape such that (a) each edge which will be seamed is captured by two lenses, and (b) the image captured by each camera includes at least one row of dots along each edge which will be seamed. Many alternatives could be found which meet the above criteria. As a simple example, if the camera was a cube with two lenses on the top side of the cube, each of which captured 45 degrees, the calibration structure would be a cube with a panel at the middle of the top of the cube.
It is noted that in the preferred embodiment the indicia along the edges of the cube are in the shape of dots which appear as round areas on the captured images (after they have been distorted by a fisheye lens). Alternatively, indicia with other shapes could be used. For example, the indicia on the panels 201 to 212 could be in the shape of bars. These bars could be pre-distorted so that the appear rectangular after being distorted by a fisheye lens. The pre-distortion is only needed to make the recognition logic in the program simpler; however, it is not required for the operation of the invention. A wide variety of indicia shapes could be used as alternatives to the shape used in the preferred embodiment.
The identification of the camera that recorded a particular set of images can be manually recorded and then this identification can be applied to a set of camera parameters determined as described above. In an alternate embodiment described with reference to
In this embodiment, the calibration program reads this camera identification from the file header of the file that contains the images. The calibration program then records the camera identification along with the calibration parameters for that particular camera. The result is a table showing camera identification numbers and corresponding calibration parameters. When a set of images is read by the seaming program, it automatically reads the camera identification from the file header of the file that contains the images. The process is shown in
As indicated by block 765, a table is produced showing camera calibration parameters and camera identification. At a later time another set of images is recorded with this same camera as indicated by block 766. The camera identification is recorded along with the images. Finally, as indicated by block 767, when the images are sent to a seaming program, the camera identification is reads the camera identification along with the image data. The seaming program interrogates the table to find the correct parameters to use to seams the images using the appropriate parameters.
This application includes an appendix submitted on a CD (i.e. a compact disk). The CD includes the text files (i.e. octal dumps) of executable programs and other text files as listed below:
a) A calibration program used to determine the parameters needed to seam images.
b) A seaming program which will seam images using the parameters determined by the calibration program.
c) Text files with a copyright notice, operating instructions and an example of camera calibration parameters.
While the invention has been shown and described with respect to preferred embodiments thereof, it will be understood by those skilled in the art that various changes in form and detail can be made without departing from the spirit and scope of the invention. Many different embodiments of the applicant's invention are possible and the invention is not limited to only the embodiment described herein. Applicant's invention is limed only by the scope of the appended claims and equivalents thereof.
Number | Name | Date | Kind |
---|---|---|---|
3909121 | de Mesquita Cardoso | Sep 1975 | A |
4807158 | Blanton et al. | Feb 1989 | A |
4853764 | Sutter | Aug 1989 | A |
5023725 | McCutchen | Jun 1991 | A |
5130794 | Ritchey | Jul 1992 | A |
5235198 | Stevens et al. | Aug 1993 | A |
5329616 | Silverbrook | Jul 1994 | A |
5355450 | Garmon et al. | Oct 1994 | A |
5495576 | Ritchey | Feb 1996 | A |
5541773 | Kamo et al. | Jul 1996 | A |
5563649 | Gould et al. | Oct 1996 | A |
5619255 | Booth | Apr 1997 | A |
5648813 | Tanigawa et al. | Jul 1997 | A |
5650814 | Florent | Jul 1997 | A |
5657073 | Henley | Aug 1997 | A |
5677981 | Kato et al. | Oct 1997 | A |
5684937 | Oxaal | Nov 1997 | A |
5703604 | McCutchen | Dec 1997 | A |
5708469 | Herzberg | Jan 1998 | A |
5729471 | Jain et al. | Mar 1998 | A |
5748121 | Romriell | May 1998 | A |
5774569 | Waldenmaier | Jun 1998 | A |
5852673 | Young | Dec 1998 | A |
5872575 | Segal | Feb 1999 | A |
5886745 | Muraji et al. | Mar 1999 | A |
5903782 | Oxaal | May 1999 | A |
5933137 | Anderson | Aug 1999 | A |
5936630 | Oxaal | Aug 1999 | A |
5982951 | Katayama et al. | Nov 1999 | A |
5990934 | Nalwa | Nov 1999 | A |
6002430 | McCall et al. | Dec 1999 | A |
6043837 | Driscoll et al. | Mar 2000 | A |
6058397 | Barrus et al. | May 2000 | A |
6072496 | Guenter et al. | Jun 2000 | A |
6101534 | Rothschild | Aug 2000 | A |
6118454 | Oxaal | Sep 2000 | A |
6118474 | Nayar | Sep 2000 | A |
6141034 | McCutchen | Oct 2000 | A |
6157385 | Oxaal | Dec 2000 | A |
6195204 | Nalwa | Feb 2001 | B1 |
6215519 | Nayar et al. | Apr 2001 | B1 |
6226035 | Korein et al. | May 2001 | B1 |
6237647 | Pong et al. | May 2001 | B1 |
6243099 | Oxaal | Jun 2001 | B1 |
6252603 | Oxaal | Jun 2001 | B1 |
6271752 | Vaios | Aug 2001 | B1 |
6271853 | Oxaal | Aug 2001 | B1 |
6323858 | Gilbert et al. | Nov 2001 | B1 |
6323862 | Oxaal | Nov 2001 | B1 |
6337683 | Gilbert et al. | Jan 2002 | B1 |
6346950 | Jouppi | Feb 2002 | B1 |
6359617 | Xiong | Mar 2002 | B1 |
6456323 | Mancuso et al. | Sep 2002 | B1 |
6549681 | Takiguchi et al. | Apr 2003 | B1 |
6693649 | Lipscomb et al. | Feb 2004 | B1 |