US20140313134A1 - Image processing apparatus and storage medium storing image processing program - Google Patents
Image processing apparatus and storage medium storing image processing program Download PDFInfo
- Publication number
- US20140313134A1 US20140313134A1 US14/314,894 US201414314894A US2014313134A1 US 20140313134 A1 US20140313134 A1 US 20140313134A1 US 201414314894 A US201414314894 A US 201414314894A US 2014313134 A1 US2014313134 A1 US 2014313134A1
- Authority
- US
- United States
- Prior art keywords
- image
- image processing
- distance
- accordance
- display
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/0346—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
-
- A63F13/04—
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/20—Input arrangements for video game devices
- A63F13/21—Input arrangements for video game devices characterised by their sensors, purposes or types
- A63F13/213—Input arrangements for video game devices characterised by their sensors, purposes or types comprising photodetecting means, e.g. cameras, photodiodes or infrared cells
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/0304—Detection arrangements using opto-electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/0304—Detection arrangements using opto-electronic means
- G06F3/0325—Detection arrangements using opto-electronic means using a plurality of light emitters or reflectors or a plurality of detectors forming a reference frame from which to derive the orientation of the object, e.g. by triangulation or on the basis of reference deformation in the picked up image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/37—Details of the operation on graphic patterns
- G09G5/373—Details of the operation on graphic patterns for modifying the size of the graphic pattern
Definitions
- the present invention relates to an image processing apparatus and a storage medium storing an image processing program, and particularly to an image processing apparatus operated by using an input device having image pickup means and a storage medium storing an image processing program.
- position detection systems in which a light source of an infrared light is used as a marker whose image is taken, and the taken image is analyzed to obtain a position aimed at by a user.
- a light source of an infrared light is used as a marker whose image is taken, and the taken image is analyzed to obtain a position aimed at by a user.
- One of such systems is disclosed in, e.g., Japanese Laid-Open Patent Publication No. 11-305935 (hereinafter, referred to as a patent document 1).
- the patent document 1 discloses a game as an embodiment of a position detection system in which a player uses, as a game controller, a gun having an image pickup device mounted thereon, and performs shooting.
- a player uses, as a game controller, a gun having an image pickup device mounted thereon, and performs shooting.
- four light sources each emitting an infrared light are respectively fixed, on four corners of a display screen, as imaging targets of the image pickup device, and a position on the display screen pointed by the gun is detected based on positions of the imaging targets in an image taken by the image pickup device.
- a virtual shooting game is executed by using the position pointed by the gun as a position aimed at by the player.
- the image pickup device is provided with a controllable zoom function, and the zoom function is controlled such that each of the markers in the taken image is always in an appropriate size, thereby detecting the aimed position precisely.
- an object of the present invention is to provide an image processing apparatus and a storage medium storing an image processing program which realize highly flexible new operations performed by using an input device having image pickup means.
- step numbers here, “step” is abbreviated as “S”
- S step numbers
- a first aspect of the present invention is an image processing apparatus ( 3 ) for performing predetermined image processing in accordance with an input operation performed by an input device ( 7 ) including image pickup means ( 74 ) for taking an image of one or a plurality of imaging targets ( 8 ).
- the image processing apparatus comprises target image data obtaining means (S 72 ), image processing means (S 60 , S 62 ) and display control means (S 63 ).
- the target image data obtaining means is means for sequentially obtaining, from one target image of the one imaging target or a plurality of target images of the plurality of imaging targets in the image taken by the image pickup means, target image data (mi, diamL, diamR) indicating a distance between the plurality of target images or a size of the one target image.
- the image processing means is means for performing at least either one of enlargement and reduction of a display image in accordance with a change in the target image data.
- the display control means is means for displaying on a display device ( 2 ) the display image processed by the image processing means.
- the target image data contains, for example, a distance between the plurality of target images in the taken image or a size (such as a diameter or width) of the one target image in the taken image.
- the image processing means includes distance calculation means (S 53 , S 83 ) and enlarging/reducing means.
- the distance calculation means is means for, based on the target image data, sequentially calculating a distance (realD) between the image pickup means and the one or the plurality of the imaging targets.
- the enlarging/reducing means is means for performing at least either one of enlargement and reduction of the display image in accordance with a change in the distance.
- the image processing means performs at least either one of enlargement and reduction of the display image in accordance with the change which occurs, during a predetermined time period, in the distance.
- the input device includes at least one pressable operation key ( 72 ) and outputs at least operation information (Da3) corresponding to a state of the operation key being pressed.
- the image processing apparatus further comprises operation information obtaining means (S 51 , S 81 ) and storage means (S 56 ).
- the operation information obtaining means is means for obtaining the operation information.
- the storage means is means for, when the operation information indicates that the operation key has just started being pressed, storing the distance calculated by the distance calculation means ( 33 ).
- the image processing means includes difference calculation means (S 58 ) for obtaining the change in the distance, which occurs during the predetermined time period which is a time period during which the operation key is pressed, by sequentially calculating a difference (moveD) between the distance (initD) stored in the storage means and the distance (realD) which is calculated, while the operation information indicates that the operation key is currently pressed, by the distance calculation means.
- the image processing means performs at least either one of enlargement and reduction of the display image in accordance with the difference.
- the image processing means enlarges the display image in accordance with an increase in the distance, and reduces the display image in accordance with a decrease in the distance (S>0).
- the image processing means reduces the display image in accordance with an increase in the distance, and increases the display image in accordance with a decrease in the distance (S ⁇ 0).
- the image processing apparatus further comprises designated coordinates calculation means for, based on a position of the one target image or positions of the plurality of target images in the taken image, calculating designated coordinates associated with a display area of the display device.
- the image processing means moves the display image in accordance with a change in the designated coordinates ( FIG. 13A ).
- the image processing apparatus further comprises tilt calculation means for, based on a position of the one target image or positions of the plurality of target images in the taken image, calculating a tilt of the input device.
- the image processing means rotates the display image in accordance with a change in the tilt ( FIG. 13B ).
- the image processing means performs at least either one of enlargement and reduction of the display image by sequentially changing, in accordance with the change in the distance, a position of a virtual camera placed in a virtual space.
- the image processing means performs at least either one of enlargement and reduction of the display image by sequentially changing, in accordance with the change in the distance, a display size of a two-dimensional image.
- the image processing apparatus further comprises velocity calculation means (S 84 ) for, based on the target image data, sequentially calculating a moving velocity (velD) of the input device with respect to the one or the plurality of imaging targets.
- the image processing means performs at least either one of enlargement and reduction of the display image in accordance with the moving velocity.
- a sixteenth aspect of the present invention is a storage medium storing an image processing program executed by a computer ( 30 ) performing image processing in accordance with an input operation performed by an input device including image pickup means for taking an image of one or a plurality of imaging targets.
- the image processing program causes the computer to perform a target image data obtaining step, an image processing step and a display control step.
- the target image data obtaining step is a step of sequentially obtaining, from one target image of the one imaging target or a plurality of target images of the plurality of imaging targets in the image taken by the image pickup means, target image data indicating a distance between the plurality of target images or a size of the one target image.
- the image processing step is a step of performing at least either one of enlargement and reduction of a display image in accordance with a change in the target image data.
- the display control step is a step of displaying on a display device the display image processed at the image processing step.
- the image processing step includes a distance calculation step and an enlarging/reducing step.
- the distance calculation step is a step of, based on the target image data, sequentially calculating a distance between the image pickup means and the one or the plurality of the imaging targets.
- the enlarging/reducing step is a step of performing at least either one of enlargement and reduction of the display image in accordance with a change in the distance.
- the image processing step performs at least either one of enlargement and reduction of the display image in accordance with the change which occurs, during a predetermined time period, in the distance.
- the input device includes at least one pressable operation key and outputs at least operation information corresponding to a state of the operation key being pressed.
- the image processing program further causes the computer to perform an operation information obtaining step and a storage control step.
- the operation information obtaining step is a step of obtaining the operation information.
- the storage control step is a step of, when the operation information indicates that the operation key has just started being pressed, storing in a memory the distance calculated at the distance calculation step.
- the image processing step includes a difference calculation step of obtaining the change in the distance, which occurs during the predetermined time period which is a time period during which the operation key is pressed, by sequentially calculating a difference between the distance stored in the memory and the distance which is calculated, while the operation information indicates that the operation key is currently pressed, at the distance calculation step.
- the image processing step performs at least either one of enlargement and reduction of the display image in accordance with the difference.
- the display image is enlarged in accordance with an increase in the distance, and reduced in accordance with a decrease in the distance.
- the display image is reduced in accordance with an increase in the distance, and enlarged in accordance with a decrease in the distance.
- the image processing program further causes the computer to perform a designated coordinates calculation step of, based on a position of the one target image or positions of the plurality of target images in the taken image, calculating designated coordinates associated with a display area of the display device.
- the display image is moved in accordance with a change in the designated coordinates.
- the image processing program further causes the computer to perform a tilt calculation step of, based on a position of the one target image or positions of the plurality of target images in the taken image, calculating a tilt of the input device.
- the display image is rotated in accordance with a change in the tilt.
- the image processing step performs at least either one of enlargement and reduction of the display image by sequentially changing, in accordance with the change in the distance, a position of a virtual camera placed in a virtual space.
- the image processing step performs at least either one of enlargement and reduction of the display image by sequentially changing, in accordance with the change in the distance, a display size of a two-dimensional image.
- the image processing program further causes the computer to perform a velocity calculation step of, based on the target image data, sequentially calculating a moving velocity of the input device with respect to the one or the plurality of imaging targets.
- the image processing step performs at least either one of enlargement and reduction of the display image in accordance with the moving velocity.
- the display image may be enlarged or reduced in accordance with the target image data which is obtained from the one or the plurality of target images and which indicates a space between the plurality of target images or the size of the one target image (i.e., the distance between the plurality of target images of the plurality of imaging targets in the taken image, or measurements such as a diameter, width, square measure and the like of the one target image of the one imaging target in the taken image).
- the target image data which is obtained from the one or the plurality of target images and which indicates a space between the plurality of target images or the size of the one target image (i.e., the distance between the plurality of target images of the plurality of imaging targets in the taken image, or measurements such as a diameter, width, square measure and the like of the one target image of the one imaging target in the taken image).
- the distance between the input device and the imaging target(s) is obtained from the target image data of the one or the plurality of target images.
- controlling the enlargement and reduction of the display image is easy for a user since a time period during which the enlargement and reduction of the display image is performed is specified.
- controlling the enlargement and reduction of the display image is easy for a user, since the time period during which the enlargement and reduction of the display image is performed is specified as the time period during which the operation key is pressed.
- a user is allowed to perform an intuitive operation which enables the user to feel as if the user were grabbing an image displayed on the display device.
- a user is allowed to perform an intuitive operation which enables the user to feel as if the user were operating a camera for taking an image to be displayed on the display device.
- a user is allowed to perform an operation to grab an image displayed on the display device and move the image from side to side and up and down. Further, a user is allowed to perform a more complicated and intuitive operation by using the position of the input device in addition to the distance between the input device and the imaging target(s).
- a user is allowed to perform an operation to grab an image displayed on the display device and rotate the image. Further, a user is allowed to perform a more complicated and intuitive operation by using the tilt of the input device in addition to the distance between the input device and the imaging target(s).
- the enlargement and reduction of the displayed image can be easily performed.
- the enlargement and reduction of the displayed two-dimensional image can be easily performed.
- the moving speed of the input device with respect to the imaging target(s) is obtained from the target image data of the target image(s), a new and intuitive operation using the moving speed is realized.
- the storage medium storing the image processing program according to the present invention produces same effects as those of the above-described image processing apparatus when the image processing program is executed by a computer.
- FIG. 1 is an external view illustrating a game system 1 according to an embodiment of the present invention
- FIG. 2 is a functional block diagram of a game apparatus 3 shown in FIG. 1 ;
- FIG. 3 is an isometric view of a controller 7 of FIG. 1 seen from a top rear side thereof;
- FIG. 4 is an isometric view of the controller 7 of FIG. 1 seen from a bottom rear side thereof;
- FIG. 5A is an isometric view illustrating a state where an upper casing of the controller 7 of FIG. 3 is removed;
- FIG. 5B is an isometric view illustrating a state where a lower casing of the controller 7 of FIG. 4 is removed;
- FIG. 6 is a block diagram showing an internal structure of the controller 7 of FIG. 3 ;
- FIG. 7 is an illustration briefly showing a state where a player uses the controller 7 of FIG. 3 to perform game operations;
- FIG. 8 shows an exemplary state of a player holding the controller 7 with a right hand as seen from a front surface side of the controller 7 ;
- FIG. 9 shows an exemplary state of a player holding the controller 7 with a right hand as seen from a left side of the controller 7 ;
- FIG. 10 illustrates viewing angles of an image information calculation section 74 and markers 8 L and 8 R;
- FIG. 11 is a top view showing an example in which a player U operates the controller 7 in a front-rear direction with respect to the markers 8 L and 8 R;
- FIGS. 12A to 12C show exemplary images which are displayed on the monitor 2 in accordance with operations performed by the player U shown in FIG. 11 ;
- FIGS. 13A and 135 show examples of displaying an object OBJ on the monitor 2 when the controller 7 is moved from side to side and up and down and when the controller 7 is twisted to the right and left;
- FIG. 14 shows an example of main data stored in a main memory 33 of the game apparatus 3 ;
- FIG. 15 is a flowchart showing an exemplary sequence of a game process performed by the game apparatus 3 ;
- FIG. 16 is a subroutine showing in detail an exemplary distance calculation process at step 53 of FIG. 15 ;
- FIG. 17 is a diagram used to describe an exemplary manner of calculating a current distance realD
- FIG. 18 shows another example of main data stored in the main memory 33 of the game apparatus 3 ;
- FIG. 19 is a flowchart showing another exemplary sequence of the game process performed by the game apparatus 3 ;
- FIG. 20 is a subroutine showing in detail another exemplary distance calculation process
- FIG. 21 is a diagram used to describe another exemplary manner of calculating the current distance realD
- FIG. 22 is also a diagram used to describe said another exemplary manner of calculating the current distance realD.
- FIG. 23 is also a diagram used to describe said another exemplary manner of calculating the current distance realD.
- FIG. 1 is an external view illustrating the game system 1 .
- the game system 1 uses a stationary game apparatus which is an example of the image processing apparatus according to the present invention.
- the game system 1 comprises a stationary game apparatus 3 (hereinafter, simply referred to as a “game apparatus 3 ”) connected via a connection cord to a display 2 (hereinafter, referred to as a “monitor 2 ”) such as a home-use TV receiver having a speaker 2 a , and a controller 7 for giving operation information to the game apparatus 3 .
- the game apparatus 3 is connected to a receiving unit 6 via a connection terminal.
- the receiving unit 6 receives transmission data which is wirelessly transmitted from the controller 7 .
- the controller 7 and the game apparatus 3 are connected to each other by radio communication.
- an optical disc 4 as an example of an exchangeable information storage medium is detachably mounted.
- a power ON/OFF switch for opening a top lid of the game apparatus 3 .
- a game process reset switch for resetting a top lid of the game apparatus 3 .
- an OPEN switch for opening a top lid of the game apparatus 3 .
- an external memory card 5 is detachably mounted when necessary.
- the external memory card 5 has a backup memory or the like mounted thereon for fixedly storing saved data or the like.
- the game apparatus 3 executes a game program or the like stored on the optical disc 4 , and displays a result thereof as a game image on the monitor 2 . It is assumed here that an image processing program of the present invention is a part of the game program stored in the optical disc 4 .
- the game apparatus 3 can also reproduce a state of a game played in the past, by using the saved data stored on the external memory card 5 , and display on the monitor 2 a game image of the reproduced state. A player playing with the game apparatus 3 can enjoy the game by operating the controller 7 while watching the game image displayed on the monitor 2 .
- the controller 7 wirelessly transmits the transmission data from a communication section 75 included therein (described later) to the game apparatus 3 connected to the receiving unit 6 .
- the controller 7 is operation means for mainly operating a player object appearing in a game space displayed on the monitor 2 .
- the controller 7 includes an operation section having a plurality of operation buttons, a key, a stick and the like.
- the controller 7 also includes an imaging information calculation section 74 for taking an image viewed from the controller 7 .
- two LED modules 8 L and 8 R (hereinafter, referred to as “markers 8 L and 8 R”) are provided in the vicinity of a display screen of the monitor 2 .
- the markers 8 L and 8 R each output an infrared light forward from the monitor 2 .
- FIG. 2 is a functional block diagram of the game apparatus 3 .
- the game apparatus 3 includes, for example, a RISC CPU (central processing unit) 30 for executing various types of programs.
- the CPU 30 executes a boot program stored in a boot ROM (not shown) to, for example, initialize memories such as a main memory 33 , and then executes a game program stored on the optical disc 4 to perform a game process or the like in accordance with the game program.
- the CPU 30 is connected via a memory controller 31 to a GPU (Graphics Processing Unit) 32 , the main memory 33 , a DSP (Digital Signal Processor) 34 , and an ARAM (Audio RAM) 35 .
- GPU Graphics Processing Unit
- DSP Digital Signal Processor
- ARAM Anaudio RAM
- the memory controller 31 is connected via a predetermined bus to a controller I/F (interface) 36 , video I/F 37 , external memory I/F 38 , audio I/F 39 , and a disc I/F 41 .
- the controller I/F 36 , video I/F 37 , external memory I/F 38 , audio I/F 39 and the disc I/F 41 are respectively connected to a receiving unit 6 , the monitor 2 , the external memory card 5 , the speaker 2 a and a disc drive 40 .
- the GPU 32 performs image processing based on an instruction from the CPU 30 .
- the GPO 32 includes, for example, a semiconductor chip for performing a calculation process necessary for displaying 3D graphics.
- the GPU 32 performs image processing by using a memory dedicated for image processing (not shown) and a part of a storage area of the main memory 33 .
- the GPU 32 generates, by using such memories, game image data or moving images to be displayed on the monitor 2 , and outputs the generated data or moving images to the monitor 2 via the memory controller 31 and video I/F 37 as necessary.
- the main memory 33 is a storage area used by the CPU 30 , which stores as necessary a game program or the like used for processes performed by the CPU 30 .
- the main memory 33 stores a game program read from the optical disc 4 by the CPU 30 and various types of data.
- the game program and the various types of data which are stored in the main memory 33 are executed by the CPU 30 .
- the DSP 34 processes sound data and the like generated by the CPU 30 during the execution of the game program.
- the DSP 34 is connected to the ARAM 35 for storing the sound data and the like.
- the ARAM 35 is used when the DSP 34 performs a predetermined process (for example, when the DSP 34 stores the game program or sound data which has been previously read).
- the DSP 34 reads the sound data stored in the ARAM 35 , and outputs the sound data to the speaker 2 a of the monitor 2 via the memory controller 31 and the audio I/F 39 .
- the memory controller 31 comprehensively controls data transfer, and is connected to the above-described various I/Fs.
- the controller I/F 36 includes, for example, four controllers I/F 36 a to 36 d , and communicably connects, by connectors of the controllers I/F 36 a to 36 d , the game apparatus 3 to an external device which is engageable with the connectors.
- the receiving unit 6 is engaged with such connectors and is connected to the game apparatus 3 via the controller I/F 36 .
- the receiving unit 6 receives the transmission data from the controller 7 , and outputs the transmission data to the CPU 30 via the controller I/F 36 .
- the video I/F 37 is connected to the monitor 2 .
- the external memory I/F 38 is connected to the external memory card 5 , thereby being able to access a backup memory or the like provided within the external memory card 5 .
- the audio I/F 39 is connected to the speaker 2 a built in the monitor 2 , such that the sound data read by the DSP 34 from the ARAM 35 or sound data directly outputted from the disc drive 40 is outputted from the speaker 2 a .
- the disc I/F 41 is connected to the disc drive 40 .
- the disc drive 40 reads data stored in a predetermined reading position of the optical disc 4 , and outputs the read data to the bus of the game apparatus 3 or the audio I/F 39 .
- FIG. 3 is an isometric view of the controller 7 seen from a top rear side thereof.
- FIG. 4 is an isometric view of the controller 7 seen from a bottom rear side thereof.
- the controller 7 includes a housing 71 formed by plastic molding or the like.
- the housing 71 has a plurality of operation sections 72 .
- the housing 71 has a generally parallelepiped shape extending in a longitudinal direction from front to rear. The overall size of the housing 71 is small enough to be held by one hand of an adult or even a child.
- a cross key 72 a is provided at the center of a front part of a top surface of the housing 71 .
- the cross key 72 a is a cross-shaped four-direction push switch.
- the cross key 72 a includes operation portions corresponding to four directions indicated by arrows (front, rear, right and left), which are respectively located on cross-shaped projecting portions arranged at intervals of 90 degrees.
- a player selects one of the front, rear, right and left directions by pressing one of the operation portions of the cross key 72 a .
- the player can, for example, indicate a direction in which a player character or the like appearing in a virtual game world is to move, or a direction in which a cursor is to move.
- the cross key 72 a is an operation section for outputting an operation signal in accordance with the above-described direction input operation performed by the player.
- Such an operation section may be provided in another form.
- the cross key 72 a may be replaced with a composite switch including a push switch having a ring-shaped four-direction operation section and a center switch provided at the center thereof.
- the cross key 72 a may be replaced with an operation section which includes an inclinable stick projecting from a top surface of the housing 71 and which outputs an operation signal in accordance with an inclining direction of the stick.
- the cross key 72 a may be replaced with an operation section which includes a disc-shaped member horizontally slidable and which outputs an operation signal in accordance with a sliding direction of the disc-shaped member. Still alternatively, the cross key 72 a may be replaced with a touch pad. Still alternatively, the cross key 72 a may be replaced with an operation section which includes switches indicating at least four directions (front, rear, right and left) and which outputs an operation signal in accordance with any of the switches pressed by the player.
- a plurality of operation buttons 72 b to 72 g are provided.
- the operation buttons 72 b to 72 g are each an operation section for, when the player presses a head thereof, outputting a corresponding operation signal.
- functions as an X button, a Y button and a B button are assigned to the operation buttons 72 b to 72 d .
- functions as a select switch, a menu switch and a start switch are assigned to the operation buttons 72 e to 72 g , for example.
- the operation buttons 72 b to 72 d are arranged in a line at the center in a front-rear direction on the top surface of the housing 71 .
- the operation buttons 72 e to 72 g are arranged on the top surface of the housing 71 in a line in a left-right direction between the operation buttons 72 b and 72 d .
- the operation button 72 f has a top surface thereof buried in the top surface of the housing 71 , so as not to be inadvertently pressed by the player.
- an operation button 72 h is provided in front of the cross key 72 a on the top surface of the housing 71 .
- the operation button 72 h is a power switch for turning on and off the power to the game apparatus 3 by remote control.
- the operation button 72 h also has a top surface thereof buried in the top surface of the housing 71 , so as not to be inadvertently pressed by the player.
- a plurality of LEDs 702 are provided.
- a controller type (number) is assigned to the controller 7 such that the controller 7 is distinguishable from the other controllers 7 .
- the LEDs 702 are used for, e.g., informing the player about the controller type which is currently set for the controller 7 . Specifically, when the controller 7 transmits the transmission data to the receiving unit 6 , one of the plurality of LEDs 702 which corresponds to the controller type of the controller 7 is lit up.
- a recessed portion is formed on a bottom surface of the housing 71 . As described later in detail, the recessed portion is formed in a position in which an index finger or middle finger of the player is located when the player holds the controller 7 .
- an operation button 72 i is provided on a rear slope surface of the recessed portion.
- the operation button 72 i is an operation section acting as, for example, an A button.
- the operation button 72 i is used, for example, as a trigger switch in a shooting game, or for attracting attention of a player object to a predetermined object.
- the operation button 72 i acts as a drag button for, e.g., grabbing an object displayed on the monitor 2 . When the player presses the operation button 72 i , an object displayed on the monitor 2 is grabbed.
- the imaging information calculation section 74 is a system for analyzing image data of an image taken by the controller 7 , thereby identifying an area having a high brightness in the image and calculating a position of a center of gravity, a size and the like of the area.
- the imaging information calculation section 74 has, for example, a maximum sampling period of about 200 frames/sec, and therefore can trace and analyze even a relatively fast motion of the controller 7 .
- a configuration of the imaging information calculation section 74 will be described later in detail.
- a connector 73 is provided on a rear surface of the housing 71 .
- the connector 73 is, for example, a 32-pin edge connector, and is used for engaging and connecting the controller 7 with a connection cable.
- FIG. 5A is an isometric view illustrating a state where an upper casing (a part of the housing 71 ) of the controller 7 is removed.
- FIG. 5B is an isometric view illustrating a state where a lower casing (a part of the housing 71 ) of the controller 7 is removed.
- FIG. 5B shows a reverse side of a substrate 700 shown in FIG. 5A .
- the substrate 700 is fixed inside the housing 71 .
- the operation buttons 72 a to 72 h On a top main surface of the substrate 700 , the operation buttons 72 a to 72 h , an acceleration sensor 701 , the LEDs 702 , a quartz oscillator 703 , a wireless module 753 , an antenna 754 and the like are provided. These elements are connected to a microcomputer 751 (see FIG. 6 ) by lines (not shown) formed on the substrate 700 and the like.
- the wireless module 753 and antenna 754 allow the controller 7 to act as a wireless controller.
- the quartz oscillator 703 generates a reference clock of the microcomputer 751 described later.
- the image information calculation section 74 includes an infrared filter 741 , a lens 742 , the image pickup element 743 and an image processing circuit 744 which are located in this order from the front surface of the controller 7 . These elements are attached to the bottom main surface of the substrate 700 .
- the connector 73 is attached.
- the operation button 72 i is attached on the bottom main surface of the substrate 700 behind the image information calculation section 74 , and cells 705 are accommodated behind the operation button 72 i .
- a vibrator 704 is attached on the bottom main surface of the substrate 700 between the connector 73 and the cells 705 .
- the vibrator 709 may be, for example, a vibration motor or a solenoid.
- the controller 7 is vibrated by an actuation of the vibrator 704 , and vibration is conveyed to the player holding the controller 7 .
- a so-called vibration-feedback game is realized.
- FIG. 6 is a block diagram showing the internal structure of the controller 7 .
- the controller 7 includes therein, in addition to the above-described operation section 72 and image information calculation section 74 , the communication section 75 and acceleration sensor 701 .
- the imaging information calculation section 74 includes the infrared filter 741 , lens 742 , image pickup element 743 and the image processing circuit 744 .
- the infrared filter 741 allows, among lights incident on the front surface of the controller 7 , only an infrared light to pass therethrough.
- the lens 742 converges the infrared light which has passed through the infrared filter 741 , and outputs the infrared light to the image pickup element 743 .
- the image pickup element 743 is a solid-state image pickup element such as a CMOS sensor or a CCD.
- the image pickup element 743 takes an image of the infrared light collected by the lens 742 .
- the image pickup element 743 takes an image of only the infrared light which has passed through the infrared filter 741 . Then, the image pickup element 743 generates image data of the image.
- the image data generated by the image pickup element 743 is processed by the image processing circuit 744 .
- the image processing circuit 744 processes the image data obtained from the image pickup element 743 , detects an area of the image which has a high brightness, and outputs, to the communication section 75 , process result data indicating, e.g., a calculated coordinate position, square measure, diameter and a width of the area.
- the imaging information calculation section 74 is fixed to the housing 71 of the controller 7 .
- An imaging direction of the imaging information calculation section 74 can be changed by changing a facing direction of the housing 71 . As described later in detail, a signal corresponding to a position and motion of the controller 7 is obtained in accordance with the process result data outputted by the imaging information calculation section 74 .
- the acceleration sensor 701 detects acceleration of the controller 7 for three axial directions of the controller 7 , i.e., an up-down direction, a left-right direction, and a front-rear direction of the controller 7 .
- an acceleration sensor for detecting the acceleration of the controller 7 in two of the three axial directions i.e., the up-down direction and left-right direction, may be alternatively used in accordance with a necessary type of the operation signal.
- Data indicating the acceleration detected by the acceleration sensor 701 is outputted to the communication section 75 .
- such a three-axis or two-axis acceleration sensor 701 may be of the type available from Analog Devices, Inc. or STMicroelectronics N.V.
- the acceleration sensor 701 is an electrostatic capacitance or capacitance-coupling type that is based on silicon micro-machined MEMS (microelectromechanical systems) technology.
- any other suitable accelerometer technology e.g., piezoelectric type or piezoresistance type
- any other suitable accelerometer technology e.g., piezoelectric type or piezoresistance type
- accelerometers as used in the acceleration sensor 701 , are only capable of detecting acceleration along a straight line (linear acceleration) corresponding to each axis of the acceleration sensor.
- the direct output of the acceleration sensor 701 is limited to signals indicative of linear acceleration (static or dynamic) along each of the two or three axes thereof.
- the acceleration sensor 701 cannot directly detect movement along a non-linear (e.g. arcuate) path, rotation, rotational movement, angular displacement, tilt, position, attitude or any other physical characteristic.
- the linear acceleration output of the acceleration sensor 701 can be used to infer tilt of an object (controller 7 ) relative to the gravity vector by correlating tilt angles with detected linear acceleration.
- the acceleration sensor 701 can be used in combination with the microcomputer 751 (or another processor) to determine tilt, attitude or position of the controller 7 .
- various movements and/or positions of the controller 7 can be calculated or inferred through processing of the linear acceleration signals generated by the acceleration sensor 701 when the controller 7 including the acceleration sensor 701 is subjected to dynamic accelerations by, for example, the hand of a user, as explained herein.
- the acceleration sensor 701 may include an embedded signal processor or other type of dedicated processor for performing any desired processing of the acceleration signals outputted from accelerometers therein prior to outputting signals to the microcomputer 751 .
- the embedded or dedicated processor could convert the detected acceleration signal to a corresponding tilt angle when the acceleration sensor is intended to detect static acceleration (i.e., gravitational acceleration).
- the acceleration sensor 701 may be replaced with a gyro-sensor of any suitable technology incorporating, for example, a rotating or vibrating element.
- a gyro-sensor of any suitable technology incorporating, for example, a rotating or vibrating element.
- Exemplary MEMS gyro-sensors that may be used in this embodiment are available from Analog Devices, Inc.
- a gyro-sensor is capable of directly detecting rotation (or angular rate) around an axis defined by a gyroscopic element (or elements) therein.
- a gyro-sensor e.g., angular-based output and vector-based output
- corresponding changes need to be made to the processing operations that are performed on the output signals from these devices depending on which device is selected for a particular application. Since characteristics of a gyroscope as well as fundamental differences between an accelerometer and a gyroscope are well known by the one skilled in the art, further descriptions thereof will be omitted.
- the gyro-sensor has the advantage of being capable of directly detecting rotation
- the acceleration sensor is generally a cost-effective option as compared with the gyro-sensor when used for the controller of the present embodiment.
- the communication section 75 includes the microcomputer 751 , a memory 752 , the wireless module 753 and the antenna 754 .
- the microcomputer 751 controls the wireless module 753 for transmitting the transmission data while using the memory 752 as a storage area during processing.
- Data from the controller 7 such as an operation signal (key data) from the operation section 72 , acceleration signals (acceleration data) from the acceleration sensor 701 , and the process result data from the imaging information calculation section 74 are outputted to the microcomputer 751 .
- the microcomputer 751 temporarily stores inputted data (the key data, acceleration data and process result data) in the memory 752 as the transmission data which is to be transmitted to the receiving unit 6 .
- Radio transmission from the communication section 75 to the receiving unit 6 is performed at predetermined time intervals. Since the game process is generally performed at a cycle of 1/60 sec, the radio transmission needs to be performed at a cycle of a shorter time period.
- the game process is performed at a cycle of 16.7 ms ( 1/60 sec), and a transmission interval of the communication section 75 structured using the Bluetooth (registered trademark) technology is 5 ms.
- the microcomputer 751 outputs, to the wireless module 753 , the transmission data stored in the memory 752 as a series of pieces of operation information.
- the wireless module 753 uses, for example, the Bluetooth (registered trademark) technology to radiate, with a carrier wave having a predetermined frequency, the series of pieces of operation information from the antenna 754 as a radio signal.
- the key data from the operation section 72 , the acceleration data from the acceleration sensor 701 , and the process result data from the imaging information calculation section 74 are transmitted from the controller 7 .
- the receiving unit 6 of the game apparatus 3 receives the radio signal, and the game apparatus 3 demodulates or decodes the radio signal to obtain the series of pieces of operation information (the key data, acceleration data and process result data).
- the CPU 30 of the game apparatus 3 performs the game process.
- the communication section 75 is structured using the Bluetooth (registered trademark) technology
- the communication section 75 can have a function of receiving transmission data which is wirelessly transmitted from the other devices.
- a player in order to play a game with the game system 1 by using the controller 7 , a player holds the controller 7 with one hand (for example, a right hand) (see FIGS. 8 and 9 ).
- the player holds the controller 7 so as to point the front surface of the controller 7 (that is, a side having an entrance through which a light is incident on the imaging information calculation section 74 taking an image of the light) to the monitor 2 .
- Two markers 8 L and 8 R are provided in the vicinity of the display screen of the monitor 2 .
- the markers 8 L and 8 R respectively output infrared lights forward from the monitor 2 , and the infrared lights are used as imaging targets of the imaging information calculation section 74 .
- the infrared lights outputted from the two markers 8 L and 8 R are incident on the imaging information calculation section 74 .
- the image pickup element 743 takes an image of the infrared lights which are incident on the image pickup element 743 through the infrared filter 741 and the lens 742 , and the image processing circuit 744 processes the taken image.
- the imaging information calculation section 74 detects, from the taken image, infrared components outputted by the markers 8 L and 8 R so as to obtain positional information about the markers 8 L and 8 R (i.e., positions of target images in the taken image) and size information about the markers 8 L and 8 R such as a square measure, diameter and width thereof.
- the image processing circuit 744 analyzes image data of the image taken by the image pickup element 743 , and eliminates, from the size information about the taken image, information which is not about the infrared lights outputted by the markers 8 L and 8 R, and then identifies points each having a high brightness as positions of the markers 8 L and 8 R.
- the imaging information calculation section 74 obtains positional information which is information about a high brightness position such as the center of gravity of each of the identified points having a high brightness, and outputs the positional information as the process result data.
- the positional information outputted as the process result data may be coordinate values indicating the brightness position, which are obtained by setting a predetermined reference point (for example, the center or the upper left corner of the taken image) in the taken image as a coordinate origin.
- a predetermined reference point for example, the center or the upper left corner of the taken image
- the brightness position which is previously identified at a predetermined timing may be set as a reference point
- a vector indicating a positional difference between the reference point and the brightness position currently identified may be outputted as the process result data. That is, in the case where a predetermined reference point is set in the image taken by the image pickup element 743 , the positional information about each of the target images in the taken image is a parameter indicating a positional difference from the predetermined reference point.
- the game apparatus 3 can obtain, based on a difference between a value representing the reference point and a value representing the positional information about each of the target images, an amount by which a signal changes in accordance with a motion, posture, position and the like of the imaging information calculation section 74 (i.e., the controller 7 ) with respect to the markers 8 L and 8 R. Specifically, the position of each point having a high brightness in the taken image, which is transmitted from the communication section 75 , is changed in accordance with the motion of the controller 7 , and a direction or coordinates corresponding to such a change of the position of each point having a high brightness is transmitted from the communication section 75 .
- the game apparatus 3 Upon receiving the direction or coordinates from the communication section 75 , the game apparatus 3 recognizes and uses the direction or coordinates as an input from the communication section 75 which corresponds to a moving direction of the controller 7 in a three-dimensional space.
- the imaging information calculation section 74 obtains at least coordinates of the center of gravity of a point having a high brightness for each of the target images of the markers 8 L and 8 R in the taken image, and outputs the coordinates as the process result data.
- the image information calculation section 74 obtains the size information indicating any of the square measure, diameter and width of each of the target images of the markers 8 L and 8 R in the taken image, thereby allowing the game apparatus 3 to analyze in detail the position of the controller 7 in 3D space.
- the game apparatus 3 is able to obtain a distance between the controller 7 and the markers 8 L and 8 R.
- the game apparatus 3 obtains as the process result data the size information in addition to the above-described center of gravity coordinates.
- the imaging information calculation section 74 of the controller 7 takes images of the stationary markers (infrared lights from the two markers 8 L and 8 R in the present embodiment), and the game apparatus 3 processes data outputted by the controller 7 during the game process.
- This enables an operation input to be performed in accordance with the motion, posture, position and the like of the controller 7 . Therefore, an operation input, which is different from an operation input made by pressing an operation button or using an operation key, is intuitively performed.
- the markers are provided in the vicinity of the display screen of the monitor 2 , the motion, posture, position and the like of the controller 7 with respect to the display screen of the monitor 2 can be easily calculated based on positions of the controller 7 with respect to the markers.
- the process result data used for obtaining the motion, posture, position and the like of the controller 7 can be used as an operation input which directly affects an object displayed on the display screen of the monitor 2 .
- the distance between the controller 7 and the markers 8 L and 8 R, which is obtained by using the taken image of the markers 8 L and 8 R can also be used as an operation input which directly affects an object displayed on the display screen of the monitor 2 . This will be described later in detail.
- FIG. 8 shows an exemplary state of a player holding the controller 7 with a right hand as seen from a front surface side of the controller 7 .
- FIG. 9 shows an exemplary state of a player holding the controller 7 with a right hand as seen from a left side of the controller 7 .
- the overall size of the controller 7 is small enough to be held by one hand of an adult or even a child.
- a thumb on the top surface of the controller 7 for example, near the cross key 72 a
- an index finger in the recessed portion on the bottom surface of the controller 7 for example, near the operation button 72 i
- a light entrance of the imaging information calculation section 74 on the front surface of the controller 7 is exposed forward from the player. It should be understood that also when the player holds the controller 7 with a left hand, the holding state is same as that described for the right hand.
- the controller 7 allows a player to easily operate the operation section 72 such as the cross key 72 a or the operation button 72 i while holding the controller 7 with one hand. Further, when the player holds the controller 7 with one hand, the light entrance of the imaging information calculation section 74 on the front surface of the controller 7 is exposed, whereby the light entrance can easily receive the infrared lights from the aforementioned two markers 8 L and 8 R. As a result, the player can hold the controller 7 with one hand without preventing the imaging information calculation section 74 of the controller 7 from functioning. That is, when the player moves his or her hand holding the controller 7 with respect to the display screen, the controller 7 can perform an operation input by which a motion of the player's hand directly affects a displayed object on the display screen.
- the markers 8 L and 8 R each have a viewing angle ⁇ 1.
- the image pickup element 743 has a viewing angle ⁇ 2.
- each of the viewing angles ⁇ 1 of the markers 8 L and 8 R is 34 degrees (half-value angle), and the viewing angle ⁇ 2 of the image pickup element 743 is 41 degrees.
- the game apparatus 3 calculates a position of the controller 7 (including the distance between the controller 7 and the markers 8 L and 8 R) by using positional information about points on the two markers 8 L and 8 R, the points each having a high brightness.
- FIG. 11 is a top view showing an example in which a player U operates the controller 7 in a front-rear direction with respect to the markers 8 L and 8 R.
- FIGS. 12A to 12C show exemplary images which are displayed on the monitor 2 in accordance with operations performed by the player U as shown in FIG. 11 .
- the player U holds the controller 7 so as to point the front face of the controller 7 to the markers 8 L and 8 R (i.e., to the monitor 2 ).
- a distance between the front face of the controller 7 and a middle point between the markers 8 L and 8 R is referred to as a “distance realD”.
- the player U holds the controller 7 such that the distance realD is realD0.
- the player U can change the distance realD, which is the distance between the front face of the controller 7 and the middle point between the markers 8 L and 8 R, by moving the controller 7 back and forth with respect to the monitor 2 .
- the player U may move the controller 7 forward to the monitor 2 while pressing the operation button 72 i (drag button), such that the distance realD changes from realD0 to realDn (state B). Also, the player U may move the controller 7 backward from the monitor 2 while pressing the operation button 72 i (drag button), such that the distance realD changes from realD0 to realDf (state C).
- FIG. 12A is an exemplary image displayed on the monitor 2 when the controller 7 is in the state A.
- FIG. 12B is an exemplary image displayed on the monitor 2 when the controller 7 is in the state B.
- FIG. 12C is an exemplary image displayed on the monitor 2 when the controller 7 is in the state C.
- the monitor 2 displays a part of an area in which a puzzle is drawn (a part of an object OBJ).
- the object OBJ which is displayed on the monitor 2 when the controller 7 is in the state A, is reduced in size, such that the entire object OBJ is displayed on the monitor 2 .
- the player U can cause an object displayed on the monitor 2 to be reduced in size, by moving the controller 7 close to the monitor 2 while pressing the operation button 72 i .
- the object OBJ which is displayed on the monitor 2 when the controller 7 is in the state A, is enlarged.
- the player U can enlarge an object displayed on the monitor 2 , by distancing the controller 7 from the monitor 2 while pressing the operation button 72 i.
- the player U can cause an object displayed on the monitor 2 to move, by moving the controller 7 from side to side and up and down or twisting the controller 7 to the right and left with respect to the monitor 2 while pressing the operation button 72 i .
- FIG. 13A when the player U moves the controller 7 from side to side and up and down with respect to the monitor 2 while pressing the operation button 72 i , the displayed object OBJ moves from side to side and up and down.
- FIG. 13B when the player U twists the controller 7 to the right and left while pressing the operation button 72 i , the displayed object OBJ rotates to the right and left accordingly.
- FIG. 14 shows the main data used for the game process, which is stored in the main memory 33 of the game apparatus 3 .
- the main memory 33 stores operation information Da, operation status information Db, display information Dc and so on. In addition to data contained in the information shown in FIG. 14 , the main memory 33 stores, as necessary, other data used for performing the game process.
- the operation information Da is a series of pieces of operation information which are transmitted as transmission data from the controller 7 .
- the operation information Da is information to be updated to latest operation information.
- the operation information Da contains first coordinate data Da1 and second coordinate data Da2 which correspond to the positional information of the above-described process result data.
- the first coordinate data Da1 is coordinate data indicating a position of one of the images of the two markers 8 L and 8 R in a image taken by the image pickup element 743 .
- the second coordinate data Da2 is coordinate data indicating a position of the other of the images of the two markers 8 L and 8 R in the image taken by the image pickup element 743 .
- the positions of the images of the markers are specified, for example, in a XY coordinate system on the taken image.
- the operation information Da contains, in addition to the coordinate data (the first coordinate data Da1 and second coordinate data Da2) which is exemplary process result data obtained from the taken image, key data Da3 and the like obtained from the operation section 72 .
- the receiving unit 6 of the game apparatus 3 receives the operation information Da transmitted from the controller 7 at predetermined time intervals, e.g., every 5 ms, and stores the information Da in a buffer (not shown) of the receiving unit 6 . Thereafter, the information Da is read, e.g., every frame (every 1/60 sec), which corresponds to a timing of performing the game process.
- the newly read information Da is stored in the main memory 33 .
- the operation status information Db is information about an operation status of the controller 7 which is recognized based on the taken image.
- the operation status information Db is data which is obtained from, e.g., positions and directions of the target images (markers) contained in the taken image.
- the operation status information Db contains direction data Db1, middle point data Db2, current distance data Db3, initial distance data Db4, drag flag Db5 and soon.
- the direction data Db1 indicates a direction from a point indicated by the first coordinate data Da1 to a point indicated by the second coordinate data Da2. It is assumed here that the direction data Db1 is a vector whose originating point is the point indicated by the first coordinate data Da1 and whose ending point is the point indicated by the second coordinate data Da2.
- the middle point data Db2 indicates coordinates of a middle point between the point indicated by the first coordinate data Da1 and the point indicated by the second coordinate data Da2.
- the current distance data Db3 indicates the current distance realD which is a current distance between the controller 7 and the markers 8 L and 8 R and which is calculated based on the first coordinate data Da1 and second coordinate data Da2.
- the initial distance data Db4 indicates a distance initD which is a distance between the controller 7 and the markers 8 L and 8 R and which is obtained at a predetermined timing (e.g., a timing at which the player starts pressing the drag button).
- the drag flag Db5 is data indicating a drag flag is Drag used for determining whether or not the player is currently pressing the drag button.
- the display information Dc contains virtual current distance data Dc1, virtual initial distance data Dc2, scale data Dc3, camera matrix data Dc4 and image data Dc5.
- the virtual current distance data Dc1 indicates a virtual current distance virtualD which is a result of converting the current distance realD into a corresponding distance in a virtual space created on the monitor 2 .
- the virtual initial distance data Dc2 indicates a virtual initial distance init_virtualD which is the virtual current distance virtualD obtained at a predetermined timing (e.g., a timing at which the player starts pressing the drag button).
- the scale data Dc3 indicates a scale value Scale representing a size of a view of a virtual camera used for creating the virtual space on the monitor 2 .
- the camera matrix data Dc4 indicates camera matrix representing movement, zooming, directional rotation, positional rotation and the like of the virtual camera.
- the image data Dc5 is used for placing, e.g., the object OBJ in the virtual space and generating an image thereof to be displayed on the monitor 2 .
- FIG. 15 is a flowchart showing a sequence of the game process performed by the game apparatus 3 .
- FIG. 16 is a subroutine showing in detail a distance calculation process at step 53 of FIG. 15 .
- FIG. 17 is a diagram used to describe a manner of calculating the current distance realD.
- Flowcharts of FIGS. 15 and 16 show, among a plurality of processes in the game process, only an image enlarging/reducing process which is performed in accordance with operations of the controller 7 while the image processing program contained in the game program is executed, and descriptions of the other processes which are not directly related to the present invention will be omitted.
- each step performed by the CPU 30 is abbreviated as “S”.
- the CPU 30 of the game apparatus 3 executes a boot program stored in a boot ROM (not shown), thereby initializing each unit such as the main memory 33 . Then, after the game program stored in the optical disc 4 is loaded to the main memory 33 , the CPU 30 starts executing the game program.
- FIGS. 15 and 16 illustrate processes which are performed after such a boot process is completed.
- the CPU 30 first obtains the operation information received from the controller 7 (step 51 ), and then proceeds to the next step.
- the CPU 30 stores the operation information in the main memory 33 as the operation information Da.
- the operation information obtained at step 51 contains, in addition to coordinate data indicating positions of the markers 8 L and 8 R in the taken image (the first coordinate data Da1 and second coordinate data Da2), data indicating a manner in which the operation section 72 of the controller 7 has been operated (key data Da3).
- the communication section 75 transmits the operation information to the game apparatus 3 at predetermined time intervals (e.g., every 5 ms), and that the CPU 30 uses the operation information every frame. Accordingly, an iteration of processes at steps 51 to 64 is repeatedly performed every frame.
- the CPU 30 refers to the keydata Da3, and determines whether or not the drag button is currently pressed (step 52 ). When the drag button is pressed, the CPU 30 proceeds to step 53 . When the drag button is not pressed, the CPU 30 sets the drag flag is Drag written in the drag flag Db5 to 0 (step 65 ), and proceeds to step 62 .
- the CPU 30 performs the distance calculation process, and then proceeds to the next step.
- the distance calculation process the current distance realD between the controller 7 and the markers 8 L and 8 R is calculated based on the first coordinate data Da1 and second coordinate data Da2, which have been transmitted from the controller 7 and stored in the main memory 33 .
- processes performed at step 53 will be described in detail with reference to FIGS. 16 and 17 .
- the CPU 30 obtains the first coordinate data Da1 and second coordinate data Da2 (step 71 ), and calculates a distance mi (step 72 )
- the distance mi is a distance between two points in the taken image. These two points correspond to images of the markers 8 L and 8 R in the taken image, and coordinates indicating the two points are the first coordinate data Da1 and second coordinate data Da2. Accordingly, the CPU 30 uses the first coordinate data Da1 and second coordinate data Da2 to calculate the distance mi.
- the distance mi is obtained by the following equation.
- the CPU 30 calculates a width w (refer to FIG. 17 ) which indicates, with respect to setting positions of the markers 8 L and 8 R, a width for which the image pickup element 743 is able to take an image (step 73 ).
- the width w is obtained by the following equation.
- m represents a setting distance between the markers 8 L and 8 R (actual setting distance between the markers 8 L and 8 R; e.g., 20 cm), and is a fixed value.
- wi represents a width wi of the image taken by the image pickup element 743 which corresponds to the width w.
- the width wi is also a fixed value. Since the setting distance m and width wi are fixed values, these values are prestored in storage means (not shown) within the game apparatus 3 .
- the player is allowed to discretionarily determine the setting positions of the markers 8 L and 8 R in accordance with the player's environment, thereby determining the setting distance m. In such a case, the player is required to input a distance between the discretionarily determined setting positions of the markers 8 L and 8 R as the setting distance m so that the width w can be obtained from the above equation.
- the CPU 30 calculates the current distance realD (refer to FIG. 17 ) between the image pickup element 743 (controller 7 ) and the markers 8 L and 8 R, by using the width w and a viewing angle ⁇ of the image pickup element 74 , and updates the current distance data Db3 (step 74 ). Then, the distance calculation process in the subroutine ends.
- the current distance realD is obtained by using the following equation.
- the angle ⁇ is prestored in the storage means (not shown) within the game apparatus 3 .
- the CPU 30 refers to the drag flag Db5 (step 54 ), and determines whether or not the drag flag is Drag is 0 (step 55 ).
- the drag flag is Drag is 0 (i.e., when the player has just started pressing the drag button)
- the CPU 30 proceeds to step 56 .
- the drag flag is Drag is 1 (i.e., when the player has been continuing pressing the drag button)
- the CPU 30 proceeds to step 58 .
- the CPU 30 sets an initial distance initD to a value of the current distance realD calculated at step 53 , and updates the initial distance data Db4.
- the CPU 30 sets the virtual initial distance init_virtualD to a currently set value of the virtual current distance virtualD, and updates the virtual initial distance data Dc2 (step 57 ). Note that, if the virtual current distance virtualD is unset at this point, the CPU 30 sets the virtual initial distance init_virtualD to a default value, and updates the virtual initial distance data Dc2. Then, the CPU 30 proceeds to the next step 61 .
- the CPU 30 calculates a moving distance moveD To be specific, the CPU 30 calculates, by using the current distance realD calculated at step 53 and the initial distance initD which is stored in the main memory 33 as the initial distance data Db4, the moving distance moveD with the following equation.
- the CPU 30 calculates the virtual current distance virtualD, and updates the virtual current distance data Dc1 (step 59 ). To be specific, the CPU 30 calculates, by using the moving distance moveD calculated at step 58 and the virtual initial distance init_virtualD which is stored in the main memory 33 as the virtual initial distance data Dc2, the virtual current distance virtualD with the following equation.
- the CPU 30 calculates the scale value Scale, and updates the scale data Dc3 (step 60 ). To be specific, the CPU 30 calculates, by using the virtual current distance virtualD which is stored in the main memory 33 as the virtual current distance data Dc1, the scale value Scale with the following equation.
- the player is enabled to enlarge an object displayed on the monitor 2 by distancing the controller 7 from the markers 8 L and 8 R. This allows the player to perform an intuitive operation in which the player feels as if the player were grabbing the object displayed on the monitor 2 .
- the player is enabled to reduce in size an object displayed on the monitor 2 by distancing the controller 7 from the markers 8 L and 8 R. This allows the player to perform an intuitive operation in which the player feels as if the player were operating a camera for taking an image to be displayed on the monitor 2 .
- step 61 the CPU 30 sets the drag flag is Drag written in the drag flag Db5 to “1”, and then proceeds to the next step 62 .
- the CPU 30 calculates the camera matrix based on the scale value Scale, and updates the camera matrix data Dc4. Then, the CPU 30 proceeds to the next step.
- the CPU 30 obtains the camera matrix by calculating, based on the scale value Scale which is stored in the main memory 33 as the scale data Dc3, a distance between a virtual camera and a focal point of the virtual camera.
- the CPU 30 obtains the camera matrix by calculating, based on the scale value Scale which is stored in the main memory 33 as the scale data Dc3, a size of a view of the virtual camera which is to be represented by the orthogonal projection matrix.
- the CPU 30 uses the camera matrix calculated at step 62 to draw an image, and displays the image on the monitor 2 (step 63 ). Then, the CPU 30 determines whether or not to terminate displaying the image (step 64 ). When the CPU 30 continues displaying the image, the CPU 30 returns to step 51 , and repeats the above-described processes. When the CPU 30 terminates displaying the image, the CPU 30 ends the game process illustrated in the flowcharts.
- two-dimensional image processing may be performed based on a currently set scale value Scale, and the monitor 2 may display a resultant two-dimensional image which is enlarged or reduced by changing as necessary a display size of the two-dimensional image.
- Such a manner of enlarging/reducing the displayed image also allows the displayed image to be enlarged/reduced in accordance with the distance between the controller 7 and the markers 8 L and 8 R.
- the CPU 30 calculates the direction data Db1 indicating a direction from a point indicated by the first coordinate data Da1 to a point indicated by the second coordinate data Da2.
- the CPU 30 refers to the position coordinates (Lx, Ly) indicated by the first coordinate data Da1 and the position coordinates (Rx, Ry) indicated by the second coordinate data Da2, and calculates a vector whose originating point is the point indicated by the first coordinate data Da1 and whose ending point is the point indicated, by the second coordinate data Da2. Then, the CPU 30 updates the direction data Db1. Based on a difference between a direction indicated by the vector of the direction data Db1 and a predetermined reference direction, a rotation of the controller 7 with respect to a perpendicular direction from the monitor 2 to the front face of the controller 7 can be obtained.
- the CPU 30 calculates a direction change which has occurred in the direction indicated by the vector of the direction data Db1 while the drag button is pressed. Based on the direction change, the CPU 30 calculates camera matrix representing a rotation process of the virtual camera, and then draws an image of the object to be displayed on the monitor 2 , the image having been taken by the virtual camera rotating as a result of the rotation process. Accordingly, the object displayed on the monitor 2 is rotated ( FIG. 13B ).
- the CPU 30 calculates the middle point data Db2 indicating a middle point between the point indicated by the position coordinates (Lx, Ly) of the first coordinate data Da1 and the point indicated by the position coordinates (Rx, Ry) of the second coordinate data Da2. To be specific, the CPU 30 refers to the first coordinate data Da1 and second coordinate data Da2, and calculates coordinates of the middle point. Then, the CPU 30 updates the middle point data Db2.
- the middle point data Db2 indicates a position of the one image.
- a positional change of the controller 7 in relation to the monitor 2 can be calculated.
- the CPU 30 calculates a positional change of the middle point indicated by the middle point data Db2, which occurs while the drag button is pressed. Based on the positional change, the CPU 30 calculates camera matrix representing a moving process of the virtual camera, and then draws an image of the object to be displayed on the monitor 2 , which is taken by the virtual camera moving as a result of the moving process. Accordingly, the object displayed on the monitor 2 is moved from side to side and up and down ( FIG. 13A ).
- the middle point data Db2 may be converted to coordinates in a coordinate system on the display screen (designated coordinates), and the displayed object may be moved in accordance with a change in the designated coordinates.
- the designated coordinates are changed such that the designated coordinates indicate a position which is pointed by the controller 7 .
- the player is allowed to discretionarily move the displayed object pointed by the controller 7 by moving the controller 7 .
- FIG. 18 shows main data stored in the main memory 33 of the game apparatus 3 in said another example.
- FIG. 19 is a flowchart showing a sequence of the game process performed by the game apparatus 3 in said another example. Described in the flowchart shown in FIG.
- FIG. 19 is only an image enlarging/reducing process among a plurality of processes in the game process, which is performed in accordance with operations of the controller 7 while the image processing program contained in the game program is executed, and detailed descriptions of the other processes which are not directly related to the present invention will be omitted.
- each step performed by the CPU 30 is abbreviated as “S”.
- the flowchart shown in FIG. 19 shows processes which are performed after the above-described boot process is completed.
- the main memory 33 stores, e.g., the operation information Da, operation status information Db and display information Dc.
- the main data shown in FIG. 18 additionally contains past distance data Db6 and moving velocity data Db7 in the operation status information Db, and does not contain the initial distance data Db4, drag flag Db5 and virtual initial distance data Dc2.
- data which is identical with the data shown in FIG. 14 is denoted by a same reference numeral as that used for the data shown in FIG. 14 , and a detailed description thereof will be omitted.
- the past distance data Db6 indicates a past distance pastD which is a distance between the controller 7 and the markers 8 L and 8 R at the last frame.
- the moving velocity data Db7 indicates a moving velocity velD which is a moving velocity of the controller 7 with respect to the markers 8 L and 8 R.
- step 81 the CPU 30 first obtains operation information received from the controller 7 (step 81 ), and then proceeds to the next step. Since step 81 is identical with step 51 , a detailed description thereof will be omitted.
- the CPU 30 sets the past distance pastD to a currently set value of the current distance realD, and updates the past distance data Db6 (step 82 ) Then, the CPU 30 performs the distance calculation process (step 83 ), and proceeds to the next step. Since the distance calculation process at step 83 is identical with that of step 53 , a detailed description thereof will be omitted.
- the CPU 30 calculates the moving velocity velD, and updates the moving velocity data Db7 (step 84 ). To be specific, the CPU 30 calculates, by using the current distance realD calculated at step 83 and the past distance pastD set at step 82 , the moving velocity velD with the following equation.
- the CPU 30 refers to the key data Da3 to determine whether or not the drag button is currently pressed (step 85 ). When the drag button is pressed, the CPU 30 proceeds to step 86 . When the drag button is not pressed, the CPU 30 proceeds to step 88 .
- the CPU 30 calculates the virtual current distance virtualD, and updates the virtual current distance data Dc1. To be specific, the CPU 30 calculates, by using the moving velocity velD calculated at step 84 and the virtual current distance virtualD which is stored in the main memory 33 as the virtual current distance data Dc1, a new virtual current distance virtualD with the following equation.
- the CPU 30 calculates the scale value Scale, and updates the scale data Dc3 (step 87 ). To be specific, the CPU 30 calculates, by using the virtual current distance virtualD which is stored in the main memory 33 as the virtual current distance data Dc1, the scale value Scale with the following equation.
- the CPU 30 calculates camera matrix based on the scale value Scale, and updates the camera matrix data Dc4.
- the CPU 30 uses the camera matrix calculated at step 88 to draw an image, and displays the image on the monitor 2 (step 89 ).
- the CPU 30 determines whether or not to terminate displaying the image (step 90 ).
- the CPU 30 returns to step 81 , and repeats the above-described processes.
- the CPU 30 terminates displaying the image, the CPU 30 ends the game process illustrated in the flowchart. Since the process for calculating the camera matrix at step 88 and the drawing process at step 89 are identical with the processes at steps 62 and 63 , detailed descriptions thereof will be omitted.
- FIG. 20 is a subroutine showing in detail the distance calculation process.
- FIGS. 21 to 23 are used to describe a manner of calculating the current distance realD in the distance calculation process.
- size information in addition to the above-described first coordinate data Da1 and second coordinate data Da2 is obtained as the process result data.
- the size information indicates, e.g., a square measure, diameter or width of each of the target images of the markers 8 L and 8 R in the image taken by the image information calculation section 74 .
- the size information which indicates a diameter of the marker 8 L in the image taken by the image information calculation section 74
- the size information which indicates a diameter of the marker 8 R in the image taken by the image information calculation section 74
- the CPU 30 first obtains the first and second size data (step 101 ), and proceeds to the next step.
- the first size data indicates a diameter diamL of the target image of the marker 8 L in the taken image
- the second size data indicates a diameter diamR of the target image of the marker 8 R in the taken image.
- FIG. 21 shows a difference between the diameters diamL and diamR which occurs when the controller 7 is diagonally positioned with respect to the line connecting the markers 8 L and 8 R.
- the CPU 30 calculates a width w (see FIG. 22 ) which indicates, with respect to a setting position of the marker 8 L, a width for which the image pickup element 743 is able to take an image (step 102 ).
- the width w is obtained from the following equation.
- diamM is a diameter (actual diameter) of each of the markers 8 L and 8 R, and is prestored as a fixed value in the storage means (not shown) within the game apparatus 3 .
- the CPU 30 calculates a current distance realDL (see FIG. 22 ) which is a current distance between the marker 8 L and the image pickup element 743 (controller 7 ) (step 103 ).
- the current distance realDL is obtained from the following equation.
- the viewing angle ⁇ is a fixed angle
- the viewing angle ⁇ is prestored in the storage means (not shown) within the game apparatus 3 .
- the CPU 30 calculates another width w which indicates, with respect to a setting position of the marker 8 R, a width for which the image pickup element 743 is able to take an image (step 104 ).
- Said another width w is obtained from the following equation.
- the CPU 30 calculates a current distance realDR between the marker 8 R and the image pickup element 743 (controller 7 ) (step 105 ).
- the current distance realDR is obtained from the following equation.
- the CPU 30 calculates an angle ⁇ 1 by using the current distance realDL, current distance realDR and setting distance m between the markers 8 L and 8 R (step 106 ).
- the angle ⁇ 1 is between a line connecting the marker 8 L and controller 7 and a line connecting the markers 8 L and 8 R.
- the angle ⁇ 1 is obtained from the following equation based on the cosine theorem.
- the CPU 30 calculates the current distance realD (see FIG. 23 ) between the controller 7 and the middle point between the markers 8 L and 8 R (step 107 ), and then the distance calculation process in the subroutine ends.
- the current distance realD is obtained from the following equation based on the cosine theorem.
- angle ⁇ 2 is obtained between a line connecting the controller 7 and said middle point and the line connecting the markers 8 L and 8 R.
- the angle ⁇ 2 is obtained from the following equation based on the cosine theorem by using the current distance realD, current distance realDL and setting distance m.
- Obtaining the angle ⁇ 2 allows the CPU 30 to calculate an angular position of the controller 7 with respect to the markers 8 L and 8 R, and various processes can be performed in accordance with the angular position of the controller 7 .
- the controller 7 takes an image of a plurality of stationary imaging targets.
- the controller 7 may take an image of a single stationary imaging target. Then, an image displayed on the monitor is enlarged and reduced in accordance with target image data indicating a space between a plurality of target images in the taken image or target image data indicating a size of a single target image in the taken image.
- the target image data indicating the space between the plurality of target images is, e.g., a distance between the plurality of target images in the taken image
- the target image data indicating the size of the single target image contains measurements (e.g., diameter and width) of the single target image in the taken image.
- infrared lights emitted from the two markers 8 L and 8 R are a plurality of imaging targets, and a space (a distance mi) between target images of the two markers in a taken image is used as the target image data.
- a space (a distance mi) between target images of the two markers in a taken image is used as the target image data.
- an infrared light from a single marker e.g., the marker 8 L
- a size of the single marker in a taken image is used as the target image data
- a distance between a plurality of points on the single marker e.g., both ends of the single marker
- a diameter or the like e.g., diameter diamL
- a distance between the controller 7 and the imaging target(s) can be obtained by using the target image data, and an image displayed on the monitor can be enlarged or reduced in accordance with an increase or decrease in the distance between the controller 7 and the imaging target(s) or an increase or decrease in a moving speed of the controller 7 .
- a new type of intuitive operation based on an operation distance of the controller 7 is realized. Note that, the above-described steps of calculating distances are merely examples. The steps may be simplified by using the target image data as distances.
- the current distance realD is calculated by analyzing the image data of an image taken by the image pickup element 743 .
- the present invention can be realized as long as the current distance realD to a predetermined measuring target placed in a real space is measured in any manner.
- a supersonic sensor or a magnetic sensor may be used as means of calculating the current distance realD.
- the calculation of the current distance realD is not required to be performed if there is any manner in which a value related to a distance between the image pickup element 743 and an imaging target(s) is obtained without involving a calculation of the current distance realD, because operation inputs can be performed as long as such a value is obtained.
- data corresponding to a distance between the markers 8 L and 8 R in the taken image may be prepared in advance, and by using the data, the game process may be performed without calculating the current distance realD.
- the controller 7 and the game apparatus 3 are connected by radio communication.
- the controller 7 and game apparatus 3 may be electrically connected by a cable.
- the cable connected to the controller 7 is connected to a connecting terminal of the game apparatus 3 .
- a reception module provided within the game apparatus 3 may be used as the reception means.
- the transmission data received by the reception module is outputted to the CPU 30 via the predetermined bus.
- the image data of the image taken by the image pickup element 743 is analyzed to obtain the position coordinates, center of gravity coordinates and the like of the infrared lights emitted from the markers 8 L and 8 R.
- the process result data indicating such coordinates and the like is generated by the controller 7 , and transmitted to the game apparatus 3 .
- data, which can be obtained in the middle of a process performed by the controller 7 for generating the process result data may be transmitted from the controller 7 to the game apparatus 3 .
- the image data of the image taken by the image pickup element 743 may be transmitted from the controller 7 to the game apparatus 3 , and the process result data may be obtained as a result of analyzing the image data at the CPU 30 .
- the image processing circuit 744 provided within the controller 7 is no longer necessary.
- data as a result of partly analyzing the image data may be transmitted from the controller 7 to the game apparatus 3 .
- data indicating a brightness, position, square measure and the like obtained from partly performing the analysis of the image data may be transmitted from the controller 7 to the game apparatus 3 , and the rest of the analysis may be performed by the CPU 30 to obtain the process result data.
- the infrared lights from the markers 8 L and 8 R are the imaging targets of the image information calculation section 74 of the controller 7 .
- a different object may be used as an imaging target.
- one or more than three markers may be placed in the vicinity of the monitor 2 , and an infrared light(s) emitted therefrom may be used as an imaging target(s) of the image information calculation section 74 .
- the present invention may be realized by placing near the monitor 2 a single marker having a predetermined length between both ends thereof, and using the predetermined length as the setting distance m (see FIG. 16 ).
- the display screen of the monitor 2 or another illuminant may be used as the imaging target of the image information calculation section 74 .
- Various illuminants may be used as imaging targets of the image information calculation section 74 , by using a manner of calculating, based on a positional relationship between an imaging target and the display screen of the monitor, a position of the controller 7 in relation to the display screen of the monitor 2 .
- the shapes of the controller 7 and the operation sections 72 mounted thereon, the number of operation sections 72 , the positions in which the operation sections 72 are provided and the like in the above description are merely examples. The present invention can be realized even if these shapes, numbers, positions and the like are different from the above description.
- the position of the image information calculation section 74 of the controller 7 is not necessarily on the front face of the housing 71 .
- the image information calculation section 74 may be provided on any other face of the housing 71 such that the image calculation section 74 externally receives a light.
- the game apparatus 3 may be a general information processing apparatus such as a personal computer which is operated by an input device having image pickup means.
- a program executed by a computer of the general information processing apparatus is not limited to a game program typically used for playing a game.
- the executed program may be an all-purpose image processing program which is used for image processing by the general information processing apparatus.
- the image processing apparatus and the storage medium storing the image processing program according to the present invention realize highly flexible operations, and are useful for, e.g., performing image processing for a game which is played by using physically separated units.
- the image processing program according to the present invention is useful as a program for performing such image processing for a game.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- Image Processing (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
Predetermined image processing is performed in accordance with an input operation performed by an input device having image pickup means for taking an image of one or a plurality of imaging targets. Target image data, which is obtained from one target image of the one imaging target or a plurality of target images of the plurality of imaging targets in the image taken by the image pickup means and which indicates a distance between the plurality of target images or a size of the one target image, is sequentially obtained. A display image is enlarged and reduced in accordance with a change in the target image data. Then, the display image processed in such a manner is displayed on a display device.
Description
- The disclosure of Japanese Patent Application No. 2006-064439 is incorporated herein by reference.
- 1. Field of the Invention
- The present invention relates to an image processing apparatus and a storage medium storing an image processing program, and particularly to an image processing apparatus operated by using an input device having image pickup means and a storage medium storing an image processing program.
- 2. Description of the Background Art
- There have been disclosed position detection systems, in which a light source of an infrared light is used as a marker whose image is taken, and the taken image is analyzed to obtain a position aimed at by a user. One of such systems is disclosed in, e.g., Japanese Laid-Open Patent Publication No. 11-305935 (hereinafter, referred to as a patent document 1).
- The
patent document 1 discloses a game as an embodiment of a position detection system in which a player uses, as a game controller, a gun having an image pickup device mounted thereon, and performs shooting. In the system, four light sources each emitting an infrared light are respectively fixed, on four corners of a display screen, as imaging targets of the image pickup device, and a position on the display screen pointed by the gun is detected based on positions of the imaging targets in an image taken by the image pickup device. Then, a virtual shooting game is executed by using the position pointed by the gun as a position aimed at by the player. As disclosed in the 21st paragraph of thepatent document 1, in the case where the player is allowed to discretionarily change a distance between the image pickup device and a target (i.e., a distance between the image pickup device and the markers), the image pickup device is provided with a controllable zoom function, and the zoom function is controlled such that each of the markers in the taken image is always in an appropriate size, thereby detecting the aimed position precisely. - However, there has not been a technique in which a distance between an input device (game controller) and an imaging target is used for an input operation. For example, in the position detection system disclosed in the
patent document 1, the distance between the image pickup device and the markers is used merely for adjustment. In fact, changes in such a distance are negative factors which interfere with precise operation inputs. - Therefore, an object of the present invention is to provide an image processing apparatus and a storage medium storing an image processing program which realize highly flexible new operations performed by using an input device having image pickup means.
- The present invention has the following features to achieve the object mentioned above. Note that reference numerals, step numbers (here, “step” is abbreviated as “S”) and the like indicated between parentheses are merely provided to facilitate the understanding of the present invention in relation to the drawings and the later-described embodiment, rather than limiting the scope of the present invention in any way.
- A first aspect of the present invention is an image processing apparatus (3) for performing predetermined image processing in accordance with an input operation performed by an input device (7) including image pickup means (74) for taking an image of one or a plurality of imaging targets (8). The image processing apparatus comprises target image data obtaining means (S72), image processing means (S60, S62) and display control means (S63). The target image data obtaining means is means for sequentially obtaining, from one target image of the one imaging target or a plurality of target images of the plurality of imaging targets in the image taken by the image pickup means, target image data (mi, diamL, diamR) indicating a distance between the plurality of target images or a size of the one target image. The image processing means is means for performing at least either one of enlargement and reduction of a display image in accordance with a change in the target image data. The display control means is means for displaying on a display device (2) the display image processed by the image processing means. Here, the target image data contains, for example, a distance between the plurality of target images in the taken image or a size (such as a diameter or width) of the one target image in the taken image.
- In a second aspect of the present invention based on the first aspect, the image processing means includes distance calculation means (S53, S83) and enlarging/reducing means. The distance calculation means is means for, based on the target image data, sequentially calculating a distance (realD) between the image pickup means and the one or the plurality of the imaging targets. The enlarging/reducing means is means for performing at least either one of enlargement and reduction of the display image in accordance with a change in the distance.
- In a fifth aspect of the present invention based on the second aspect, the image processing means performs at least either one of enlargement and reduction of the display image in accordance with the change which occurs, during a predetermined time period, in the distance.
- In an eighth aspect of the present invention based on the fifth aspect, the input device includes at least one pressable operation key (72) and outputs at least operation information (Da3) corresponding to a state of the operation key being pressed. The image processing apparatus further comprises operation information obtaining means (S51, S81) and storage means (S56). The operation information obtaining means is means for obtaining the operation information. The storage means is means for, when the operation information indicates that the operation key has just started being pressed, storing the distance calculated by the distance calculation means (33). The image processing means includes difference calculation means (S58) for obtaining the change in the distance, which occurs during the predetermined time period which is a time period during which the operation key is pressed, by sequentially calculating a difference (moveD) between the distance (initD) stored in the storage means and the distance (realD) which is calculated, while the operation information indicates that the operation key is currently pressed, by the distance calculation means. The image processing means performs at least either one of enlargement and reduction of the display image in accordance with the difference.
- In third, sixth and ninth aspects of the present invention respectively based on the second, fifth and eighth aspect, the image processing means enlarges the display image in accordance with an increase in the distance, and reduces the display image in accordance with a decrease in the distance (S>0).
- In fourth, seventh and tenth aspects of the present invention respectively based on the second, fifth and eighth aspect, the image processing means reduces the display image in accordance with an increase in the distance, and increases the display image in accordance with a decrease in the distance (S<0).
- In an eleventh aspect of the present invention based on the second aspect, the image processing apparatus further comprises designated coordinates calculation means for, based on a position of the one target image or positions of the plurality of target images in the taken image, calculating designated coordinates associated with a display area of the display device. The image processing means moves the display image in accordance with a change in the designated coordinates (
FIG. 13A ). - In a twelfth aspect of the present invention based on the second aspect, the image processing apparatus further comprises tilt calculation means for, based on a position of the one target image or positions of the plurality of target images in the taken image, calculating a tilt of the input device. The image processing means rotates the display image in accordance with a change in the tilt (
FIG. 13B ). - In a thirteenth aspect of the present invention based on the second aspect, the image processing means performs at least either one of enlargement and reduction of the display image by sequentially changing, in accordance with the change in the distance, a position of a virtual camera placed in a virtual space.
- In a fourteenth aspect of the present invention based on the second aspect, the image processing means performs at least either one of enlargement and reduction of the display image by sequentially changing, in accordance with the change in the distance, a display size of a two-dimensional image.
- In a fifteenth aspect of the present invention based on the first aspect, the image processing apparatus further comprises velocity calculation means (S84) for, based on the target image data, sequentially calculating a moving velocity (velD) of the input device with respect to the one or the plurality of imaging targets. The image processing means performs at least either one of enlargement and reduction of the display image in accordance with the moving velocity.
- A sixteenth aspect of the present invention is a storage medium storing an image processing program executed by a computer (30) performing image processing in accordance with an input operation performed by an input device including image pickup means for taking an image of one or a plurality of imaging targets. The image processing program causes the computer to perform a target image data obtaining step, an image processing step and a display control step. The target image data obtaining step is a step of sequentially obtaining, from one target image of the one imaging target or a plurality of target images of the plurality of imaging targets in the image taken by the image pickup means, target image data indicating a distance between the plurality of target images or a size of the one target image. The image processing step is a step of performing at least either one of enlargement and reduction of a display image in accordance with a change in the target image data. The display control step is a step of displaying on a display device the display image processed at the image processing step.
- In a seventeenth aspect based on the sixteenth aspect, the image processing step includes a distance calculation step and an enlarging/reducing step. The distance calculation step is a step of, based on the target image data, sequentially calculating a distance between the image pickup means and the one or the plurality of the imaging targets. The enlarging/reducing step is a step of performing at least either one of enlargement and reduction of the display image in accordance with a change in the distance.
- In a twentieth aspect based on the seventeenth aspect, the image processing step performs at least either one of enlargement and reduction of the display image in accordance with the change which occurs, during a predetermined time period, in the distance.
- In a twenty-third aspect based on the twentieth aspect, the input device includes at least one pressable operation key and outputs at least operation information corresponding to a state of the operation key being pressed. The image processing program further causes the computer to perform an operation information obtaining step and a storage control step. The operation information obtaining step is a step of obtaining the operation information. The storage control step is a step of, when the operation information indicates that the operation key has just started being pressed, storing in a memory the distance calculated at the distance calculation step. The image processing step includes a difference calculation step of obtaining the change in the distance, which occurs during the predetermined time period which is a time period during which the operation key is pressed, by sequentially calculating a difference between the distance stored in the memory and the distance which is calculated, while the operation information indicates that the operation key is currently pressed, at the distance calculation step. The image processing step performs at least either one of enlargement and reduction of the display image in accordance with the difference.
- In eighteenth, twenty-first and twenty-fourth aspects respectively based on the seventeenth, twentieth and twenty-third aspects, at the image processing step, the display image is enlarged in accordance with an increase in the distance, and reduced in accordance with a decrease in the distance.
- In nineteenth, twenty-second and twenty-fifth aspects respectively based on the seventeenth, twentieth and twenty-third aspects, at the image processing step, the display image is reduced in accordance with an increase in the distance, and enlarged in accordance with a decrease in the distance.
- In a twenty-sixth aspect based on the seventeenth aspect, the image processing program further causes the computer to perform a designated coordinates calculation step of, based on a position of the one target image or positions of the plurality of target images in the taken image, calculating designated coordinates associated with a display area of the display device. At the image processing step, the display image is moved in accordance with a change in the designated coordinates.
- In a twenty-seventh aspect based on the seventeenth aspect, the image processing program further causes the computer to perform a tilt calculation step of, based on a position of the one target image or positions of the plurality of target images in the taken image, calculating a tilt of the input device. At the image processing step, the display image is rotated in accordance with a change in the tilt.
- In a twenty-eighth aspect based on the seventeenth aspect, the image processing step performs at least either one of enlargement and reduction of the display image by sequentially changing, in accordance with the change in the distance, a position of a virtual camera placed in a virtual space.
- In a twenty-ninth aspect based on the seventeenth aspect, the image processing step performs at least either one of enlargement and reduction of the display image by sequentially changing, in accordance with the change in the distance, a display size of a two-dimensional image.
- In a thirtieth aspect based on the sixteenth aspect, the image processing program further causes the computer to perform a velocity calculation step of, based on the target image data, sequentially calculating a moving velocity of the input device with respect to the one or the plurality of imaging targets. The image processing step performs at least either one of enlargement and reduction of the display image in accordance with the moving velocity.
- According to the above first aspect, the display image may be enlarged or reduced in accordance with the target image data which is obtained from the one or the plurality of target images and which indicates a space between the plurality of target images or the size of the one target image (i.e., the distance between the plurality of target images of the plurality of imaging targets in the taken image, or measurements such as a diameter, width, square measure and the like of the one target image of the one imaging target in the taken image). This realizes new and intuitive image processing operations.
- According to the above second aspect, the distance between the input device and the imaging target(s) is obtained from the target image data of the one or the plurality of target images. By using the distance, new and intuitive operations are realized.
- According to the above fifth aspect, controlling the enlargement and reduction of the display image is easy for a user since a time period during which the enlargement and reduction of the display image is performed is specified.
- According to the above eighth aspect, controlling the enlargement and reduction of the display image is easy for a user, since the time period during which the enlargement and reduction of the display image is performed is specified as the time period during which the operation key is pressed.
- According to the above third, sixth and ninth aspects, a user is allowed to perform an intuitive operation which enables the user to feel as if the user were grabbing an image displayed on the display device.
- According to the above fourth, seventh and tenth aspects, a user is allowed to perform an intuitive operation which enables the user to feel as if the user were operating a camera for taking an image to be displayed on the display device.
- According to the above eleventh aspect, a user is allowed to perform an operation to grab an image displayed on the display device and move the image from side to side and up and down. Further, a user is allowed to perform a more complicated and intuitive operation by using the position of the input device in addition to the distance between the input device and the imaging target(s).
- According to the above twelfth aspect, a user is allowed to perform an operation to grab an image displayed on the display device and rotate the image. Further, a user is allowed to perform a more complicated and intuitive operation by using the tilt of the input device in addition to the distance between the input device and the imaging target(s).
- According to the above thirteenth aspect, when an image of an object in the virtual space is displayed on the display device, the enlargement and reduction of the displayed image can be easily performed.
- According to the above fourteenth aspect, when a two-dimensional image is displayed on the display device, the enlargement and reduction of the displayed two-dimensional image can be easily performed.
- According to the above fifteenth aspect, since the moving speed of the input device with respect to the imaging target(s) is obtained from the target image data of the target image(s), a new and intuitive operation using the moving speed is realized.
- The storage medium storing the image processing program according to the present invention produces same effects as those of the above-described image processing apparatus when the image processing program is executed by a computer.
- These and other objects, features, aspects and advantages of the present invention will become more apparent from the following detailed description of the present invention when taken in conjunction with the accompanying drawings.
-
FIG. 1 is an external view illustrating agame system 1 according to an embodiment of the present invention; -
FIG. 2 is a functional block diagram of agame apparatus 3 shown inFIG. 1 ; -
FIG. 3 is an isometric view of acontroller 7 ofFIG. 1 seen from a top rear side thereof; -
FIG. 4 is an isometric view of thecontroller 7 ofFIG. 1 seen from a bottom rear side thereof; -
FIG. 5A is an isometric view illustrating a state where an upper casing of thecontroller 7 ofFIG. 3 is removed; -
FIG. 5B is an isometric view illustrating a state where a lower casing of thecontroller 7 ofFIG. 4 is removed; -
FIG. 6 is a block diagram showing an internal structure of thecontroller 7 ofFIG. 3 ; -
FIG. 7 is an illustration briefly showing a state where a player uses thecontroller 7 ofFIG. 3 to perform game operations; -
FIG. 8 shows an exemplary state of a player holding thecontroller 7 with a right hand as seen from a front surface side of thecontroller 7; -
FIG. 9 shows an exemplary state of a player holding thecontroller 7 with a right hand as seen from a left side of thecontroller 7; -
FIG. 10 illustrates viewing angles of an imageinformation calculation section 74 andmarkers -
FIG. 11 is a top view showing an example in which a player U operates thecontroller 7 in a front-rear direction with respect to themarkers -
FIGS. 12A to 12C show exemplary images which are displayed on themonitor 2 in accordance with operations performed by the player U shown inFIG. 11 ; -
FIGS. 13A and 135 show examples of displaying an object OBJ on themonitor 2 when thecontroller 7 is moved from side to side and up and down and when thecontroller 7 is twisted to the right and left; -
FIG. 14 shows an example of main data stored in amain memory 33 of thegame apparatus 3; -
FIG. 15 is a flowchart showing an exemplary sequence of a game process performed by thegame apparatus 3; -
FIG. 16 is a subroutine showing in detail an exemplary distance calculation process atstep 53 ofFIG. 15 ; -
FIG. 17 is a diagram used to describe an exemplary manner of calculating a current distance realD; -
FIG. 18 shows another example of main data stored in themain memory 33 of thegame apparatus 3; -
FIG. 19 is a flowchart showing another exemplary sequence of the game process performed by thegame apparatus 3; -
FIG. 20 is a subroutine showing in detail another exemplary distance calculation process; -
FIG. 21 is a diagram used to describe another exemplary manner of calculating the current distance realD; -
FIG. 22 is also a diagram used to describe said another exemplary manner of calculating the current distance realD; and -
FIG. 23 is also a diagram used to describe said another exemplary manner of calculating the current distance realD. - With reference to
FIG. 1 , an image processing apparatus according to one embodiment of the present invention will be described. Hereinafter, in order to give a specific description, agame system 1 using the image processing apparatus according to the present invention will be used as an example.FIG. 1 is an external view illustrating thegame system 1. In the following description, thegame system 1 uses a stationary game apparatus which is an example of the image processing apparatus according to the present invention. - As shown in
FIG. 1 , thegame system 1 comprises a stationary game apparatus 3 (hereinafter, simply referred to as a “game apparatus 3”) connected via a connection cord to a display 2 (hereinafter, referred to as a “monitor 2”) such as a home-use TV receiver having aspeaker 2 a, and acontroller 7 for giving operation information to thegame apparatus 3. Thegame apparatus 3 is connected to a receivingunit 6 via a connection terminal. The receivingunit 6 receives transmission data which is wirelessly transmitted from thecontroller 7. Thecontroller 7 and thegame apparatus 3 are connected to each other by radio communication. On thegame apparatus 3, anoptical disc 4 as an example of an exchangeable information storage medium is detachably mounted. Provided on a top main surface of thegame apparatus 3 are a power ON/OFF switch, a game process reset switch, and an OPEN switch for opening a top lid of thegame apparatus 3. When a player presses the OPEN switch, the lid opens, thereby allowing theoptical disc 4 to be mounted or dismounted. - On the
game apparatus 3, anexternal memory card 5 is detachably mounted when necessary. Theexternal memory card 5 has a backup memory or the like mounted thereon for fixedly storing saved data or the like. Thegame apparatus 3 executes a game program or the like stored on theoptical disc 4, and displays a result thereof as a game image on themonitor 2. It is assumed here that an image processing program of the present invention is a part of the game program stored in theoptical disc 4. Thegame apparatus 3 can also reproduce a state of a game played in the past, by using the saved data stored on theexternal memory card 5, and display on themonitor 2 a game image of the reproduced state. A player playing with thegame apparatus 3 can enjoy the game by operating thecontroller 7 while watching the game image displayed on themonitor 2. - By using the technology of, for example, Bluetooth (registered trademark), the
controller 7 wirelessly transmits the transmission data from acommunication section 75 included therein (described later) to thegame apparatus 3 connected to the receivingunit 6. Thecontroller 7 is operation means for mainly operating a player object appearing in a game space displayed on themonitor 2. Thecontroller 7 includes an operation section having a plurality of operation buttons, a key, a stick and the like. As described later in detail, thecontroller 7 also includes an imaginginformation calculation section 74 for taking an image viewed from thecontroller 7. As exemplary imaging targets of the imaginginformation calculation section 74, twoLED modules markers monitor 2. Themarkers monitor 2. - With reference to
FIG. 2 , a structure of thegame apparatus 3 will be described.FIG. 2 is a functional block diagram of thegame apparatus 3. - As shown in
FIG. 2 , thegame apparatus 3 includes, for example, a RISC CPU (central processing unit) 30 for executing various types of programs. TheCPU 30 executes a boot program stored in a boot ROM (not shown) to, for example, initialize memories such as amain memory 33, and then executes a game program stored on theoptical disc 4 to perform a game process or the like in accordance with the game program. TheCPU 30 is connected via amemory controller 31 to a GPU (Graphics Processing Unit) 32, themain memory 33, a DSP (Digital Signal Processor) 34, and an ARAM (Audio RAM) 35. Thememory controller 31 is connected via a predetermined bus to a controller I/F (interface) 36, video I/F 37, external memory I/F 38, audio I/F 39, and a disc I/F 41. The controller I/F 36, video I/F 37, external memory I/F 38, audio I/F 39 and the disc I/F 41 are respectively connected to a receivingunit 6, themonitor 2, theexternal memory card 5, thespeaker 2 a and adisc drive 40. - The
GPU 32 performs image processing based on an instruction from theCPU 30. TheGPO 32 includes, for example, a semiconductor chip for performing a calculation process necessary for displaying 3D graphics. TheGPU 32 performs image processing by using a memory dedicated for image processing (not shown) and a part of a storage area of themain memory 33. TheGPU 32 generates, by using such memories, game image data or moving images to be displayed on themonitor 2, and outputs the generated data or moving images to themonitor 2 via thememory controller 31 and video I/F 37 as necessary. - The
main memory 33 is a storage area used by theCPU 30, which stores as necessary a game program or the like used for processes performed by theCPU 30. For example, themain memory 33 stores a game program read from theoptical disc 4 by theCPU 30 and various types of data. The game program and the various types of data which are stored in themain memory 33 are executed by theCPU 30. - The
DSP 34 processes sound data and the like generated by theCPU 30 during the execution of the game program. TheDSP 34 is connected to theARAM 35 for storing the sound data and the like. TheARAM 35 is used when theDSP 34 performs a predetermined process (for example, when theDSP 34 stores the game program or sound data which has been previously read). TheDSP 34 reads the sound data stored in theARAM 35, and outputs the sound data to thespeaker 2 a of themonitor 2 via thememory controller 31 and the audio I/F 39. - The
memory controller 31 comprehensively controls data transfer, and is connected to the above-described various I/Fs. The controller I/F 36 includes, for example, four controllers I/F 36 a to 36 d, and communicably connects, by connectors of the controllers I/F 36 a to 36 d, thegame apparatus 3 to an external device which is engageable with the connectors. For example, the receivingunit 6 is engaged with such connectors and is connected to thegame apparatus 3 via the controller I/F 36. As described above, the receivingunit 6 receives the transmission data from thecontroller 7, and outputs the transmission data to theCPU 30 via the controller I/F 36. The video I/F 37 is connected to themonitor 2. The external memory I/F 38 is connected to theexternal memory card 5, thereby being able to access a backup memory or the like provided within theexternal memory card 5. The audio I/F 39 is connected to thespeaker 2 a built in themonitor 2, such that the sound data read by theDSP 34 from theARAM 35 or sound data directly outputted from thedisc drive 40 is outputted from thespeaker 2 a. The disc I/F 41 is connected to thedisc drive 40. Thedisc drive 40 reads data stored in a predetermined reading position of theoptical disc 4, and outputs the read data to the bus of thegame apparatus 3 or the audio I/F 39. - With reference to
FIGS. 3 and 4 , thecontroller 7 will be described.FIG. 3 is an isometric view of thecontroller 7 seen from a top rear side thereof.FIG. 4 is an isometric view of thecontroller 7 seen from a bottom rear side thereof. - As shown in
FIGS. 3 and 4 , thecontroller 7 includes ahousing 71 formed by plastic molding or the like. Thehousing 71 has a plurality ofoperation sections 72. Thehousing 71 has a generally parallelepiped shape extending in a longitudinal direction from front to rear. The overall size of thehousing 71 is small enough to be held by one hand of an adult or even a child. - At the center of a front part of a top surface of the
housing 71, a cross key 72 a is provided. The cross key 72 a is a cross-shaped four-direction push switch. The cross key 72 a includes operation portions corresponding to four directions indicated by arrows (front, rear, right and left), which are respectively located on cross-shaped projecting portions arranged at intervals of 90 degrees. A player selects one of the front, rear, right and left directions by pressing one of the operation portions of the cross key 72 a. Through an operation of the cross key 72 a, the player can, for example, indicate a direction in which a player character or the like appearing in a virtual game world is to move, or a direction in which a cursor is to move. - The cross key 72 a is an operation section for outputting an operation signal in accordance with the above-described direction input operation performed by the player. Such an operation section may be provided in another form. For example, the cross key 72 a may be replaced with a composite switch including a push switch having a ring-shaped four-direction operation section and a center switch provided at the center thereof. Alternatively, the cross key 72 a may be replaced with an operation section which includes an inclinable stick projecting from a top surface of the
housing 71 and which outputs an operation signal in accordance with an inclining direction of the stick. Still alternatively, the cross key 72 a may be replaced with an operation section which includes a disc-shaped member horizontally slidable and which outputs an operation signal in accordance with a sliding direction of the disc-shaped member. Still alternatively, the cross key 72 a may be replaced with a touch pad. Still alternatively, the cross key 72 a may be replaced with an operation section which includes switches indicating at least four directions (front, rear, right and left) and which outputs an operation signal in accordance with any of the switches pressed by the player. - Behind the cross key 72 a on the top surface of the
housing 71, a plurality ofoperation buttons 72 b to 72 g are provided. Theoperation buttons 72 b to 72 g are each an operation section for, when the player presses a head thereof, outputting a corresponding operation signal. For example, functions as an X button, a Y button and a B button are assigned to theoperation buttons 72 b to 72 d. Also, functions as a select switch, a menu switch and a start switch are assigned to theoperation buttons 72 e to 72 g, for example. Although various functions are assigned to theoperation buttons 72 b to 72 g in accordance with the game program executed by thegame apparatus 3, this will not be described in detail because the functions are not directly relevant to the present invention. In an exemplary arrangement shown inFIG. 3 , theoperation buttons 72 b to 72 d are arranged in a line at the center in a front-rear direction on the top surface of thehousing 71. Theoperation buttons 72 e to 72 g are arranged on the top surface of thehousing 71 in a line in a left-right direction between theoperation buttons operation button 72 f has a top surface thereof buried in the top surface of thehousing 71, so as not to be inadvertently pressed by the player. - In front of the cross key 72 a on the top surface of the
housing 71, anoperation button 72 h is provided. Theoperation button 72 h is a power switch for turning on and off the power to thegame apparatus 3 by remote control. Theoperation button 72 h also has a top surface thereof buried in the top surface of thehousing 71, so as not to be inadvertently pressed by the player. - Behind the
operation button 72 c on the top surface of thehousing 71, a plurality ofLEDs 702 are provided. A controller type (number) is assigned to thecontroller 7 such that thecontroller 7 is distinguishable from theother controllers 7. Here, theLEDs 702 are used for, e.g., informing the player about the controller type which is currently set for thecontroller 7. Specifically, when thecontroller 7 transmits the transmission data to the receivingunit 6, one of the plurality ofLEDs 702 which corresponds to the controller type of thecontroller 7 is lit up. - On a bottom surface of the
housing 71, a recessed portion is formed. As described later in detail, the recessed portion is formed in a position in which an index finger or middle finger of the player is located when the player holds thecontroller 7. On a rear slope surface of the recessed portion, anoperation button 72 i is provided. Theoperation button 72 i is an operation section acting as, for example, an A button. Theoperation button 72 i is used, for example, as a trigger switch in a shooting game, or for attracting attention of a player object to a predetermined object. In the present invention, theoperation button 72 i acts as a drag button for, e.g., grabbing an object displayed on themonitor 2. When the player presses theoperation button 72 i, an object displayed on themonitor 2 is grabbed. - On a front surface of the
housing 71, animage pickup element 743 constituting a part of the imaginginformation calculation section 74 is provided. The imaginginformation calculation section 74 is a system for analyzing image data of an image taken by thecontroller 7, thereby identifying an area having a high brightness in the image and calculating a position of a center of gravity, a size and the like of the area. The imaginginformation calculation section 74 has, for example, a maximum sampling period of about 200 frames/sec, and therefore can trace and analyze even a relatively fast motion of thecontroller 7. A configuration of the imaginginformation calculation section 74 will be described later in detail. On a rear surface of thehousing 71, aconnector 73 is provided. Theconnector 73 is, for example, a 32-pin edge connector, and is used for engaging and connecting thecontroller 7 with a connection cable. - With reference to
FIGS. 5A and 5B , an internal structure of thecontroller 7 will be described.FIG. 5A is an isometric view illustrating a state where an upper casing (a part of the housing 71) of thecontroller 7 is removed.FIG. 5B is an isometric view illustrating a state where a lower casing (a part of the housing 71) of thecontroller 7 is removed.FIG. 5B shows a reverse side of asubstrate 700 shown inFIG. 5A . - As shown in
FIG. 5A , thesubstrate 700 is fixed inside thehousing 71. On a top main surface of thesubstrate 700, theoperation buttons 72 a to 72 h, anacceleration sensor 701, theLEDs 702, aquartz oscillator 703, awireless module 753, anantenna 754 and the like are provided. These elements are connected to a microcomputer 751 (seeFIG. 6 ) by lines (not shown) formed on thesubstrate 700 and the like. Thewireless module 753 andantenna 754 allow thecontroller 7 to act as a wireless controller. Thequartz oscillator 703 generates a reference clock of themicrocomputer 751 described later. - As shown in
FIG. 5B , at a front edge of a bottom main surface of thesubstrate 700, the imageinformation calculation section 74 is provided. The imageinformation calculation section 74 includes aninfrared filter 741, alens 742, theimage pickup element 743 and animage processing circuit 744 which are located in this order from the front surface of thecontroller 7. These elements are attached to the bottom main surface of thesubstrate 700. At a rear edge of the bottom main surface of thesubstrate 700, theconnector 73 is attached. Theoperation button 72 i is attached on the bottom main surface of thesubstrate 700 behind the imageinformation calculation section 74, andcells 705 are accommodated behind theoperation button 72 i. On the bottom main surface of thesubstrate 700 between theconnector 73 and thecells 705, avibrator 704 is attached. The vibrator 709 may be, for example, a vibration motor or a solenoid. Thecontroller 7 is vibrated by an actuation of thevibrator 704, and vibration is conveyed to the player holding thecontroller 7. Thus, a so-called vibration-feedback game is realized. - With reference to
FIG. 6 , an internal structure of thecontroller 7 will be described.FIG. 6 is a block diagram showing the internal structure of thecontroller 7. - As shown in
FIG. 6 , thecontroller 7 includes therein, in addition to the above-describedoperation section 72 and imageinformation calculation section 74, thecommunication section 75 andacceleration sensor 701. - The imaging
information calculation section 74 includes theinfrared filter 741,lens 742,image pickup element 743 and theimage processing circuit 744. Theinfrared filter 741 allows, among lights incident on the front surface of thecontroller 7, only an infrared light to pass therethrough. Thelens 742 converges the infrared light which has passed through theinfrared filter 741, and outputs the infrared light to theimage pickup element 743. Theimage pickup element 743 is a solid-state image pickup element such as a CMOS sensor or a CCD. Theimage pickup element 743 takes an image of the infrared light collected by thelens 742. In other words, theimage pickup element 743 takes an image of only the infrared light which has passed through theinfrared filter 741. Then, theimage pickup element 743 generates image data of the image. The image data generated by theimage pickup element 743 is processed by theimage processing circuit 744. Specifically, theimage processing circuit 744 processes the image data obtained from theimage pickup element 743, detects an area of the image which has a high brightness, and outputs, to thecommunication section 75, process result data indicating, e.g., a calculated coordinate position, square measure, diameter and a width of the area. The imaginginformation calculation section 74 is fixed to thehousing 71 of thecontroller 7. An imaging direction of the imaginginformation calculation section 74 can be changed by changing a facing direction of thehousing 71. As described later in detail, a signal corresponding to a position and motion of thecontroller 7 is obtained in accordance with the process result data outputted by the imaginginformation calculation section 74. - The
acceleration sensor 701 detects acceleration of thecontroller 7 for three axial directions of thecontroller 7, i.e., an up-down direction, a left-right direction, and a front-rear direction of thecontroller 7. As theacceleration sensor 701, an acceleration sensor for detecting the acceleration of thecontroller 7 in two of the three axial directions, i.e., the up-down direction and left-right direction, may be alternatively used in accordance with a necessary type of the operation signal. Data indicating the acceleration detected by theacceleration sensor 701 is outputted to thecommunication section 75. - As a non-limiting example, such a three-axis or two-
axis acceleration sensor 701 may be of the type available from Analog Devices, Inc. or STMicroelectronics N.V. Preferably, theacceleration sensor 701 is an electrostatic capacitance or capacitance-coupling type that is based on silicon micro-machined MEMS (microelectromechanical systems) technology. However, any other suitable accelerometer technology (e.g., piezoelectric type or piezoresistance type) now existing or later developed may be used to provide the three-axis or two-axis acceleration sensor 701. - As one skilled in the art understands, accelerometers, as used in the
acceleration sensor 701, are only capable of detecting acceleration along a straight line (linear acceleration) corresponding to each axis of the acceleration sensor. In other words, the direct output of theacceleration sensor 701 is limited to signals indicative of linear acceleration (static or dynamic) along each of the two or three axes thereof. As a result, theacceleration sensor 701 cannot directly detect movement along a non-linear (e.g. arcuate) path, rotation, rotational movement, angular displacement, tilt, position, attitude or any other physical characteristic. - However, through additional processing of the linear acceleration signals outputted from the
acceleration sensor 701, additional information relating to thecontroller 7 can be inferred or calculated, as one skilled in the art will readily understand from the description herein. For example, by detecting static, linear acceleration (i.e., gravitational acceleration), the linear acceleration output of theacceleration sensor 701 can be used to infer tilt of an object (controller 7) relative to the gravity vector by correlating tilt angles with detected linear acceleration. In this way, theacceleration sensor 701 can be used in combination with the microcomputer 751 (or another processor) to determine tilt, attitude or position of thecontroller 7. Similarly, various movements and/or positions of thecontroller 7 can be calculated or inferred through processing of the linear acceleration signals generated by theacceleration sensor 701 when thecontroller 7 including theacceleration sensor 701 is subjected to dynamic accelerations by, for example, the hand of a user, as explained herein. In another embodiment, theacceleration sensor 701 may include an embedded signal processor or other type of dedicated processor for performing any desired processing of the acceleration signals outputted from accelerometers therein prior to outputting signals to themicrocomputer 751. For example, the embedded or dedicated processor could convert the detected acceleration signal to a corresponding tilt angle when the acceleration sensor is intended to detect static acceleration (i.e., gravitational acceleration). - In another exemplary embodiment, the
acceleration sensor 701 may be replaced with a gyro-sensor of any suitable technology incorporating, for example, a rotating or vibrating element. Exemplary MEMS gyro-sensors that may be used in this embodiment are available from Analog Devices, Inc. Unlike theacceleration sensor 701, a gyro-sensor is capable of directly detecting rotation (or angular rate) around an axis defined by a gyroscopic element (or elements) therein. Thus, due to fundamental differences between a gyro-sensor and an acceleration sensor (e.g., angular-based output and vector-based output), corresponding changes need to be made to the processing operations that are performed on the output signals from these devices depending on which device is selected for a particular application. Since characteristics of a gyroscope as well as fundamental differences between an accelerometer and a gyroscope are well known by the one skilled in the art, further descriptions thereof will be omitted. Although the gyro-sensor has the advantage of being capable of directly detecting rotation, the acceleration sensor is generally a cost-effective option as compared with the gyro-sensor when used for the controller of the present embodiment. - The
communication section 75 includes themicrocomputer 751, amemory 752, thewireless module 753 and theantenna 754. Themicrocomputer 751 controls thewireless module 753 for transmitting the transmission data while using thememory 752 as a storage area during processing. - Data from the
controller 7 such as an operation signal (key data) from theoperation section 72, acceleration signals (acceleration data) from theacceleration sensor 701, and the process result data from the imaginginformation calculation section 74 are outputted to themicrocomputer 751. Themicrocomputer 751 temporarily stores inputted data (the key data, acceleration data and process result data) in thememory 752 as the transmission data which is to be transmitted to the receivingunit 6. Radio transmission from thecommunication section 75 to the receivingunit 6 is performed at predetermined time intervals. Since the game process is generally performed at a cycle of 1/60 sec, the radio transmission needs to be performed at a cycle of a shorter time period. Specifically, the game process is performed at a cycle of 16.7 ms ( 1/60 sec), and a transmission interval of thecommunication section 75 structured using the Bluetooth (registered trademark) technology is 5 ms. At a timing of performing a radio transmission to the receivingunit 6, themicrocomputer 751 outputs, to thewireless module 753, the transmission data stored in thememory 752 as a series of pieces of operation information. Thewireless module 753 uses, for example, the Bluetooth (registered trademark) technology to radiate, with a carrier wave having a predetermined frequency, the series of pieces of operation information from theantenna 754 as a radio signal. Thus, the key data from theoperation section 72, the acceleration data from theacceleration sensor 701, and the process result data from the imaginginformation calculation section 74 are transmitted from thecontroller 7. The receivingunit 6 of thegame apparatus 3 receives the radio signal, and thegame apparatus 3 demodulates or decodes the radio signal to obtain the series of pieces of operation information (the key data, acceleration data and process result data). In accordance with the series of pieces of obtained operation information and the game program, theCPU 30 of thegame apparatus 3 performs the game process. In the case where thecommunication section 75 is structured using the Bluetooth (registered trademark) technology, thecommunication section 75 can have a function of receiving transmission data which is wirelessly transmitted from the other devices. - As shown in
FIG. 7 , in order to play a game with thegame system 1 by using thecontroller 7, a player holds thecontroller 7 with one hand (for example, a right hand) (seeFIGS. 8 and 9 ). The player holds thecontroller 7 so as to point the front surface of the controller 7 (that is, a side having an entrance through which a light is incident on the imaginginformation calculation section 74 taking an image of the light) to themonitor 2. Twomarkers monitor 2. Themarkers monitor 2, and the infrared lights are used as imaging targets of the imaginginformation calculation section 74. - When a player holds the
controller 7 so as to point the front surface thereof to themonitor 2, the infrared lights outputted from the twomarkers information calculation section 74. Theimage pickup element 743 takes an image of the infrared lights which are incident on theimage pickup element 743 through theinfrared filter 741 and thelens 742, and theimage processing circuit 744 processes the taken image. The imaginginformation calculation section 74 detects, from the taken image, infrared components outputted by themarkers markers markers image processing circuit 744 analyzes image data of the image taken by theimage pickup element 743, and eliminates, from the size information about the taken image, information which is not about the infrared lights outputted by themarkers markers information calculation section 74 obtains positional information which is information about a high brightness position such as the center of gravity of each of the identified points having a high brightness, and outputs the positional information as the process result data. Here, the positional information outputted as the process result data may be coordinate values indicating the brightness position, which are obtained by setting a predetermined reference point (for example, the center or the upper left corner of the taken image) in the taken image as a coordinate origin. Alternatively, the brightness position which is previously identified at a predetermined timing may be set as a reference point, and a vector indicating a positional difference between the reference point and the brightness position currently identified may be outputted as the process result data. That is, in the case where a predetermined reference point is set in the image taken by theimage pickup element 743, the positional information about each of the target images in the taken image is a parameter indicating a positional difference from the predetermined reference point. When such positional information is transmitted to thegame apparatus 3, thegame apparatus 3 can obtain, based on a difference between a value representing the reference point and a value representing the positional information about each of the target images, an amount by which a signal changes in accordance with a motion, posture, position and the like of the imaging information calculation section 74 (i.e., the controller 7) with respect to themarkers communication section 75, is changed in accordance with the motion of thecontroller 7, and a direction or coordinates corresponding to such a change of the position of each point having a high brightness is transmitted from thecommunication section 75. Upon receiving the direction or coordinates from thecommunication section 75, thegame apparatus 3 recognizes and uses the direction or coordinates as an input from thecommunication section 75 which corresponds to a moving direction of thecontroller 7 in a three-dimensional space. In an exemplary game process described later, the imaginginformation calculation section 74 obtains at least coordinates of the center of gravity of a point having a high brightness for each of the target images of themarkers - Also, the image
information calculation section 74 obtains the size information indicating any of the square measure, diameter and width of each of the target images of themarkers game apparatus 3 to analyze in detail the position of thecontroller 7 in 3D space. To be specific, even in the case where an image is taken by the imageinformation calculation section 74 positioned diagonally from themarkers monitor 2 operates thecontroller 7, thegame apparatus 3 is able to obtain a distance between thecontroller 7 and themarkers game apparatus 3 obtains as the process result data the size information in addition to the above-described center of gravity coordinates. - Thus, the imaging
information calculation section 74 of thecontroller 7 takes images of the stationary markers (infrared lights from the twomarkers game apparatus 3 processes data outputted by thecontroller 7 during the game process. This enables an operation input to be performed in accordance with the motion, posture, position and the like of thecontroller 7. Therefore, an operation input, which is different from an operation input made by pressing an operation button or using an operation key, is intuitively performed. As described above, since the markers are provided in the vicinity of the display screen of themonitor 2, the motion, posture, position and the like of thecontroller 7 with respect to the display screen of themonitor 2 can be easily calculated based on positions of thecontroller 7 with respect to the markers. That is, the process result data used for obtaining the motion, posture, position and the like of thecontroller 7 can be used as an operation input which directly affects an object displayed on the display screen of themonitor 2. Note that, in thegame system 1, the distance between thecontroller 7 and themarkers markers monitor 2. This will be described later in detail. - With reference to
FIGS. 8 and 9 , a state of a player holding thecontroller 7 with one hand will be described.FIG. 8 shows an exemplary state of a player holding thecontroller 7 with a right hand as seen from a front surface side of thecontroller 7.FIG. 9 shows an exemplary state of a player holding thecontroller 7 with a right hand as seen from a left side of thecontroller 7. - As shown in
FIGS. 8 and 9 , the overall size of thecontroller 7 is small enough to be held by one hand of an adult or even a child. When the player puts a thumb on the top surface of the controller 7 (for example, near the cross key 72 a), and puts an index finger in the recessed portion on the bottom surface of the controller 7 (for example, near theoperation button 72 i), a light entrance of the imaginginformation calculation section 74 on the front surface of thecontroller 7 is exposed forward from the player. It should be understood that also when the player holds thecontroller 7 with a left hand, the holding state is same as that described for the right hand. - Thus, the
controller 7 allows a player to easily operate theoperation section 72 such as the cross key 72 a or theoperation button 72 i while holding thecontroller 7 with one hand. Further, when the player holds thecontroller 7 with one hand, the light entrance of the imaginginformation calculation section 74 on the front surface of thecontroller 7 is exposed, whereby the light entrance can easily receive the infrared lights from the aforementioned twomarkers controller 7 with one hand without preventing the imaginginformation calculation section 74 of thecontroller 7 from functioning. That is, when the player moves his or her hand holding thecontroller 7 with respect to the display screen, thecontroller 7 can perform an operation input by which a motion of the player's hand directly affects a displayed object on the display screen. - As shown in
FIG. 10 , themarkers image pickup element 743 has a viewing angle θ2. For example, each of the viewing angles θ1 of themarkers image pickup element 743 is 41 degrees. When both themarkers image pickup element 743, and theimage pickup element 743 is in the viewing angle θ1 of themarker 8L and the viewing angle θ1 of themarker 8R, thegame apparatus 3 calculates a position of the controller 7 (including the distance between thecontroller 7 and themarkers markers - Next, an exemplary image, which is displayed on the
monitor 2 in accordance with an operation performed by the player, will be described with reference toFIGS. 11 to 12C .FIG. 11 is a top view showing an example in which a player U operates thecontroller 7 in a front-rear direction with respect to themarkers FIGS. 12A to 12C show exemplary images which are displayed on themonitor 2 in accordance with operations performed by the player U as shown inFIG. 11 . - In
FIG. 11 , the player U holds thecontroller 7 so as to point the front face of thecontroller 7 to themarkers controller 7 and a middle point between themarkers FIG. 11 , the player U holds thecontroller 7 such that the distance realD is realD0. The player U can change the distance realD, which is the distance between the front face of thecontroller 7 and the middle point between themarkers controller 7 back and forth with respect to themonitor 2. For example, the player U may move thecontroller 7 forward to themonitor 2 while pressing theoperation button 72 i (drag button), such that the distance realD changes from realD0 to realDn (state B). Also, the player U may move thecontroller 7 backward from themonitor 2 while pressing theoperation button 72 i (drag button), such that the distance realD changes from realD0 to realDf (state C). -
FIG. 12A is an exemplary image displayed on themonitor 2 when thecontroller 7 is in the state A.FIG. 12B is an exemplary image displayed on themonitor 2 when thecontroller 7 is in the state B.FIG. 12C is an exemplary image displayed on themonitor 2 when thecontroller 7 is in the state C. As shown inFIG. 12A , when thecontroller 7 is in the state A, themonitor 2 displays a part of an area in which a puzzle is drawn (a part of an object OBJ). InFIG. 12B , the object OBJ, which is displayed on themonitor 2 when thecontroller 7 is in the state A, is reduced in size, such that the entire object OBJ is displayed on themonitor 2. In other words, the player U can cause an object displayed on themonitor 2 to be reduced in size, by moving thecontroller 7 close to themonitor 2 while pressing theoperation button 72 i. InFIG. 12C , the object OBJ, which is displayed on themonitor 2 when thecontroller 7 is in the state A, is enlarged. In other words, the player U can enlarge an object displayed on themonitor 2, by distancing thecontroller 7 from themonitor 2 while pressing theoperation button 72 i. - Further, the player U can cause an object displayed on the
monitor 2 to move, by moving thecontroller 7 from side to side and up and down or twisting thecontroller 7 to the right and left with respect to themonitor 2 while pressing theoperation button 72 i. As shown inFIG. 13A , when the player U moves thecontroller 7 from side to side and up and down with respect to themonitor 2 while pressing theoperation button 72 i, the displayed object OBJ moves from side to side and up and down. Also, as shown inFIG. 13B , when the player U twists thecontroller 7 to the right and left while pressing theoperation button 72 i, the displayed object OBJ rotates to the right and left accordingly. - Next, the game process performed in the
game system 1 will be described in detail. First, main data used for the game process will be described with reference toFIG. 14 .FIG. 14 shows the main data used for the game process, which is stored in themain memory 33 of thegame apparatus 3. - As shown in
FIG. 14 , themain memory 33 stores operation information Da, operation status information Db, display information Dc and so on. In addition to data contained in the information shown inFIG. 14 , themain memory 33 stores, as necessary, other data used for performing the game process. - The operation information Da is a series of pieces of operation information which are transmitted as transmission data from the
controller 7. The operation information Da is information to be updated to latest operation information. The operation information Da contains first coordinate data Da1 and second coordinate data Da2 which correspond to the positional information of the above-described process result data. The first coordinate data Da1 is coordinate data indicating a position of one of the images of the twomarkers image pickup element 743. The second coordinate data Da2 is coordinate data indicating a position of the other of the images of the twomarkers image pickup element 743. The positions of the images of the markers are specified, for example, in a XY coordinate system on the taken image. - The operation information Da contains, in addition to the coordinate data (the first coordinate data Da1 and second coordinate data Da2) which is exemplary process result data obtained from the taken image, key data Da3 and the like obtained from the
operation section 72. Note that, the receivingunit 6 of thegame apparatus 3 receives the operation information Da transmitted from thecontroller 7 at predetermined time intervals, e.g., every 5 ms, and stores the information Da in a buffer (not shown) of the receivingunit 6. Thereafter, the information Da is read, e.g., every frame (every 1/60 sec), which corresponds to a timing of performing the game process. The newly read information Da is stored in themain memory 33. - The operation status information Db is information about an operation status of the
controller 7 which is recognized based on the taken image. The operation status information Db is data which is obtained from, e.g., positions and directions of the target images (markers) contained in the taken image. To be specific, the operation status information Db contains direction data Db1, middle point data Db2, current distance data Db3, initial distance data Db4, drag flag Db5 and soon. The direction data Db1 indicates a direction from a point indicated by the first coordinate data Da1 to a point indicated by the second coordinate data Da2. It is assumed here that the direction data Db1 is a vector whose originating point is the point indicated by the first coordinate data Da1 and whose ending point is the point indicated by the second coordinate data Da2. The middle point data Db2 indicates coordinates of a middle point between the point indicated by the first coordinate data Da1 and the point indicated by the second coordinate data Da2. When the images of the two markers (markers controller 7 and themarkers controller 7 and themarkers - The display information Dc contains virtual current distance data Dc1, virtual initial distance data Dc2, scale data Dc3, camera matrix data Dc4 and image data Dc5. The virtual current distance data Dc1 indicates a virtual current distance virtualD which is a result of converting the current distance realD into a corresponding distance in a virtual space created on the
monitor 2. The virtual initial distance data Dc2 indicates a virtual initial distance init_virtualD which is the virtual current distance virtualD obtained at a predetermined timing (e.g., a timing at which the player starts pressing the drag button). The scale data Dc3 indicates a scale value Scale representing a size of a view of a virtual camera used for creating the virtual space on themonitor 2. The camera matrix data Dc4 indicates camera matrix representing movement, zooming, directional rotation, positional rotation and the like of the virtual camera. The image data Dc5 is used for placing, e.g., the object OBJ in the virtual space and generating an image thereof to be displayed on themonitor 2. - Next, the game process performed by the
game apparatus 3 will be described in detail with reference toFIGS. 15 to 17 .FIG. 15 is a flowchart showing a sequence of the game process performed by thegame apparatus 3.FIG. 16 is a subroutine showing in detail a distance calculation process atstep 53 ofFIG. 15 .FIG. 17 is a diagram used to describe a manner of calculating the current distance realD. Flowcharts ofFIGS. 15 and 16 show, among a plurality of processes in the game process, only an image enlarging/reducing process which is performed in accordance with operations of thecontroller 7 while the image processing program contained in the game program is executed, and descriptions of the other processes which are not directly related to the present invention will be omitted. InFIGS. 15 and 16 , each step performed by theCPU 30 is abbreviated as “S”. - When power is supplied to the game apparatus, the
CPU 30 of thegame apparatus 3 executes a boot program stored in a boot ROM (not shown), thereby initializing each unit such as themain memory 33. Then, after the game program stored in theoptical disc 4 is loaded to themain memory 33, theCPU 30 starts executing the game program. The flowcharts shown inFIGS. 15 and 16 illustrate processes which are performed after such a boot process is completed. - As shown in
FIG. 15 , theCPU 30 first obtains the operation information received from the controller 7 (step 51), and then proceeds to the next step. Here, theCPU 30 stores the operation information in themain memory 33 as the operation information Da. The operation information obtained at step 51 contains, in addition to coordinate data indicating positions of themarkers operation section 72 of thecontroller 7 has been operated (key data Da3). It is assumed here that thecommunication section 75 transmits the operation information to thegame apparatus 3 at predetermined time intervals (e.g., every 5 ms), and that theCPU 30 uses the operation information every frame. Accordingly, an iteration of processes at steps 51 to 64 is repeatedly performed every frame. - Next, the
CPU 30 refers to the keydata Da3, and determines whether or not the drag button is currently pressed (step 52). When the drag button is pressed, theCPU 30 proceeds to step 53. When the drag button is not pressed, theCPU 30 sets the drag flag is Drag written in the drag flag Db5 to 0 (step 65), and proceeds to step 62. - At
step 53, theCPU 30 performs the distance calculation process, and then proceeds to the next step. In the distance calculation process, the current distance realD between thecontroller 7 and themarkers controller 7 and stored in themain memory 33. Hereinafter, processes performed atstep 53 will be described in detail with reference toFIGS. 16 and 17 . - As shown in
FIG. 16 , theCPU 30 obtains the first coordinate data Da1 and second coordinate data Da2 (step 71), and calculates a distance mi (step 72) As shown inFIG. 17 , the distance mi is a distance between two points in the taken image. These two points correspond to images of themarkers CPU 30 uses the first coordinate data Da1 and second coordinate data Da2 to calculate the distance mi. To be specific, when the first coordinate data Da1 is position coordinates (Lx, Ly) and the second coordinate data Da2 is position coordinates (Rx, Ry), the distance mi is obtained by the following equation. -
mi=√{square root over ((Rx−Lx)2+(Ry−Ly)2)}{square root over ((Rx−Lx)2+(Ry−Ly)2)} [equation 1] - Next, the
CPU 30 calculates a width w (refer toFIG. 17 ) which indicates, with respect to setting positions of themarkers image pickup element 743 is able to take an image (step 73). The width w is obtained by the following equation. -
w=wi×m/mi - Here, m represents a setting distance between the
markers markers image pickup element 743 which corresponds to the width w. The width wi is also a fixed value. Since the setting distance m and width wi are fixed values, these values are prestored in storage means (not shown) within thegame apparatus 3. Note that, the player is allowed to discretionarily determine the setting positions of themarkers markers - Next, the
CPU 30 calculates the current distance realD (refer toFIG. 17 ) between the image pickup element 743 (controller 7) and themarkers image pickup element 74, and updates the current distance data Db3 (step 74). Then, the distance calculation process in the subroutine ends. Here, the current distance realD is obtained by using the following equation. -
realD=(w/2)/{tan(θ/2)} - Since the
viewing angle 9 is a fixed angle, the angle θ is prestored in the storage means (not shown) within thegame apparatus 3. - Refer to
FIG. 15 again. After the process for calculating the current distance realD atstep 53 is completed, theCPU 30 refers to the drag flag Db5 (step 54), and determines whether or not the drag flag is Drag is 0 (step 55). When the drag flag is Drag is 0 (i.e., when the player has just started pressing the drag button), theCPU 30 proceeds to step 56. When the drag flag is Drag is 1 (i.e., when the player has been continuing pressing the drag button), theCPU 30 proceeds to step 58. - At
step 56, theCPU 30 sets an initial distance initD to a value of the current distance realD calculated atstep 53, and updates the initial distance data Db4. Next, theCPU 30 sets the virtual initial distance init_virtualD to a currently set value of the virtual current distance virtualD, and updates the virtual initial distance data Dc2 (step 57). Note that, if the virtual current distance virtualD is unset at this point, theCPU 30 sets the virtual initial distance init_virtualD to a default value, and updates the virtual initial distance data Dc2. Then, theCPU 30 proceeds to thenext step 61. - At
step 58, theCPU 30 calculates a moving distance moveD To be specific, theCPU 30 calculates, by using the current distance realD calculated atstep 53 and the initial distance initD which is stored in themain memory 33 as the initial distance data Db4, the moving distance moveD with the following equation. -
moveD=realD−initD - Next, the
CPU 30 calculates the virtual current distance virtualD, and updates the virtual current distance data Dc1 (step 59). To be specific, theCPU 30 calculates, by using the moving distance moveD calculated atstep 58 and the virtual initial distance init_virtualD which is stored in themain memory 33 as the virtual initial distance data Dc2, the virtual current distance virtualD with the following equation. -
virtualD=init_virtualD+moveD - Then, the
CPU 30 calculates the scale value Scale, and updates the scale data Dc3 (step 60). To be specific, theCPU 30 calculates, by using the virtual current distance virtualD which is stored in themain memory 33 as the virtual current distance data Dc1, the scale value Scale with the following equation. -
Scale=S×virtualD+T - Here, S and T are arbitrarily fixed numbers. The
CPU 30 then proceeds to thenext step 61. - Note that, as a result of setting the fixed number S to greater than 0 in the later-described drawing process for drawing an image, the player is enabled to enlarge an object displayed on the
monitor 2 by distancing thecontroller 7 from themarkers monitor 2. Also, as a result of setting the fixed number S to less than 0, the player is enabled to reduce in size an object displayed on themonitor 2 by distancing thecontroller 7 from themarkers monitor 2. - At
step 61, theCPU 30 sets the drag flag is Drag written in the drag flag Db5 to “1”, and then proceeds to thenext step 62. - At
step 62, theCPU 30 calculates the camera matrix based on the scale value Scale, and updates the camera matrix data Dc4. Then, theCPU 30 proceeds to the next step. Here, when the camera matrix uses perspective projection matrix, theCPU 30 obtains the camera matrix by calculating, based on the scale value Scale which is stored in themain memory 33 as the scale data Dc3, a distance between a virtual camera and a focal point of the virtual camera. When the camera matrix uses orthogonal projection matrix, theCPU 30 obtains the camera matrix by calculating, based on the scale value Scale which is stored in themain memory 33 as the scale data Dc3, a size of a view of the virtual camera which is to be represented by the orthogonal projection matrix. - Next, the
CPU 30 uses the camera matrix calculated atstep 62 to draw an image, and displays the image on the monitor 2 (step 63). Then, theCPU 30 determines whether or not to terminate displaying the image (step 64). When theCPU 30 continues displaying the image, theCPU 30 returns to step 51, and repeats the above-described processes. When theCPU 30 terminates displaying the image, theCPU 30 ends the game process illustrated in the flowcharts. - Note that, at
steps monitor 2 may display a resultant two-dimensional image which is enlarged or reduced by changing as necessary a display size of the two-dimensional image. Such a manner of enlarging/reducing the displayed image also allows the displayed image to be enlarged/reduced in accordance with the distance between thecontroller 7 and themarkers - When the player moves the
controller 7 from side to side and up and down or twisting thecontroller 7 to the right and left with respect to themonitor 2 while pressing the drag button, an object displayed on themonitor 2 may be moved in accordance with such movement of thecontroller 7. In this case, theCPU 30, e.g., calculates the direction data Db1 indicating a direction from a point indicated by the first coordinate data Da1 to a point indicated by the second coordinate data Da2. To be specific, theCPU 30 refers to the position coordinates (Lx, Ly) indicated by the first coordinate data Da1 and the position coordinates (Rx, Ry) indicated by the second coordinate data Da2, and calculates a vector whose originating point is the point indicated by the first coordinate data Da1 and whose ending point is the point indicated, by the second coordinate data Da2. Then, theCPU 30 updates the direction data Db1. Based on a difference between a direction indicated by the vector of the direction data Db1 and a predetermined reference direction, a rotation of thecontroller 7 with respect to a perpendicular direction from themonitor 2 to the front face of thecontroller 7 can be obtained. TheCPU 30 calculates a direction change which has occurred in the direction indicated by the vector of the direction data Db1 while the drag button is pressed. Based on the direction change, theCPU 30 calculates camera matrix representing a rotation process of the virtual camera, and then draws an image of the object to be displayed on themonitor 2, the image having been taken by the virtual camera rotating as a result of the rotation process. Accordingly, the object displayed on themonitor 2 is rotated (FIG. 13B ). - Also, the
CPU 30 calculates the middle point data Db2 indicating a middle point between the point indicated by the position coordinates (Lx, Ly) of the first coordinate data Da1 and the point indicated by the position coordinates (Rx, Ry) of the second coordinate data Da2. To be specific, theCPU 30 refers to the first coordinate data Da1 and second coordinate data Da2, and calculates coordinates of the middle point. Then, theCPU 30 updates the middle point data Db2. Here, when the target images (markers controller 7 in relation to themonitor 2 can be calculated. TheCPU 30 calculates a positional change of the middle point indicated by the middle point data Db2, which occurs while the drag button is pressed. Based on the positional change, theCPU 30 calculates camera matrix representing a moving process of the virtual camera, and then draws an image of the object to be displayed on themonitor 2, which is taken by the virtual camera moving as a result of the moving process. Accordingly, the object displayed on themonitor 2 is moved from side to side and up and down (FIG. 13A ). Note that, the middle point data Db2 may be converted to coordinates in a coordinate system on the display screen (designated coordinates), and the displayed object may be moved in accordance with a change in the designated coordinates. In this case, the designated coordinates are changed such that the designated coordinates indicate a position which is pointed by thecontroller 7. As a result of setting the displayed object, whose position coincides with the designated coordinates, as an object to be moved, the player is allowed to discretionarily move the displayed object pointed by thecontroller 7 by moving thecontroller 7. Also for the above-mentioned rotation process, as a result of setting the displayed object, whose position coincides with the designated coordinates, as an object to be rotated, the player is allowed to discretionarily rotate the displayed object pointed by thecontroller 7 by twisting thecontroller 7. - The above description of the game process has given an example in which a moving distance of the
controller 7 is calculated while the drag button is pressed, and a displayed image is enlarged or reduced in accordance with the moving distance. Described below with reference toFIGS. 18 and 19 is another example in which a moving velocity of thecontroller 7 is calculated, and the displayed image is enlarged or reduced in accordance with the moving velocity.FIG. 18 shows main data stored in themain memory 33 of thegame apparatus 3 in said another example.FIG. 19 is a flowchart showing a sequence of the game process performed by thegame apparatus 3 in said another example. Described in the flowchart shown inFIG. 19 is only an image enlarging/reducing process among a plurality of processes in the game process, which is performed in accordance with operations of thecontroller 7 while the image processing program contained in the game program is executed, and detailed descriptions of the other processes which are not directly related to the present invention will be omitted. InFIG. 19 , each step performed by theCPU 30 is abbreviated as “S”. The flowchart shown inFIG. 19 shows processes which are performed after the above-described boot process is completed. - As shown in
FIG. 18 , themain memory 33 stores, e.g., the operation information Da, operation status information Db and display information Dc. Compared with the main data shown inFIG. 14 , the main data shown inFIG. 18 additionally contains past distance data Db6 and moving velocity data Db7 in the operation status information Db, and does not contain the initial distance data Db4, drag flag Db5 and virtual initial distance data Dc2. InFIG. 18 , data which is identical with the data shown inFIG. 14 is denoted by a same reference numeral as that used for the data shown inFIG. 14 , and a detailed description thereof will be omitted. - The past distance data Db6 indicates a past distance pastD which is a distance between the
controller 7 and themarkers controller 7 with respect to themarkers - As shown in
FIG. 19 , theCPU 30 first obtains operation information received from the controller 7 (step 81), and then proceeds to the next step. Sincestep 81 is identical with step 51, a detailed description thereof will be omitted. - Next, the
CPU 30 sets the past distance pastD to a currently set value of the current distance realD, and updates the past distance data Db6 (step 82) Then, theCPU 30 performs the distance calculation process (step 83), and proceeds to the next step. Since the distance calculation process at step 83 is identical with that ofstep 53, a detailed description thereof will be omitted. - Thereafter, the
CPU 30 calculates the moving velocity velD, and updates the moving velocity data Db7 (step 84). To be specific, theCPU 30 calculates, by using the current distance realD calculated at step 83 and the past distance pastD set atstep 82, the moving velocity velD with the following equation. -
velD=realD−pastD - Then, the
CPU 30 refers to the key data Da3 to determine whether or not the drag button is currently pressed (step 85). When the drag button is pressed, theCPU 30 proceeds to step 86. When the drag button is not pressed, theCPU 30 proceeds to step 88. - At step 86, the
CPU 30 calculates the virtual current distance virtualD, and updates the virtual current distance data Dc1. To be specific, theCPU 30 calculates, by using the moving velocity velD calculated at step 84 and the virtual current distance virtualD which is stored in themain memory 33 as the virtual current distance data Dc1, a new virtual current distance virtualD with the following equation. -
virtualD=virtualD+velD - Then, the
CPU 30 calculates the scale value Scale, and updates the scale data Dc3 (step 87). To be specific, theCPU 30 calculates, by using the virtual current distance virtualD which is stored in themain memory 33 as the virtual current distance data Dc1, the scale value Scale with the following equation. -
Scale=S×virtualD+T - Here, S and T are arbitrarily fixed numbers. The
CPU 30 then proceeds to thenext step 88. - At
step 88, theCPU 30 calculates camera matrix based on the scale value Scale, and updates the camera matrix data Dc4. Next, theCPU 30 uses the camera matrix calculated atstep 88 to draw an image, and displays the image on the monitor 2 (step 89). Then, theCPU 30 determines whether or not to terminate displaying the image (step 90). When theCPU 30 continues displaying the image, theCPU 30 returns to step 81, and repeats the above-described processes. When theCPU 30 terminates displaying the image, theCPU 30 ends the game process illustrated in the flowchart. Since the process for calculating the camera matrix atstep 88 and the drawing process atstep 89 are identical with the processes atsteps - Note that, when, in the distance calculation process performed at
step controller 7 is diagonally positioned with respect to a line connecting themarkers FIGS. 20 to 23 .FIG. 20 is a subroutine showing in detail the distance calculation process.FIGS. 21 to 23 are used to describe a manner of calculating the current distance realD in the distance calculation process. - In the distance calculation process descried below, size information in addition to the above-described first coordinate data Da1 and second coordinate data Da2 is obtained as the process result data. The size information indicates, e.g., a square measure, diameter or width of each of the target images of the
markers information calculation section 74. In the description below, an example will be given in which the size information, which indicates a diameter of themarker 8L in the image taken by the imageinformation calculation section 74, and the size information, which indicates a diameter of themarker 8R in the image taken by the imageinformation calculation section 74, are respectively obtained as first and second size data. - As shown in
FIG. 20 , theCPU 30 first obtains the first and second size data (step 101), and proceeds to the next step. As shown inFIG. 21 , the first size data indicates a diameter diamL of the target image of themarker 8L in the taken image, and the second size data indicates a diameter diamR of the target image of themarker 8R in the taken image. Here,FIG. 21 shows a difference between the diameters diamL and diamR which occurs when thecontroller 7 is diagonally positioned with respect to the line connecting themarkers - Based on the first size data (diameter diamL), the
CPU 30 calculates a width w (seeFIG. 22 ) which indicates, with respect to a setting position of themarker 8L, a width for which theimage pickup element 743 is able to take an image (step 102). The width w is obtained from the following equation. -
w=wi×diamM/diamL - Here, diamM is a diameter (actual diameter) of each of the
markers game apparatus 3. - Next, by using the width w calculated at
step 102 and a viewing angle θ of theimage pickup element 743, theCPU 30 calculates a current distance realDL (seeFIG. 22 ) which is a current distance between themarker 8L and the image pickup element 743 (controller 7) (step 103). The current distance realDL is obtained from the following equation. -
realDL=(w/2)/{tan(θ/2)} - Since the viewing angle θ is a fixed angle, the viewing angle θ is prestored in the storage means (not shown) within the
game apparatus 3. - Next, based on the second size data (diameter diamR), the
CPU 30 calculates another width w which indicates, with respect to a setting position of themarker 8R, a width for which theimage pickup element 743 is able to take an image (step 104). Said another width w is obtained from the following equation. -
w=wi×diamM/diamR - Then, by using said another width w calculated at
step 104 and the viewing angle θ of theimage pickup element 743, theCPU 30 calculates a current distance realDR between themarker 8R and the image pickup element 743 (controller 7) (step 105). Here, the current distance realDR is obtained from the following equation. -
realDR=(w/2)/{tan(θ/2)} - Thereafter, the
CPU 30 calculates an angle δ1 by using the current distance realDL, current distance realDR and setting distance m between themarkers FIG. 23 , the angle δ1 is between a line connecting themarker 8L andcontroller 7 and a line connecting themarkers -
cos δ1=(realDL 2 ×m 2−realDR 2)/(2×realDL×m) - Subsequently, the
CPU 30 calculates the current distance realD (seeFIG. 23 ) between thecontroller 7 and the middle point between themarkers -
realD=√{square root over (realDL 2+(m/2)2−2*realDL*(m/2)*cos δ1)}{square root over (realDL 2+(m/2)2−2*realDL*(m/2)*cos δ1)} [equation 2] - It is also possible to obtain an angle δ2 between a line connecting the
controller 7 and said middle point and the line connecting themarkers -
cos δ2={realD 2×(m/2)2−realDL 2}/{2×realD×(m/2)} - Obtaining the angle δ2 allows the
CPU 30 to calculate an angular position of thecontroller 7 with respect to themarkers controller 7. - As described above, the
controller 7 takes an image of a plurality of stationary imaging targets. Alternatively, thecontroller 7 may take an image of a single stationary imaging target. Then, an image displayed on the monitor is enlarged and reduced in accordance with target image data indicating a space between a plurality of target images in the taken image or target image data indicating a size of a single target image in the taken image. The target image data indicating the space between the plurality of target images is, e.g., a distance between the plurality of target images in the taken image, and the target image data indicating the size of the single target image contains measurements (e.g., diameter and width) of the single target image in the taken image. For example, infrared lights emitted from the twomarkers marker 8L) is a single imaging target, and a size of the single marker in a taken image is used as the target image data, a distance between a plurality of points on the single marker (e.g., both ends of the single marker) may be used as the target image data. In such a case, a diameter or the like (e.g., diameter diamL) of the single marker in the taken image is used as the target image data. A distance between thecontroller 7 and the imaging target(s) can be obtained by using the target image data, and an image displayed on the monitor can be enlarged or reduced in accordance with an increase or decrease in the distance between thecontroller 7 and the imaging target(s) or an increase or decrease in a moving speed of thecontroller 7. Thus, a new type of intuitive operation based on an operation distance of thecontroller 7 is realized. Note that, the above-described steps of calculating distances are merely examples. The steps may be simplified by using the target image data as distances. - The above description has given an example in which the displayed image is enlarged or reduced only while the drag button (
operation button 72 i) is pressed. However, regardless of whether or not the drag button is pressed, the displayed image may be enlarged or reduced each time a change occurs in the current distance realD. As a result, image processing for the image to be displayed on themonitor 2 fully uses changes in the distance between thecontroller 7 and themarkers controller 7 held by the player) and themonitor 2. - In the above description, the current distance realD is calculated by analyzing the image data of an image taken by the
image pickup element 743. However, the present invention can be realized as long as the current distance realD to a predetermined measuring target placed in a real space is measured in any manner. For example, a supersonic sensor or a magnetic sensor may be used as means of calculating the current distance realD. The calculation of the current distance realD is not required to be performed if there is any manner in which a value related to a distance between theimage pickup element 743 and an imaging target(s) is obtained without involving a calculation of the current distance realD, because operation inputs can be performed as long as such a value is obtained. In such a case, data corresponding to a distance between themarkers - Further, in the above description, the
controller 7 and thegame apparatus 3 are connected by radio communication. However, thecontroller 7 andgame apparatus 3 may be electrically connected by a cable. In such a case, the cable connected to thecontroller 7 is connected to a connecting terminal of thegame apparatus 3. - Although the above description has given an example in which the receiving
unit 6 connected to the connecting terminal of thegame apparatus 3 is used as reception means for receiving transmission data wirelessly transmitted from thecontroller 7, a reception module provided within thegame apparatus 3 may be used as the reception means. In this case, the transmission data received by the reception module is outputted to theCPU 30 via the predetermined bus. - Further, in the above description, the image data of the image taken by the
image pickup element 743 is analyzed to obtain the position coordinates, center of gravity coordinates and the like of the infrared lights emitted from themarkers controller 7, and transmitted to thegame apparatus 3. However, data, which can be obtained in the middle of a process performed by thecontroller 7 for generating the process result data, may be transmitted from thecontroller 7 to thegame apparatus 3. For example, the image data of the image taken by theimage pickup element 743 may be transmitted from thecontroller 7 to thegame apparatus 3, and the process result data may be obtained as a result of analyzing the image data at theCPU 30. In this case, theimage processing circuit 744 provided within thecontroller 7 is no longer necessary. Alternatively, data as a result of partly analyzing the image data may be transmitted from thecontroller 7 to thegame apparatus 3. For example, data indicating a brightness, position, square measure and the like obtained from partly performing the analysis of the image data may be transmitted from thecontroller 7 to thegame apparatus 3, and the rest of the analysis may be performed by theCPU 30 to obtain the process result data. - Still further, in the above description, the infrared lights from the
markers information calculation section 74 of thecontroller 7. However, a different object may be used as an imaging target. For example, one or more than three markers may be placed in the vicinity of themonitor 2, and an infrared light(s) emitted therefrom may be used as an imaging target(s) of the imageinformation calculation section 74. For example, the present invention may be realized by placing near themonitor 2 a single marker having a predetermined length between both ends thereof, and using the predetermined length as the setting distance m (seeFIG. 16 ). Alternatively, the display screen of themonitor 2 or another illuminant (e.g., interior light) may be used as the imaging target of the imageinformation calculation section 74. Various illuminants may be used as imaging targets of the imageinformation calculation section 74, by using a manner of calculating, based on a positional relationship between an imaging target and the display screen of the monitor, a position of thecontroller 7 in relation to the display screen of themonitor 2. - It is understood that the shapes of the
controller 7 and theoperation sections 72 mounted thereon, the number ofoperation sections 72, the positions in which theoperation sections 72 are provided and the like in the above description are merely examples. The present invention can be realized even if these shapes, numbers, positions and the like are different from the above description. Also, the position of the imageinformation calculation section 74 of the controller 7 (an entrance through which a light is incident on the imaging information calculation section 74) is not necessarily on the front face of thehousing 71. The imageinformation calculation section 74 may be provided on any other face of thehousing 71 such that theimage calculation section 74 externally receives a light. - Although the
game apparatus 3 is operated by thecontroller 7 in the present embodiment, thegame apparatus 3 may be a general information processing apparatus such as a personal computer which is operated by an input device having image pickup means. In such a case, a program executed by a computer of the general information processing apparatus is not limited to a game program typically used for playing a game. The executed program may be an all-purpose image processing program which is used for image processing by the general information processing apparatus. - The image processing apparatus and the storage medium storing the image processing program according to the present invention realize highly flexible operations, and are useful for, e.g., performing image processing for a game which is played by using physically separated units. The image processing program according to the present invention is useful as a program for performing such image processing for a game.
- While the invention has been described in detail, the foregoing description is in all aspects illustrative and not restrictive. It is understood that numerous other modifications and variations can be devised without departing from the scope of the invention.
Claims (30)
1. An image processing apparatus for performing predetermined image processing in accordance with an input operation performed by an input device including image pickup means for taking an image of one or a plurality of imaging targets, the image processing apparatus comprising:
target image data obtaining means for sequentially obtaining, from one target image of the one imaging target or a plurality of target images of the plurality of imaging targets in the image taken by the image pickup means, target image data indicating a distance between the plurality of target images or a size of the one target image;
image processing means for performing at least either one of enlargement and reduction of a display image in accordance with a change in the target image data; and
display control means for displaying on a display device the display image processed by the image processing means.
2. The image processing apparatus according to claim 1 , wherein
the image processing means includes:
distance calculation means for, based on the target image data, sequentially calculating a distance between the image pickup means and the one or the plurality of the imaging targets; and
enlarging/reducing means for performing at least either one of enlargement and reduction of the display image in accordance with a change in the distance.
3. The image processing apparatus according to claim 2 , wherein the image processing means enlarges the display image in accordance with an increase in the distance, and reduces the display image in accordance with a decrease in the distance.
4. The image processing apparatus according to claim 2 , wherein the image processing means reduces the display image in accordance with an increase in the distance, and enlarges the display image in accordance with a decrease in the distance.
5. The image processing apparatus according to claim 2 , wherein the image processing means performs at least either one of enlargement and reduction of the display image in accordance with the change which occurs, during a predetermined time period, in the distance.
6. The image processing apparatus according to claim 5 , wherein the image processing means enlarges the display image in accordance with an increase in the distance, and reduces the display image in accordance with a decrease in the distance.
7. The image processing apparatus according to claim 5 , wherein the image processing means reduces the display image in accordance with an increase in the distance, and enlarges the display image in accordance with a decrease in the distance.
8. The image processing apparatus according to claim 5 , wherein the input device includes at least one pressable operation key and outputs at least operation information corresponding to a state of the operation key being pressed, the apparatus further comprising:
operation information obtaining means for obtaining the operation information; and
storage means for, when the operation information indicates that the operation key has just started being pressed, storing the distance calculated by the distance calculation means, wherein
the image processing means includes difference calculation means for obtaining the change in the distance, which occurs during the predetermined time period which is a time period during which the operation key is pressed, by sequentially calculating a difference between the distance stored in the storage means and the distance which is calculated, while the operation information indicates that the operation key is currently pressed, by the distance calculation means, and
the image processing means performs at least either one of enlargement and reduction of the display image in accordance with the difference.
9. The image processing apparatus according to claim 8 , wherein the image processing means enlarges the display image in accordance with an increase in the distance, and reduces the display image in accordance with a decrease in the distance.
10. The image processing apparatus according to claim 8 , wherein the image processing means reduces the display image in accordance with an increase in the distance, and enlarges the display image in accordance with a decrease in the distance.
11. The image processing apparatus according to claim 2 , further comprising designated coordinates calculation means for, based on a position of the one target image or positions of the plurality of target images in the taken image, calculating designated coordinates associated with a display area of the display device, wherein
the image processing means moves the display image in accordance with a change in the designated coordinates.
12. The image processing apparatus according to claim 2 , further comprising tilt calculation means for, based on a position of the one target image or positions of the plurality of target images in the taken image, calculating a tilt of the input device, wherein
the image processing means rotates the display image in accordance with a change in the tilt.
13. The image processing apparatus according to claim 2 , wherein the image processing means performs at least either one of enlargement and reduction of the display image by sequentially changing, in accordance with the change in the distance, a position of a virtual camera placed in a virtual space.
14. The image processing apparatus according to claim 2 , wherein the image processing means performs at least either one of enlargement and reduction of the display image by sequentially changing, in accordance with the change in the distance, a display size of a two-dimensional image.
15. The image processing apparatus according to claim 1 , further comprising velocity calculation means for, based on the target image data, sequentially calculating a moving velocity of the input device with respect to the one or the plurality of imaging targets, wherein
the image processing means performs at least either one of enlargement and reduction of the display image in accordance with the moving velocity.
16. A storage medium storing an image processing program to be executed by a computer which performs image processing in accordance with an input operation performed by an input device including image pickup means for taking an image of one or a plurality of imaging targets, the image processing program causing the computer to perform:
a target image data obtaining step of sequentially obtaining, from one target image of the one imaging target or a plurality of target images of the plurality of imaging targets in the image taken by the image pickup means, target image data indicating a distance between the plurality of target images or a size of the one target image;
an image processing step of performing at least either one of enlargement and reduction of a display image in accordance with a change in the target image data; and
a display control step of displaying on a display device the display image processed at the image processing step.
17. The storage medium storing the image processing program according to claim 16 , wherein
the image processing step includes:
a distance calculation step of, based on the target image data, sequentially calculating a distance between the image pickup means and the one or the plurality of the imaging targets; and
an enlarging/reducing step of performing at least either one of enlargement and reduction of the display image in accordance with a change in the distance.
18. The storage medium storing the image processing program according to claim 17 , wherein at the image processing step, the display image is enlarged in accordance with an increase in the distance, and reduced in accordance with a decrease in the distance.
19. The storage medium storing the image processing program according to claim 17 , wherein at the image processing step, the display image is reduced in accordance with an increase in the distance, and enlarged in accordance with a decrease in the distance.
20. The storage medium storing the image processing program according to claim 17 , wherein the image processing step performs at least either one of enlargement and reduction of the display image in accordance with the change which occurs, during a predetermined time period, in the distance.
21. The storage medium storing the image processing program according to claim 20 , wherein at the image processing step, the display image is enlarged in accordance with an increase in the distance, and reduced in accordance with a decrease in the distance.
22. The storage medium storing the image processing program according to claim 20 , wherein at the image processing step, the display image is reduced in accordance with an increase in the distance, and enlarged in accordance with a decrease in the distance.
23. The storage medium storing the image processing program according to claim 20 , wherein the input device includes at least one pressable operation key and outputs at least operation information corresponding to a state of the operation key being pressed, the storage medium further causing the computer to perform:
an operation information obtaining step of obtaining the operation information; and
a storage control step of, when the operation information indicates that the operation key has just started being pressed, storing in a memory the distance calculated at the distance calculation step, wherein
the image processing step includes a difference calculation step of obtaining the change in the distance, which occurs during the predetermined time period which is a time period during which the operation key is pressed, by sequentially calculating a difference between the distance stored in the memory and the distance which is calculated, while the operation information indicates that the operation key is currently pressed, at the distance calculation step, and
the image processing step performs at least either one of enlargement and reduction of the display image in accordance with the difference.
24. The storage medium storing the image processing program according to claim 23 , wherein at the image processing step, the display image is enlarged in accordance with an increase in the distance, and reduced in accordance with a decrease in the distance.
25. The storage medium storing the image processing program according to claim 23 , wherein at the image processing step, the display image is reduced in accordance with an increase in the distance, and enlarged in accordance with a decrease in the distance.
26. The storage medium storing the image processing program according to claim 17 , further causing the computer to perform a designated coordinates calculation step of, based on a position of the one target image or positions of the plurality of target images in the taken image, calculating designated coordinates associated with a display area of the display device, wherein
at the image processing step, the display image is moved in accordance with a change in the designated coordinates.
27. The storage medium storing the image processing program according to claim 17 , further causing the computer to perform a tilt calculation step of, based on a position of the one target image or positions of the plurality of target images in the taken image, calculating a tilt of the input device, wherein
at the image processing step, the display image is rotated in accordance with a change in the tilt.
28. The storage medium storing the image processing program according to claim 17 , wherein the image processing step performs at least either one of enlargement and reduction of the display image by sequentially changing, in accordance with the change in the distance, a position of a virtual camera placed in a virtual space.
29. The storage medium storing the image processing program according to claim 17 , wherein the image processing step performs at least either one of enlargement and reduction of the display image by sequentially changing, in accordance with the change in the distance, a display size of a two-dimensional image.
30. The storage medium storing the image processing program according to claim 16 , further causing the computer to perform a velocity calculation step of, based on the target image data, sequentially calculating a moving velocity of the input device with respect to the one or the plurality of imaging targets, wherein
the image processing step performs at least either one of enlargement and reduction of the display image in accordance with the moving velocity.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/314,894 US20140313134A1 (en) | 2006-03-09 | 2014-06-25 | Image processing apparatus and storage medium storing image processing program |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006-064439 | 2006-03-09 | ||
JP2006064439A JP5424373B2 (en) | 2006-03-09 | 2006-03-09 | Image processing apparatus, image processing program, image processing system, and image processing method |
US11/522,997 US8797264B2 (en) | 2006-03-09 | 2006-09-19 | Image processing apparatus and storage medium storing image processing program |
US14/314,894 US20140313134A1 (en) | 2006-03-09 | 2014-06-25 | Image processing apparatus and storage medium storing image processing program |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/522,997 Continuation US8797264B2 (en) | 2006-03-09 | 2006-09-19 | Image processing apparatus and storage medium storing image processing program |
Publications (1)
Publication Number | Publication Date |
---|---|
US20140313134A1 true US20140313134A1 (en) | 2014-10-23 |
Family
ID=38478449
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/522,997 Active 2027-12-14 US8797264B2 (en) | 2006-03-09 | 2006-09-19 | Image processing apparatus and storage medium storing image processing program |
US14/314,894 Abandoned US20140313134A1 (en) | 2006-03-09 | 2014-06-25 | Image processing apparatus and storage medium storing image processing program |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/522,997 Active 2027-12-14 US8797264B2 (en) | 2006-03-09 | 2006-09-19 | Image processing apparatus and storage medium storing image processing program |
Country Status (2)
Country | Link |
---|---|
US (2) | US8797264B2 (en) |
JP (1) | JP5424373B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110418059A (en) * | 2019-07-30 | 2019-11-05 | 联想(北京)有限公司 | Applied to the image processing method of electronic equipment, device, electronic equipment, medium |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7221287B2 (en) | 2002-03-05 | 2007-05-22 | Triangle Software Llc | Three-dimensional traffic report |
US7610145B2 (en) | 2003-07-25 | 2009-10-27 | Triangle Software Llc | System and method for determining recommended departure time |
US9229540B2 (en) | 2004-01-30 | 2016-01-05 | Electronic Scripting Products, Inc. | Deriving input from six degrees of freedom interfaces |
US7961909B2 (en) | 2006-03-08 | 2011-06-14 | Electronic Scripting Products, Inc. | Computer interface employing a manipulated object with absolute pose detection component and a display |
US7796116B2 (en) | 2005-01-12 | 2010-09-14 | Thinkoptics, Inc. | Electronic equipment for handheld vision based absolute pointing system |
JP4244040B2 (en) * | 2005-03-10 | 2009-03-25 | 任天堂株式会社 | Input processing program and input processing apparatus |
US8157651B2 (en) | 2005-09-12 | 2012-04-17 | Nintendo Co., Ltd. | Information processing program |
JP4773170B2 (en) * | 2005-09-14 | 2011-09-14 | 任天堂株式会社 | Game program and game system |
JP4794957B2 (en) * | 2005-09-14 | 2011-10-19 | 任天堂株式会社 | GAME PROGRAM, GAME DEVICE, GAME SYSTEM, AND GAME PROCESSING METHOD |
JP4895352B2 (en) * | 2006-02-07 | 2012-03-14 | 任天堂株式会社 | Object selection program, object selection device, object selection system, and object selection method |
JP4530419B2 (en) | 2006-03-09 | 2010-08-25 | 任天堂株式会社 | Coordinate calculation apparatus and coordinate calculation program |
JP5424373B2 (en) | 2006-03-09 | 2014-02-26 | 任天堂株式会社 | Image processing apparatus, image processing program, image processing system, and image processing method |
JP4837405B2 (en) | 2006-03-09 | 2011-12-14 | 任天堂株式会社 | Coordinate calculation apparatus and coordinate calculation program |
JP4798705B2 (en) * | 2006-03-23 | 2011-10-19 | 任天堂株式会社 | POSITION CALCULATION DEVICE, POSITION CALCULATION PROGRAM, GAME DEVICE, AND GAME PROGRAM |
US8913003B2 (en) | 2006-07-17 | 2014-12-16 | Thinkoptics, Inc. | Free-space multi-dimensional absolute pointer using a projection marker system |
US8291346B2 (en) * | 2006-11-07 | 2012-10-16 | Apple Inc. | 3D remote control system employing absolute and relative position detection |
US9176598B2 (en) | 2007-05-08 | 2015-11-03 | Thinkoptics, Inc. | Free-space multi-dimensional absolute pointer with improved performance |
US8144123B2 (en) * | 2007-08-14 | 2012-03-27 | Fuji Xerox Co., Ltd. | Dynamically controlling a cursor on a screen when using a video camera as a pointing device |
US20090066648A1 (en) * | 2007-09-07 | 2009-03-12 | Apple Inc. | Gui applications for use with 3d remote controller |
US8054332B2 (en) * | 2007-09-19 | 2011-11-08 | Fuji Xerox Co., Ltd. | Advanced input controller for multimedia processing |
JP4964729B2 (en) | 2007-10-01 | 2012-07-04 | 任天堂株式会社 | Image processing program and image processing apparatus |
US8669938B2 (en) * | 2007-11-20 | 2014-03-11 | Naturalpoint, Inc. | Approach for offset motion-based control of a computer |
US8493324B2 (en) * | 2008-01-10 | 2013-07-23 | Symax Technology Co., Ltd. | Apparatus and method generating interactive signal for a moving article |
JP5224832B2 (en) * | 2008-01-21 | 2013-07-03 | 任天堂株式会社 | Information processing program and information processing apparatus |
JP5347279B2 (en) * | 2008-02-13 | 2013-11-20 | ソニー株式会社 | Image display device |
GB2458297B (en) * | 2008-03-13 | 2012-12-12 | Performance Designed Products Ltd | Pointing device |
JP2010117823A (en) * | 2008-11-12 | 2010-05-27 | Samsung Electronics Co Ltd | Information processor and program |
US8619072B2 (en) | 2009-03-04 | 2013-12-31 | Triangle Software Llc | Controlling a three-dimensional virtual broadcast presentation |
US8982116B2 (en) | 2009-03-04 | 2015-03-17 | Pelmorex Canada Inc. | Touch screen based interaction with traffic data |
US9046924B2 (en) | 2009-03-04 | 2015-06-02 | Pelmorex Canada Inc. | Gesture based interaction with traffic data |
KR101666995B1 (en) * | 2009-03-23 | 2016-10-17 | 삼성전자주식회사 | Multi-telepointer, virtual object display device, and virtual object control method |
JP2011041222A (en) * | 2009-08-18 | 2011-02-24 | Sony Corp | Remote controller, remote control method, display device, and display method |
US8842096B2 (en) * | 2010-01-08 | 2014-09-23 | Crayola Llc | Interactive projection system |
JP5396620B2 (en) | 2010-01-08 | 2014-01-22 | 任天堂株式会社 | Information processing program and information processing apparatus |
US8428394B2 (en) * | 2010-05-25 | 2013-04-23 | Marcus KRIETER | System and method for resolving spatial orientation using intelligent optical selectivity |
JP5622447B2 (en) * | 2010-06-11 | 2014-11-12 | 任天堂株式会社 | Information processing program, information processing apparatus, information processing system, and information processing method |
EP2638493A4 (en) | 2010-11-14 | 2017-12-13 | Muddy River, Series 97 of Allied Security Trust 1 | Crowd sourced traffic reporting |
CN102750014A (en) * | 2011-04-20 | 2012-10-24 | 硕呈科技股份有限公司 | Multi-point positioning intelligent control method and device |
CA2839866C (en) | 2011-05-18 | 2021-04-13 | Triangle Software Llc | System for providing traffic data and driving efficiency data |
TW201305854A (en) * | 2011-07-26 | 2013-02-01 | Chip Goal Electronics Corp | Remote controllable image display system, controller, and processing method therefor |
CN102917263A (en) * | 2011-08-02 | 2013-02-06 | 奇高电子股份有限公司 | Wireless remote control image display system, controller used therein and processing method |
US8781718B2 (en) | 2012-01-27 | 2014-07-15 | Pelmorex Canada Inc. | Estimating time travel distributions on signalized arterials |
JP5352692B2 (en) * | 2012-03-06 | 2013-11-27 | 任天堂株式会社 | Image processing program and image processing apparatus |
US11099652B2 (en) | 2012-10-05 | 2021-08-24 | Microsoft Technology Licensing, Llc | Data and user interaction based on device proximity |
US10223909B2 (en) | 2012-10-18 | 2019-03-05 | Uber Technologies, Inc. | Estimating time travel distributions on signalized arterials |
US9804689B2 (en) | 2013-02-19 | 2017-10-31 | Pixart Imaging Inc. | Handheld pointer device and pointer positioning method thereof |
US10067576B2 (en) | 2013-02-19 | 2018-09-04 | Pixart Imaging Inc. | Handheld pointer device and tilt angle adjustment method thereof |
US11577159B2 (en) | 2016-05-26 | 2023-02-14 | Electronic Scripting Products Inc. | Realistic virtual/augmented/mixed reality viewing and interactions |
US10423241B1 (en) | 2017-07-31 | 2019-09-24 | Amazon Technologies, Inc. | Defining operating areas for virtual reality systems using sensor-equipped operating surfaces |
CN109636720B (en) * | 2018-11-28 | 2023-03-21 | 维沃移动通信(杭州)有限公司 | Image display method and terminal equipment |
WO2021152507A1 (en) * | 2020-01-29 | 2021-08-05 | Everseen Limited | System and method for identifying users |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060139327A1 (en) * | 2002-10-15 | 2006-06-29 | Sony Corporation/Sony Electronics | Method and system for controlling a display device |
US20060152488A1 (en) * | 2005-01-12 | 2006-07-13 | Kenneth Salsman | Electronic equipment for handheld vision based absolute pointing system |
US7379078B1 (en) * | 2005-10-26 | 2008-05-27 | Hewlett-Packard Development Company, L.P. | Controlling text symbol display size on a display using a remote control device |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5309137A (en) | 1991-02-26 | 1994-05-03 | Mitsubishi Denki Kabushiki Kaisha | Motor car traveling control device |
JPH05127809A (en) | 1991-04-19 | 1993-05-25 | Sharp Corp | Three-dimensional spatial coordinate input device |
US5574479A (en) | 1994-01-07 | 1996-11-12 | Selectech, Ltd. | Optical system for determining the roll orientation of a remote unit relative to a base unit |
JP3262677B2 (en) * | 1994-05-02 | 2002-03-04 | 株式会社ワコム | Information input device |
GB2289756B (en) | 1994-05-26 | 1998-11-11 | Alps Electric Co Ltd | Space coordinates detecting device and input apparatus using same |
JP3422383B2 (en) * | 1994-09-05 | 2003-06-30 | 株式会社タイトー | Method and apparatus for detecting relative position between video screen and gun in shooting game machine |
JPH09166417A (en) * | 1995-12-14 | 1997-06-24 | Sega Enterp Ltd | Apparatus and method for distance measurement, and game machine |
JP3257585B2 (en) * | 1996-03-29 | 2002-02-18 | 株式会社ビジュアルサイエンス研究所 | Imaging device using space mouse |
JP3795647B2 (en) * | 1997-10-29 | 2006-07-12 | 株式会社竹中工務店 | Hand pointing device |
JPH11305935A (en) | 1998-04-24 | 1999-11-05 | Image Tec Kk | Position detection system |
US6707443B2 (en) | 1998-06-23 | 2004-03-16 | Immersion Corporation | Haptic trackball device |
JP2000308756A (en) * | 1999-04-27 | 2000-11-07 | Taito Corp | Input controller of game device |
US20010030667A1 (en) | 2000-04-10 | 2001-10-18 | Kelts Brett R. | Interactive display interface for information objects |
JP2001356875A (en) * | 2000-06-13 | 2001-12-26 | Toshiba Corp | Pointer display system |
US6864877B2 (en) | 2000-09-28 | 2005-03-08 | Immersion Corporation | Directional tactile feedback for haptic feedback interface devices |
JP3686919B2 (en) * | 2000-12-06 | 2005-08-24 | 株式会社ニコン技術工房 | GAME DEVICE, GAME PROCESSING METHOD, AND READABLE STORAGE MEDIUM |
US6852032B2 (en) | 2000-12-06 | 2005-02-08 | Nikon Corporation | Game machine, method of performing game and computer-readable medium |
US6982697B2 (en) | 2002-02-07 | 2006-01-03 | Microsoft Corporation | System and process for selecting objects in a ubiquitous computing environment |
CN100536970C (en) * | 2002-11-20 | 2009-09-09 | 世嘉股份有限公司 | Game image display control method and game device |
JP4144555B2 (en) * | 2003-06-09 | 2008-09-03 | カシオ計算機株式会社 | Electronic device, display control method and program |
US7389171B2 (en) | 2003-12-22 | 2008-06-17 | Ford Global Technologies Llc | Single vision sensor object detection system |
US7561720B2 (en) | 2004-04-30 | 2009-07-14 | Visteon Global Technologies, Inc. | Single camera system and method for range and lateral position measurement of a preceding vehicle |
PL1741088T3 (en) | 2004-04-30 | 2012-08-31 | Hillcrest Lab Inc | Free space pointing devices with tilt compensation and improved usability |
WO2006014810A2 (en) | 2004-07-29 | 2006-02-09 | Kevin Ferguson | A human movement measurement system |
US7672543B2 (en) | 2005-08-23 | 2010-03-02 | Ricoh Co., Ltd. | Triggering applications based on a captured text in a mixed media environment |
US7545956B2 (en) | 2005-08-12 | 2009-06-09 | Visteon Global Technologies, Inc. | Single camera system and method for range and lateral position measurement of a preceding vehicle |
JP4471910B2 (en) | 2005-09-14 | 2010-06-02 | 任天堂株式会社 | Virtual positioning program |
JP5424373B2 (en) | 2006-03-09 | 2014-02-26 | 任天堂株式会社 | Image processing apparatus, image processing program, image processing system, and image processing method |
-
2006
- 2006-03-09 JP JP2006064439A patent/JP5424373B2/en active Active
- 2006-09-19 US US11/522,997 patent/US8797264B2/en active Active
-
2014
- 2014-06-25 US US14/314,894 patent/US20140313134A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060139327A1 (en) * | 2002-10-15 | 2006-06-29 | Sony Corporation/Sony Electronics | Method and system for controlling a display device |
US20060152488A1 (en) * | 2005-01-12 | 2006-07-13 | Kenneth Salsman | Electronic equipment for handheld vision based absolute pointing system |
US7379078B1 (en) * | 2005-10-26 | 2008-05-27 | Hewlett-Packard Development Company, L.P. | Controlling text symbol display size on a display using a remote control device |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110418059A (en) * | 2019-07-30 | 2019-11-05 | 联想(北京)有限公司 | Applied to the image processing method of electronic equipment, device, electronic equipment, medium |
Also Published As
Publication number | Publication date |
---|---|
JP2007236697A (en) | 2007-09-20 |
JP5424373B2 (en) | 2014-02-26 |
US20070211027A1 (en) | 2007-09-13 |
US8797264B2 (en) | 2014-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8797264B2 (en) | Image processing apparatus and storage medium storing image processing program | |
US7831064B2 (en) | Position calculation apparatus, storage medium storing position calculation program, game apparatus, and storage medium storing game program | |
US11027190B2 (en) | Game controller and game system | |
US9533220B2 (en) | Game controller and game system | |
US8308563B2 (en) | Game system and storage medium having game program stored thereon | |
US8884875B2 (en) | Information processing apparatus and computer-readable recording medium recording information processing program | |
US8568232B2 (en) | Storage medium having game program stored thereon and game apparatus | |
US8100769B2 (en) | System and method for using accelerometer outputs to control an object rotating on a display | |
US8284158B2 (en) | Computer readable recording medium recording image processing program and image processing apparatus | |
EP1759745A1 (en) | Videogame system and storage medium having videogame program stored thereon | |
US20080309615A1 (en) | Storage medium storing information processing program and information processing device | |
US9751013B2 (en) | Storage medium, information processing system, and information processing method for adjusting images based on movement information |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |