WO2011052117A1 - 画像ファイル生成装置、画像処理装置、画像ファイル生成方法、画像処理方法、および画像ファイルのデータ構造 - Google Patents

画像ファイル生成装置、画像処理装置、画像ファイル生成方法、画像処理方法、および画像ファイルのデータ構造 Download PDF

Info

Publication number
WO2011052117A1
WO2011052117A1 PCT/JP2010/004809 JP2010004809W WO2011052117A1 WO 2011052117 A1 WO2011052117 A1 WO 2011052117A1 JP 2010004809 W JP2010004809 W JP 2010004809W WO 2011052117 A1 WO2011052117 A1 WO 2011052117A1
Authority
WO
WIPO (PCT)
Prior art keywords
image
data
tile
area
hierarchical
Prior art date
Application number
PCT/JP2010/004809
Other languages
English (en)
French (fr)
Inventor
稲田徹悟
Original Assignee
株式会社ソニー・コンピュータエンタテインメント
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from JP2009245797A external-priority patent/JP5368254B2/ja
Priority claimed from JP2009245798A external-priority patent/JP5296656B2/ja
Application filed by 株式会社ソニー・コンピュータエンタテインメント filed Critical 株式会社ソニー・コンピュータエンタテインメント
Priority to AU2010313045A priority Critical patent/AU2010313045B2/en
Priority to US13/502,409 priority patent/US8724914B2/en
Priority to CN201080045762.3A priority patent/CN102667864B/zh
Priority to RU2012121208/08A priority patent/RU2519058C2/ru
Priority to BR112012009893-4A priority patent/BR112012009893B1/pt
Publication of WO2011052117A1 publication Critical patent/WO2011052117A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control 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/39Control of the bit-mapped memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/19Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier
    • G11B27/28Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording
    • G11B27/32Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on separate auxiliary tracks of the same or an auxiliary record carrier
    • G11B27/327Table of contents
    • G11B27/329Table of contents on a disc [VTOC]
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/04Changes in size, position or resolution of an image
    • G09G2340/0407Resolution change, inclusive of the use of different resolutions for different screen areas
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/122Tiling

Definitions

  • the present invention relates to an image processing technique for enlarging / reducing an image displayed on a display, or moving the image vertically and horizontally.
  • a home entertainment system that can not only execute game programs but also play videos has been proposed.
  • the GPU generates a three-dimensional image using polygons (see, for example, Patent Document 1).
  • the present invention has been made in view of such problems, and an object of the present invention is to provide an image processing technique that can efficiently generate, display, and correct data size even when the image size is large. There is.
  • An aspect of the present invention relates to an image file generation device.
  • the image file generation device generates a plurality of image data having different resolutions from input image data, generates an image layer generation unit that generates a layered data in order of resolution, and each of the layers constituting the layer data
  • An image dividing unit that divides image data of a hierarchy into tile images of a predetermined size, each tile area after division of the image data of each hierarchy that constitutes the hierarchy data, and tile image data used when rendering the area
  • an image file generation unit that generates an image file including tile image data and index data.
  • the index generation unit includes an image plane of hierarchical data and the image plane. Dividing a hierarchical structure composed of hierarchical data in a virtual space defined by vertical resolution axes For each pass, in the form of index blocks summarizing the index data of each of the tile region, and generating the index data.
  • This image processing apparatus includes a tile image data obtained by dividing each image of hierarchical data composed of image data of different resolutions in one image into a predetermined size, and division of image data of each layer constituting the hierarchical data
  • a storage device that holds an image file that includes index data in which each subsequent tile area is associated with tile image data that is used to draw the area, and a display area that includes movement on the image plane and changes in resolution
  • An input information acquisition unit that receives a change request from a user, and a tile image specification that specifies tile image data required to draw a new area to be displayed in response to a display area change request by referring to index data Image processing for reading out the tile and the specified tile image data from the storage device and drawing a new area to be displayed
  • Index data is obtained for each tile area for each area obtained by dividing a hierarchical structure composed of hierarchical data in a virtual space defined by an image plane of the hierarchical data and a resolution axis perpendicular thereto.
  • This image processing apparatus includes a tile image data obtained by dividing each image of hierarchical data composed of image data of different resolutions in one image into a predetermined size, and division of image data of each layer constituting the hierarchical data
  • An image file acquisition unit for reading an image file including index data in which each subsequent tile area and tile image data used when rendering the area are associated, and update information of an image displayed using the image file
  • An update information acquisition unit that acquires a tile image generation unit that generates data of a new tile image used when rendering an update target area based on the update information, and tiles included in the update target area in the index data
  • An index data update unit that updates the tile image data associated with the area to new tile image data;
  • the index data is an image of the hierarchical data. It has an index block format in which index data for each tile area is compiled for each area obtained by dividing the hierarchical structure composed of the hierarchical data in a virtual space defined by a plane and a resolution axis perpendicular to the plane. It is characterized by.
  • Still another aspect of the present invention relates to an image file generation method.
  • this image file generation method a plurality of image data having different resolutions are generated from input image data, hierarchical data configured by hierarchizing in the order of resolution is generated and stored in a memory, and the hierarchical data is configured.
  • Still another aspect of the present invention relates to an image processing method.
  • tile image data obtained by dividing each image of hierarchical data composed of image data of different resolutions in one image into a predetermined size, and division of image data of each layer constituting the hierarchical data
  • the index data includes, for each tile area, an area obtained by dividing a hierarchical structure composed of hierarchical data in a virtual space defined by an image plane of the hierarchical data and a resolution axis perpendicular thereto. It has a format of an index block in which index data is collected.
  • Still another aspect of the present invention relates to an image processing method.
  • tile image data obtained by dividing each image of hierarchical data composed of image data of different resolutions in one image into a predetermined size, and division of image data of each layer constituting the hierarchical data
  • a step of reading an image file including index data in which each subsequent tile area is associated with the tile image data used when rendering the area, and update information of the image displayed using the image file A step of generating new tile image data used when rendering the update target area based on the update information, storing the data in the memory, and a tile area included in the update target area in the index data.
  • the index data is defined by an image plane of the hierarchical data and a resolution axis perpendicular thereto.
  • Each of the regions formed by dividing a hierarchical structure composed of hierarchical data in the virtual space has an index block format in which index data for each tile region is collected.
  • This data structure is a data structure of an image file read from a storage device in order to display at least a part of an image on a display, and is a tile image obtained by dividing image data having different resolutions into a predetermined size in one image.
  • index data in which each area after the division of each image data in the hierarchical data obtained by hierarchizing the image data in the resolution order is associated with the tile image data used when rendering the area,
  • Index data is a collection of index data for each tile area for each area obtained by dividing a hierarchical structure composed of hierarchical data in a virtual space defined by an image plane of the hierarchical data and a resolution axis perpendicular thereto. It has the form of an index block.
  • the image processing apparatus includes an image processing request unit that issues an image processing request including information for drawing an image to be newly displayed by executing a program, and a color that holds color information for each pixel of an image to be drawn Hierarchical data storage that stores a hierarchical color buffer and a hierarchical Z buffer in which a value pixel plane and a Z value pixel plane that holds depth information from the viewpoint for each pixel are hierarchized in correspondence with a plurality of resolutions of the drawing target image And an image processing unit that accepts an image processing request, executes image processing, and updates the hierarchical color buffer and the hierarchical Z buffer.
  • the image processing unit reads the drawing target read from the hierarchical color buffer and the hierarchical Z buffer.
  • a hierarchical data updating unit that performs scaling processing on data in accordance with a plurality of resolutions and updates data of each layer of the hierarchical color buffer and the hierarchical Z buffer.
  • Still another aspect of the present invention relates to an image processing method.
  • This image processing method includes a step of issuing an image processing request including information for drawing an image to be newly displayed by executing a program, and a color value pixel plane that holds color information for each pixel of an image to be drawn Storing a hierarchical color buffer and a hierarchical Z buffer in which a Z-value pixel plane holding depth information from the viewpoint for each pixel is hierarchized in correspondence with a plurality of resolutions of the drawing target image in a memory; Receiving a processing request, executing image processing, and updating the hierarchical color buffer and the hierarchical Z buffer, wherein the step of updating the hierarchical color buffer and the hierarchical Z buffer includes: The data is read from the hierarchical color buffer and hierarchical Z buffer, and the drawing color buffer And writing to the drawing Z buffer, updating the drawing color buffer and drawing Z buffer data by performing image processing calculation based on the image processing request, and updating the drawing color buffer and drawing Z buffer. Performing a scaling process on the
  • an image processing apparatus capable of efficiently constructing image data for displaying an image with a wide range of resolutions.
  • FIG. 1 is a diagram illustrating a configuration of an information processing device in Embodiment 1.
  • FIG. 3 schematically shows a flow of image data in the first embodiment. 6 is a diagram for explaining prefetching processing of image data in the first embodiment.
  • FIG. 3 is a diagram illustrating in detail a configuration of a control unit having a function of displaying hierarchical data in the first embodiment.
  • FIG. 3 is a diagram schematically illustrating a data structure of hierarchical data used in Embodiment 1.
  • FIG. 3 is a diagram illustrating a configuration of a control unit having a function of generating a display target image file in Embodiment 1.
  • FIG. 6 is a diagram for explaining a relationship between an original image and a tile image when there is redundancy in the image in Embodiment 1.
  • FIG. 10 is a diagram for explaining another example of the relationship between an original image and a tile image when there is redundancy in the image in the first embodiment.
  • FIG. 10 is a diagram for describing a technique for defining sharing of tile images based on redundancy by a header in the first embodiment.
  • FIG. 6 is a diagram for describing a technique for defining sharing of tile images based on redundancy by index blocks in Embodiment 1.
  • FIG. It is a flowchart which shows the process sequence which the control part shown in FIG. 9 produces
  • 4 is a flowchart illustrating a processing procedure for the control unit to display an image file in the first embodiment.
  • FIG. 2 is a diagram illustrating a configuration of a control unit having a function of correcting an image in the first embodiment.
  • 6 is a diagram illustrating an example of correcting an image in the first embodiment.
  • FIG. It is a figure which shows typically the change of the pointer of the index block in the correction like FIG. FIG.
  • FIG. 10 is a diagram for describing processing when a hierarchy is added to the high resolution side in the first embodiment.
  • 6 is a diagram for explaining changes in headers and index blocks when there is no index block to which a hierarchy to be added belongs in Embodiment 1.
  • FIG. 10 is a diagram for explaining processing for adding a new area to an existing image in the first embodiment. 6 is a diagram for explaining changes in headers and index blocks when a new area is added in Embodiment 1.
  • FIG. FIG. 10 is a diagram for describing a method of dividing an area defined in a header when a hierarchy is added to the vertex side of a hierarchical structure in the first embodiment.
  • FIG. 4 is a flowchart illustrating a processing procedure when a user modifies and modifies an image in the image processing apparatus according to the first embodiment. It is a figure which shows the structure of a control part and a main memory among the information processing apparatuses in Embodiment 2 in detail.
  • 10 is a flowchart illustrating a processing procedure of rendering to hierarchical data in the second embodiment.
  • FIG. 10 is a diagram illustrating a device configuration when a scaler that performs scaling processing is built in a main memory in the second embodiment.
  • FIG. 10 is a diagram illustrating a state of addressing of a GPU buffer in the second embodiment.
  • FIG. 10 is a diagram illustrating a state of addressing of a GPU buffer in the second embodiment.
  • Embodiment 1 The image data to be processed in the present embodiment has a hierarchical structure composed of images with different resolutions generated by reducing the original image in a plurality of stages. Each layer image is divided into one or a plurality of tile images. For example, the image with the lowest resolution is composed of one tile image, and the original image with the highest resolution is composed of the largest number of tile images.
  • the tile image used for drawing is switched to a tile image of a different hierarchy when the display image has a predetermined resolution, so that enlarged display or reduced display is quickly performed.
  • FIG. 1 shows a use environment of an information processing system 1 to which an embodiment of the present invention can be applied.
  • the information processing system 1 includes an information processing device 10 that executes an application program including image processing, and a display device 12 that outputs a processing result by the information processing device 10.
  • the display device 12 may be a television having a display that outputs an image and a speaker that outputs sound.
  • the display device 12 may be connected to the information processing device 10 by a wired cable, or may be wirelessly connected by a wireless LAN (Local Area Network) or the like.
  • the information processing apparatus 10 may be connected to an external network such as the Internet via the cable 14 to download and acquire content including hierarchical compressed image data. Note that the information processing apparatus 10 may be connected to an external network by wireless communication.
  • the information processing apparatus 10 performs a process of changing the display area, such as an enlargement / reduction process of an image displayed on the display of the display apparatus 12 or a movement process in the up / down / left / right directions, in response to a request from the user.
  • a process of changing the display area such as an enlargement / reduction process of an image displayed on the display of the display apparatus 12 or a movement process in the up / down / left / right directions, in response to a request from the user.
  • the input device transmits a display area change request signal to the information processing device 10.
  • FIG. 2 shows an external configuration of the input device 20.
  • the input device 20 includes a cross key 21, analog sticks 27a and 27b, and four types of operation buttons 26 as operation means that can be operated by the user.
  • the four types of operation buttons 26 include a circle button 22, a x button 23, a square button 24, and a triangle button 25.
  • a function for inputting a display image enlargement / reduction request and a vertical / left / right scroll request is assigned to the operation unit of the input device 20.
  • the input function of the display image enlargement / reduction request is assigned to the right analog stick 27b.
  • the user can input a display image reduction request by pulling the analog stick 27b forward, and can input a display image enlargement request by pressing the analog stick 27b from the front.
  • the input function of the display area movement request is assigned to the cross key 21.
  • the user can input a movement request in the direction in which the cross key 21 is pressed by pressing the cross key 21.
  • the image change request input function may be assigned to another operation means, for example, the scroll request input function may be assigned to the analog stick 27a.
  • the input device 20 is also assigned a function for moving the cursor displayed in the image and selecting a file or a command.
  • the input device 20 may be realized by a general input device such as a pointing device, a mouse, a keyboard, or a touch panel.
  • the function assignment as described above may be appropriately determined according to the type of the input device 20.
  • the input device 20 has a function of transmitting an input display area change request signal or the like to the information processing device 10, and is configured to be capable of wireless communication with the information processing device 10 in the present embodiment.
  • the input device 20 and the information processing device 10 may establish a wireless connection using a Bluetooth (registered trademark) protocol, an IEEE802.11 protocol, or the like.
  • the input device 20 may be connected to the information processing apparatus 10 via a cable and transmit a display area change request signal or the like to the information processing apparatus 10.
  • FIG. 3 shows a conceptual diagram of a hierarchical structure of image data used in the present embodiment.
  • the image data has a hierarchical structure including a 0th hierarchy 30, a first hierarchy 32, a second hierarchy 34, and a third hierarchy 36 in the depth (Z-axis) direction.
  • a hierarchical structure including a 0th hierarchy 30, a first hierarchy 32, a second hierarchy 34, and a third hierarchy 36 in the depth (Z-axis) direction.
  • the number of layers is not limited to this.
  • image data having such a hierarchical structure is referred to as “hierarchical data”.
  • the hierarchical data in the figure is conceptual, and actually the hierarchical data is expressed by a plurality of data sets as described later.
  • the hierarchical data shown in FIG. 3 has a hierarchical structure of a quadtree, and each hierarchy is composed of one or more tile images 38. All the tile images 38 are formed in the same size having the same number of pixels, and have, for example, 256 ⁇ 256 pixels.
  • the image data of each layer expresses one image at different resolutions, and the original image of the third layer 36 having the highest resolution is reduced in a plurality of stages to obtain the second layer 34, the first layer 32, the 0th layer.
  • Image data of the hierarchy 30 is generated.
  • the resolution of the Nth layer (N is an integer greater than or equal to 0) may be 1 ⁇ 2 of the resolution of the (N + 1) th layer in both the left and right (X axis) direction and the up and down (Y axis) direction.
  • the hierarchical data is held in the storage device in a compressed state in a predetermined compression format, and is read from the storage device and decoded before being displayed on the display.
  • the information processing apparatus 10 has a decoding function corresponding to a plurality of types of compression formats, and can decode compressed data in, for example, the S3TC format, JPEG format, and JPEG2000 format.
  • the hierarchical structure of the hierarchical data is set with the horizontal direction as the X axis, the vertical direction as the Y axis, and the depth direction as the Z axis, thereby constructing a virtual three-dimensional space.
  • the information processing device 10 derives the change amount of the display image from the display area change request signal supplied from the input device 20, the information processing device 10 derives the coordinates (frame coordinates) of the four corners of the frame in the virtual space using the change amount. .
  • the frame coordinates in the virtual space are used for loading compressed data into a main memory, which will be described later, and display image generation processing.
  • the information processing apparatus 10 may derive information for specifying a hierarchy and texture coordinates (UV coordinates) in the hierarchy.
  • texture coordinates UV coordinates
  • the combination of the hierarchy specifying information and the texture coordinates is also referred to as frame coordinates.
  • FIG. 4 shows the configuration of the information processing apparatus 10.
  • the information processing apparatus 10 includes a wireless interface 40, a switch 42, a display processing unit 44, a hard disk drive 50, a recording medium mounting unit 52, a disk drive 54, a main memory 60, a buffer memory 70, and a control unit 100.
  • the display processing unit 44 has a frame memory that buffers data to be displayed on the display of the display device 12.
  • the switch 42 is an Ethernet switch (Ethernet is a registered trademark), and is a device that transmits and receives data by connecting to an external device in a wired or wireless manner.
  • the switch 42 is connected to an external network via the cable 14 and configured to receive content data and the like from the server.
  • the switch 42 is connected to the wireless interface 40, and the wireless interface 40 is connected to the input device 20 using a predetermined wireless communication protocol.
  • a signal input from the user in the input device 20 is supplied to the control unit 100 via the wireless interface 40 and the switch 42.
  • the hard disk drive 50 functions as a storage device that stores data. Hierarchical data received via the switch 42 is stored in the hard disk drive 50. When a removable recording medium such as a memory card is mounted, the recording medium mounting unit 52 reads data from the removable recording medium. When a read-only ROM disk is loaded, the disk drive 54 drives and recognizes the ROM disk to read data.
  • the ROM disk may be an optical disk or a magneto-optical disk. Hierarchical data may be stored in these recording media.
  • the control unit 100 includes a multi-core CPU, and has one general-purpose processor core and a plurality of simple processor cores in one CPU.
  • the general-purpose processor core is called PPU (PowerPC Processor Unit), and the remaining processor cores are called SPU (Synergistic Processor Unit).
  • the control unit 100 includes a memory controller connected to the main memory 60 and the buffer memory 70.
  • the PPU has a register, has a main processor as an operation execution subject, and efficiently assigns a task as a basic processing unit in an application to be executed to each SPU. Note that the PPU itself may execute the task.
  • the SPU has a register, and includes a sub-processor as an operation execution subject and a local memory as a local storage area. The local memory may be used as the buffer memory 70.
  • the main memory 60 and the buffer memory 70 are storage devices and are configured as a RAM (Random Access Memory).
  • the SPU has a dedicated DMA (Direct Memory Access) controller as a control unit, can transfer data between the main memory 60 and the buffer memory 70 at high speed, and the frame memory and the buffer memory 70 in the display processing unit 44 High-speed data transfer can be realized.
  • the control unit 100 according to the present embodiment realizes a high-speed image processing function by operating a plurality of SPUs in parallel.
  • the display processing unit 44 is connected to the display device 12 and outputs an image processing result according to a request from the user.
  • the information processing apparatus 10 uses a main part of the compressed image data from the hard disk drive 50 in order to smoothly change the display image when the display image enlargement / reduction process or the display area movement process is performed. It is loaded into the memory 60. Further, a part of the compressed image data loaded in the main memory 60 is decoded and stored in the buffer memory 70. This makes it possible to instantaneously switch an image used for generating a display image at a necessary later timing.
  • FIG. 5 schematically shows the flow of image data in the present embodiment.
  • the hierarchical data is stored in the hard disk drive 50.
  • a recording medium mounted on the recording medium mounting unit 52 or the disk drive 54 may be held.
  • the hierarchical data may be downloaded from an image server connected by the information processing apparatus 10 via a network.
  • the hierarchical data here is subjected to fixed length compression in the S3TC format or the like, or variable length compression in the JPEG format or the like.
  • a part of the image data is loaded into the main memory 60 in a compressed state (S10).
  • the area to be loaded here is a predetermined rule such as the vicinity of the current display image in the virtual space, the area of the image, the area where a display request is predicted to be frequently made based on the user's browsing history, etc. Determined by.
  • the loading is performed not only when an image change request is made, but also at any given time interval, for example. This prevents the load process from being concentrated at one time.
  • the buffer memory 70 includes at least two buffer areas 72 and 74.
  • the size of each of the buffer areas 72 and 74 is set to be larger than the size of the frame memory 90.
  • One of the buffer areas 72 and 74 is a display buffer for holding an image used for generating a display image, and the other is a decoding buffer for preparing an image predicted to be necessary thereafter.
  • the buffer area 72 is a display buffer
  • the buffer area 74 is a decoding buffer
  • the display area 68 is displayed.
  • the image stored in the decoding buffer by the prefetching process to be described later may be an image in the same hierarchy as the image stored in the display buffer, or may be an image in a different hierarchy having a different scale.
  • the image in the display area 68 among the images stored in the buffer area 72, which is a display buffer, is drawn in the frame memory 90 (S14).
  • the image in the new area is decoded as necessary and stored in the buffer area 74.
  • the display buffer and the decoding buffer are switched according to the timing of completion of storage, the change amount of the display area 68, and the like (S16). Thereby, a display image can be smoothly switched with respect to a movement of a display area, a change of a scale ratio, or the like.
  • FIG. 6 is a diagram for explaining the prefetching process.
  • FIG. 6 shows the structure of hierarchical data, and each hierarchy is expressed as L0 (0th hierarchy), L1 (1st hierarchy), L2 (2nd hierarchy), and L3 (3rd hierarchy).
  • the position in the depth (Z-axis) direction indicates the resolution. The position closer to L0 has a lower resolution, and the position closer to L3 has a higher resolution.
  • the position in the depth direction corresponds to the scale ratio, and when the scale ratio of the display image of L3 is 1, the scale ratio in L2 is 1/4, and in L1 The scale factor is 1/16, and the scale factor at L0 is 1/64.
  • the display image when the display image changes from the L0 side to the L3 side, the display image enlarges.
  • the display image changes from the L3 side to the L0 side the display image is reduced.
  • An arrow 80 indicates that the display area change request signal from the user requests reduction of the display image, and crosses the reduction ratio 1 ⁇ 4 (L2).
  • the position in the depth direction of L1 and L2 prepared as the tile image 38 is set as the prefetch boundary in the depth direction, and when the image change request signal crosses the prefetch boundary, the prefetch processing is started. To do.
  • the display image is created using a tile image of L2 (second layer).
  • the L2 tile image is used when the scale ratio of the image to be displayed is between the switching boundary 82 between the L1 tile image and the L2 tile image and the switching boundary 84 between the L2 tile image and the L3 tile image.
  • the image reduction processing is requested as indicated by the arrow 80
  • the L2 tile image is converted from the enlarged image to the reduced image and displayed.
  • a future tile image 38 predicted from the image change request signal is identified and decoded. In the example of FIG.
  • the information processing apparatus 10 when the requested scale ratio due to the display area change request signal crosses L2, the information processing apparatus 10 prefetches the corresponding tile image 38 of L1 in the reduction direction from the hard disk drive 50 or the main memory 60. Are decoded and written into the buffer memory 70.
  • a prefetch boundary is set for the image data developed in the buffer memory 70, and the prefetch process is started when the display position by the image change request signal crosses the prefetch boundary.
  • FIG. 7 shows in detail the configuration of the control unit 100a having the function of displaying the hierarchical data described above in the present embodiment.
  • the control unit 100a includes an input information acquisition unit 102 that acquires information input by the user from the input device 20, a tile image specification unit 110 that specifies a tile image including a region to be newly displayed, and image data to be newly loaded.
  • a load block determining unit 106 for determining and a load unit 108 for loading necessary image blocks from the hard disk drive 50 are included.
  • the control unit 100a further includes a decoding unit 112 that decodes the compressed image data and a display image processing unit 114 that draws a display image.
  • each element described as a functional block for performing various processes can be configured by a CPU (Central Processing Unit), a memory, and other LSIs in terms of hardware. This is realized by a program loaded on the computer.
  • the control unit 100 includes one PPU and a plurality of SPUs, and each functional block can be configured by the PPU and the SPU individually or in cooperation. Therefore, it is understood by those skilled in the art that these functional blocks can be realized in various forms by hardware only, software only, or a combination thereof, and is not limited to any one.
  • the input information acquisition unit 102 acquires instruction contents such as start / end of image display, movement of the display area, enlargement / reduction of the display image, etc. input by the user to the input device 20.
  • the tile image specifying unit 110 specifies a tile image including an area to be newly displayed according to the frame coordinates of the current display area and the display area change request information input by the user. If the tile image is already loaded in the main memory 60, the information is supplied to the decoding unit 112, and if not loaded, the information is supplied to the load block determining unit 106.
  • the tile image specifying unit 110 may specify not only an image necessary for drawing the display image at that time but also a tile image predicted to be necessary thereafter.
  • the load block determining unit 106 specifies an image block composed of a plurality of tile images to be newly loaded from the hard disk drive 50 to the main memory 60, and requests the load unit 108 to load it. Issue.
  • the load block determination unit 106 may make a load request at a predetermined timing in a state where the load unit 108 is not performing the load process, for example, at a predetermined time interval or when the user makes a display area change request.
  • the load unit 108 performs actual load processing in accordance with a request from the load block determination unit 106.
  • the decoding unit 112 reads out and decodes the tile image data from the main memory 60 based on the tile image information acquired from the tile image specifying unit 110, and stores the decoded data in the decoding buffer or the display buffer.
  • the display image processing unit 114 reads the corresponding image data from the display buffer of the buffer memory 70 based on the frame coordinates of the new display image, and draws it in the frame memory of the display processing unit 44.
  • FIG. 8 schematically shows the data structure of hierarchical data in the present embodiment.
  • the hierarchical data has a structure including three data of the header 150, the index block 160, and the tile image 170.
  • the header 150 and the index block 160 are indexes for specifying the tile image to be processed based on the position in the virtual space formed by the hierarchical data.
  • the hierarchical structure in the virtual space is divided into regions, and the indexes to the tile image data are grouped for each region, thereby improving the access to the tile images.
  • the header 150 defines a plurality of areas obtained by dividing a pyramid-like hierarchical structure in the virtual space as shown in FIG. 3, and data in which a pointer to one of the index blocks 160 is set for each area. It is.
  • a triangle 151 indicates the shape of the hierarchical structure viewed from the side, and horizontal broken lines indicate images 154a, 154b, 154c, 154d, 154e,.
  • Such a hierarchical structure is divided into regions as indicated by solid lines, for example, and regions such as region 152a, region 152b, and region 152c are defined.
  • a pointer to one of the index blocks 160 is set for each area.
  • the pointer to the index block 160a (arrow A) for the area 152a
  • the pointer to the index block 160b (arrow B) for the area 152b
  • the pointer (arrow C) to the index block 160c for the area 152c. Shows a state where is set.
  • a null pointer that does not point to a specific index block may be set for a part of the area defined by the header.
  • the index block 160 is data that is generated for each region of the structure defined by the header 150, and a pointer to one of the tile images 170 is set for a position on the image of multiple layers belonging to each region.
  • one index block corresponding to one area in the header 150 includes data of at least a partial area of an image of a plurality of layers belonging to the area.
  • the index block 160a corresponding to the area 152a holds the data of the entire two-layered images 154a and 154b belonging to the area 152a.
  • the index block 160b corresponding to the area 152b holds the entire data of the three layers of images 154c, 154d, and 154e belonging to the area 152b.
  • the index block 160c corresponding to the area 152c holds data of partial areas of the images 154f, 154g, and 154h for three layers belonging to the area 152c.
  • a pointer indicating one of the tile images 170 that are actual image data of the tile area is held.
  • one tile area may hold pointers pointing to a plurality of tile images.
  • three planes respectively shown in the index blocks 160a, 160b, and 160 correspond to hierarchies belonging to the corresponding areas, and small rectangles on the respective hierarchies indicate tile areas.
  • a pointer (arrow D) to the tile image 170a is set for the tile area 164a
  • a pointer (arrow E) to the tile image 170b is set for the tile area 164b. It shows a state.
  • a part of the tile area defined by the index block may be a null pointer without setting a pointer to a specific tile image.
  • the tile image 170 is compressed tile image data.
  • the index blocks 160a, 160b, and 160c are respectively provided with pointers to the index data for three layers of image areas composed of 4 ⁇ 4, 8 ⁇ 8, and 16 ⁇ 16 tile areas, that is, tile images 170. Shown to be configurable. As described above, when the number of tile areas that can be defined by one index block 160 is unified, for example, when any of the index blocks 160 is read from the hard disk drive 50 to the main memory 60, any index block is required. The size of the area does not change, and the storage area can be easily managed.
  • the area defined in the header 150 is generated so that the index block 160 has the same size.
  • the hierarchical data has a quadtree hierarchical structure in which the 0th hierarchy is one tile image as shown in FIG. 3, the 3rd hierarchy image belonging to the area 152b in FIG. 8, that is, the 2nd hierarchy image 154c,
  • the third layer image 154d and the fourth layer image 154e are composed of tile areas of 4 ⁇ 4, 8 ⁇ 8, and 16 ⁇ 16, respectively.
  • index block 160 when an area that can be defined by one index block 160 is an image area composed of 4 ⁇ 4, 8 ⁇ 8, and 16 ⁇ 16 tile areas as described above, the data of the entire three-layer image is directly used as one index. It can be stored in block 160b. That is, all the regions of the second layer image 154c, the third layer image 154d, and the fourth layer image 154e in the layer data are all of the 0th layer 162d, the first layer 162e, and the second layer 162f of the index block 160b. A pointer to the tile image can be set in correspondence with each region.
  • the area 152a in the header 150 includes the second hierarchy images 154a and 154b of the 0th hierarchy and the 1st hierarchy, the 0th hierarchy image 154a is one tile area, and the 1st hierarchy image 154b is a 2 ⁇ 2 tile. Since it consists of areas, the number of layers and the number of tile areas are small compared to areas that can be defined by one index block 160a. In such a case, the 0th layer image 154a in the layer data is made to correspond to a part of the 0th layer 162a of the index block 160a, for example, one tile area at the upper left, and a pointer to the tile image is set.
  • the first layer image 154b is set to correspond to a part of the first layer 162b of the index block 160a, for example, the 2 ⁇ 2 tile image in the upper left, and a pointer to the tile image is set. A null pointer is set for the other tile areas in the index block 160a.
  • An area 152c in the header 150 includes images 154f, 154g, and 154h of the third hierarchy of the fifth hierarchy, the sixth hierarchy, and the seventh hierarchy, but these images have more tiles than the number of tile areas that can be defined by one index block 160. Since it consists of images, as shown in FIG. 8, the image plane is divided so that a part of each layer corresponds to the 0th layer, the 1st layer, and the 2nd layer of the index block 160c. A plurality of layers of images belonging to each index block are divided into regions having the same resolution and different resolution.
  • the area division mode of the hierarchical structure shown in FIG. 8 is merely an example, and may be determined as appropriate depending on the structure of the original hierarchical data, the data size of a desired index block, and the like. As will be described later, the division mode of the hierarchical data may be changed according to the update of the original image.
  • FIG. 9 shows a configuration of the control unit 100b having a function of generating an image file to be displayed in the present embodiment.
  • the control unit 100b may have a function for displaying an image as shown in the control unit 100a of FIG. 7, but the illustration is omitted here.
  • the control unit 100b reads out the image data stored in the hard disk drive 50 and hierarchizes the image layer generation unit 120, the image division unit 122 that divides each layer image into tile images, and analyzes the images in each layer for redundancy.
  • Redundancy detection unit 124 to detect, header / index block generation unit 126 to generate header and index block data in consideration of redundancy, and finally output image file including tile image, header, and index block Includes an image file generation unit 128 for generating.
  • the image hierarchy generation unit 120 reads the data of the file creation target image from the hard disk drive 50. This image data may be data of one image having a certain resolution. The image data to be processed may be specified by the user via the input device 20 as shown in the figure, or a request from another functional block (not shown) that acquired the original image may be accepted. The image hierarchy generation unit 120 further generates image data having a hierarchical structure including the original image by generating image data obtained by stepwise reducing the read image data to a predetermined resolution.
  • the image dividing unit 122 generates tile image data by dividing each layer image into a predetermined size.
  • the generated tile image is stored in the main memory 60.
  • the position of each tile image in the original image is managed by assigning an identification number or the like.
  • the redundancy detection unit 124 detects image redundancy within the same hierarchy and between hierarchies by analyzing the images of each hierarchy.
  • the redundancy within the same hierarchy for example, a case where data of the same tile image can be used across a plurality of tile areas is conceivable.
  • redundancy between layers there may be a case where the difference in appearance between an image obtained by enlarging an image of a low resolution layer and an image of a high resolution layer is not large. Such a redundant region can be displayed by diverting the data of a certain tile image without having the tile image data individually. In this way, image data compression is realized. Specific methods will be described later.
  • the header / index block generation unit 126 creates the above-described header and index block data. As described above, in an image in which redundancy is not detected, a pointer to one of index blocks is set for all areas defined in the header, and tile images are defined for all tile areas defined in the index block. A pointer to is set. On the other hand, for image areas having redundancy, tile image data sharing is realized by setting a null pointer in the header or index block.
  • the image file generation unit 128 reads the tile image data pointed to by the pointer set in the index block and connects them in order to generate final image data. Then, an image file including image data, a header, and an index block is generated and used as final output data. As described above, the size of the image data can be efficiently compressed by detecting the redundancy of the image and using the data of one tile image for drawing a plurality of regions. In the present embodiment, since the same image with different resolution is included in the image data, even if the images are in different layers, the data of the same tile image can be used to compress the data at a high rate.
  • FIG. 10 is a diagram for explaining the relationship between the original image and the tile image when the image has redundancy.
  • an image 180a and an image 180b are two layers of images representing the same region. That is, the image 180a is obtained by reducing the image 180b.
  • the grids shown on the image 180a and the image 180b are boundary lines when dividing into tile images.
  • identification numbers are assigned to the tile regions of the images 180a and 180b and the tile image 170, respectively.
  • an image 180a and an image 180b are drawn with ellipses and triangles, and the other areas are filled with a single color as a background.
  • the data of the tile image 170 cut out from each area of such an image is stored in the main memory 60 or the like independently of the original image arrangement.
  • the tile area “4”, which is a single color fill area in the image 180a corresponds to the tile image “4” cut out from the tile area “4”.
  • a pointer to the tile image “4” is set for the tile area “4”.
  • the image 180b is a high-resolution image of the image 180a
  • the correspondence between the tile areas of the two images can be easily derived by the enlargement ratio.
  • the tile area “4” of the image 180a corresponds to the tile areas “15”, “16”, “19”, and “20” of the image 180b. Therefore, if the tile area “4” of the image 180a is a single-color filled area, it can be specified that all the tile areas “15”, “16”, “19”, and “20” of the image 180b are filled areas. That is, the tile image “4” is sufficient to display these areas.
  • the header and index block data can be compressed by preventing the high-resolution image area that can be displayed by the low-resolution tile image from having a specific pointer.
  • the image data used in the present embodiment targets the same image having a plurality of resolutions
  • the above-described redundancy detection process is repeated in order from the smallest resolution image to obtain a high resolution large size image.
  • a single-color filled area is detected and tile image data is shared by the same filled area has been described.
  • similar processing can be performed only for a single-color area, a random pattern, or a repeated pattern. It is also effective in areas. These areas are detected from a low resolution image by color histogram or frequency analysis for each area.
  • FIG. 11 is a diagram for explaining another example of the relationship between the original image and the tile image when there is redundancy.
  • the image 180a and the image 180b are the same as those shown in FIG.
  • the tile area “2” of the image 180a corresponds to the tile areas “7”, “8”, “11”, and “12” of the image 180b. Since the image 180b is a higher-resolution image than the image 180a, the four tile images in these regions generally include more information than an image obtained by simply enlarging the tile image “2” cut out from the region “2”. It is.
  • the original image is a photograph or the like and the areas “7”, “8”, “11”, and “12” of the image 180b are not in focus, there is a large difference from the enlarged image of the tile image “2”. There may not be.
  • the tile image “2” is used instead of the tile image cut out from the area “7”, “8”, “11”, “12”. Even if it is enlarged and displayed, an image that is not significantly different from the original image can be displayed.
  • Such redundancy can be achieved only when the difference between the enlarged image of the low-resolution image and the high-resolution image is below the threshold, or when the frequency analysis of the high-resolution image is performed, only in the frequency band below the threshold. It can be detected when it is included.
  • FIG. 12 is a diagram for explaining a technique for defining a tile image sharing based on redundancy as described above by using a header.
  • an area that can be displayed using an image of a hierarchy included in another area in the area of the hierarchical structure defined by the header 150a is set as a null pointer without setting a pointer to a specific index block.
  • a pointer to a specific index block that is, a valid pointer is set in the shaded area, and a null pointer is set in the white area.
  • the area including the image is a null pointer.
  • the virtual space of the hierarchical data is traced in the direction in which the image is reduced, and an area including a reduced image of the same image area 156 and set with a valid pointer is searched (arrow F).
  • a valid pointer is set in the area 152d, the data of the index block 160d pointed to by the pointer is acquired (arrow G).
  • a tile area including the image area 156 is specified in the second hierarchy having the highest resolution among the hierarchies in which the index block 160d holds data, and a pointer associated therewith is acquired.
  • the image area 156 is located on the image plane of the second hierarchy of the area 152d can be easily calculated based on the scale ratio of each hierarchy in the hierarchy data, the above tile area is specified based on it.
  • the data of the tile image 170c pointed to by the acquired pointer is acquired (arrow H), and the display image of the image area 156 is generated using the acquired data.
  • the image area 156 has the size of the tile image
  • a partial area 172 of the tile image 170c which is a reduced image, is enlarged.
  • the position of the region 172 corresponding to the image region 156 can be easily calculated based on the scale ratio of both.
  • null pointer in the header 150a, it is not necessary to prepare index blocks for all the areas defined by the header 150a, and the data compression efficiency is improved.
  • the area where the null pointer is set does not necessarily have to be on the high resolution side, and as shown in FIG. 12, the null pointer is set in a state where the area 152e is sandwiched between the low resolution area and the high resolution area. It can also be set.
  • a null pointer for an arbitrary area basically, but it is always effective for the vertex of the hierarchical structure, that is, the area 152g including the image with the smallest resolution. Set the correct pointer. Thereby, even if a null pointer is set for any other region, at least the region 152g can be reached and a display image can be generated by following the hierarchical structure.
  • FIG. 13 is a diagram for explaining a method for defining sharing of tile images based on redundancy as described above by using index blocks.
  • an area that can be displayed using an image of another layer included in the same index block 160e is a null pointer without setting a pointer to a specific tile image.
  • a pointer to a specific tile image that is, a valid pointer is set in the tile area indicated by shading in the index block 160e, and a null pointer is set in the white area.
  • the area 152h including the image area 158 is specified in the header 150b, and the index block 160e indicated by the pointer set for the area 152h is acquired (arrow I).
  • the index block 160e indicated by the pointer set for the area 152h is acquired (arrow I).
  • the hierarchy belonging to the same index block 160e is reduced in the reduction direction. Tracing is performed, and a hierarchy in which a valid pointer is set for the reduced image in the same image area 158 is searched.
  • the image of the first layer 162h is first reached (arrow J), but a null pointer is set for the area corresponding to the image area 158. Therefore, the image of the 0th layer 162i having a lower resolution is reached (arrow K).
  • the image of the 0th hierarchy 162i since a valid pointer is set in the area corresponding to the image area 158, the data of the tile image 170d pointed to by the pointer is acquired (arrow L), and is used for the image area 158. Display images can be generated. Assuming that the image area 158 has the size of the tile image, to draw the image area 158, as shown in the figure, a partial area 174 of the tile image 170d which is a reduced image is enlarged. As described above, the position of the region 174 corresponding to the image region 158 can be easily calculated based on the scale ratio of both.
  • an effective pointer is set for all tile areas in the image of the 0th layer 162i having the smallest resolution.
  • the image of at least the 0th hierarchy 162i is reached by following the hierarchy in the reduction direction, and a display image can be generated.
  • the vertex of the hierarchical structure that is, the area including the hierarchy with the lowest resolution may have a small number of tile images as described above.
  • the corresponding index block An area in which a null pointer is set may be included in all the layers.
  • a specific pointer is set in the high resolution second layer 162g and the low resolution zero layer 162i, and only the first layer 162h having an intermediate resolution is null.
  • a display image is generated using the tile image pointed to by the pointer set for the same region of the second layer 162g.
  • a pointer to the same index block is set for a plurality of areas including the same hierarchy in the area of the hierarchical structure, or multiple tile areas in the index block are set.
  • a pointer to the same tile image may be set.
  • FIG. 14 is a flowchart illustrating a processing procedure in which the control unit 100b illustrated in FIG. 9 generates an image file.
  • the image hierarchy generation unit 120 reads the designated image data from the hard disk drive 50 (S50). Then, image data having a predetermined resolution is generated by performing a general reduction process, and hierarchical data composed of image data of a plurality of resolutions is generated (S52).
  • the image dividing unit 122 divides each layer image into tile images and stores them in the main memory 60 (S54). At this time, the position on the image of each tile image and the address indicating the storage area of the main memory 60 are recorded in association with each other, which is used for generating an index block.
  • a file in which tile images are recorded in advance may be read out.
  • the hierarchical data generation process in S52 and the image division process in S54 can be omitted. If the offset value of the address of each tile image from the head address of the file and the position on the image are included in the file, the head address in the main memory 60 of the file read in S50 is recorded in S54. Thus, the relationship between the address of each tile image and the position on the image can be acquired.
  • the redundancy detecting unit 124 confirms the presence or absence of redundancy as described above (S58). Specifically, the image of the Nth layer is scanned to check whether or not there is a region composed of a single color in the region corresponding to the size of the tile image of the N + 1th layer image. This is repeated in the direction of higher resolution.
  • the redundancy detection unit 124 is an N + 1 layer image obtained by performing a difference image between an image obtained by enlarging an image of the N layer up to the size of the image of the N + 1 layer and an image of the N + 1 layer and frequency analysis of the image of the N + 1 layer. Also, it is confirmed whether or not there is an area containing only the same level of information as the N-layer image. As a confirmation method, a method generally used in the field of image processing may be appropriately applied.
  • the header / index block generation unit 126 creates a header and an index block in consideration of redundancy (S60). Specifically, if an image belonging to the low resolution area can be enlarged and displayed for each area defined in the header, a null pointer is set for the area, and the corresponding index block is set for the other area. Generate and set a pointer to each in the header. Further, in each index block, a null pointer is set for an area in which a low resolution image can be enlarged and displayed among the images of a plurality of layers belonging thereto, and tiles cut out from the area for other areas Set a pointer to the image.
  • the image file generation unit 128 creates an image file for final output (S62).
  • the redundancy detection unit 124 does not detect redundancy in S58
  • all the tile image data generated by dividing in S54 is read from the main memory 60, and the image is displayed together with the header and index block generated in S60.
  • redundancy only the data of the tile image pointed to by the pointer set in the index block generated in S60 is read from the main memory 60, and is set as an image file together with the header and index block generated in S60.
  • FIG. 15 is a flowchart showing a processing procedure for displaying an image using an image file in the present embodiment.
  • This processing procedure can be realized by the control unit 100a shown in FIG.
  • the flowchart in the figure mainly describes the process of reading out the necessary data from the image file in response to a display area change request, decoding and displaying it, but loading from the hard disk, prefetching of the necessary data,
  • the basic flow such as writing is the same as that shown in FIG.
  • the input information acquisition unit 102 receives the request (S70). Then, the tile image specifying unit 110 derives a required change amount of the display image and determines frame coordinates to be newly displayed based on the derived change amount (S72).
  • the amount of change in the display image is the amount of movement in the vertical and horizontal directions and the amount of movement in the depth direction in the virtual space, and the frame coordinates to be displayed are the frame coordinates of the display area displayed so far and the amount of change derived Can be determined.
  • the tile image specifying unit 110 specifies an area to which the frame coordinates belong by referring to the header, and checks whether or not a valid pointer to the index block is set for the area (S74). If a valid pointer is set (Y in S74), the index block pointed to by the pointer is acquired (S78). If a null pointer is set (N in S74), the hierarchical structure is traced in the image reduction direction to search for an area where a valid pointer is set, and the pointer set for the detected area points to An index block is acquired (S76, S78).
  • a valid pointer to the tile image is set for the area corresponding to the frame coordinates (S80). If a valid pointer is set (Y in S80), information that uniquely defines the tile image such as the address and identification number of the tile image pointed to by the pointer is specified (S84). If a null pointer is set (N in S80), the hierarchy in the index block is traced in the image reduction direction, the hierarchy in which a valid pointer is set is searched, and the hierarchy is set for the corresponding area of the detected hierarchy. The tile image pointed to by the pointer is identified (S82, S84).
  • the decoding unit 112 reads the tile image data from the main memory 60 and decodes it (S88, S90).
  • the specified tile image is enlarged and drawn. There is a need to. For this reason, when a tile image is specified by following such a process, the tile image specifying unit 110 gives information to that effect to the decoding unit 112. The decoding unit 112 determines whether the tile image needs to be enlarged based on the information (S92).
  • the decoding unit 112 When enlargement is necessary (Y in S92), the decoding unit 112 enlarges the tile image based on the frame coordinates acquired from the tile image specifying unit 110, and stores the necessary area in the buffer memory 70 (S94). This process is similarly performed even if the corresponding tile image has been decoded (Y in S86). Regardless of the presence or absence of the enlargement process, the display image processing unit 114 draws a new area to be displayed in the tile image in the frame memory (S96). The drawing process includes a process for enlarging or reducing the data stored in the buffer memory 70 in accordance with the required resolution.
  • the pointer data structure may be a fixed-length array, an associative array, or a tree structure.
  • the header pointer is a fixed-length array
  • an identification number is assigned to each area, and the fixed-length pointer array is accessed using this as an index.
  • an associative array an identification number is assigned to each area, and the pointer associative array is accessed using the identification number as a key. In this case, since only a valid pointer needs to be held, the data size of the header can be suppressed.
  • a pointer that connects the areas is further defined, and a desired area is searched by following the pointer between the areas from the vertices of the hierarchical structure of the image.
  • a hierarchy is added to the vertex, it is only necessary to update the pointer near the vertex. Since the effectiveness varies depending on the data structure of the pointer as described above, the selection is appropriately made according to points to be emphasized such as memory cost and processing cost. Further, a method generally used in data search such as a B-tree structure may be introduced as appropriate. Since the pointer of the index block has the same mode, an optimal method may be selected in consideration of the processing speed.
  • the pointer to the index block and the pointer to the tile image may include a target index block, a file name in which the tile image is recorded, location information of a server connected to the network, and the like.
  • a target index block a file name in which the tile image is recorded
  • location information of a server connected to the network and the like.
  • FIG. 16 shows a configuration of the control unit 100c having a function of correcting an image in the present embodiment.
  • the control unit 100c may have the function for displaying an image shown in the control unit 100a in FIG. 7 and the function for generating an image file shown in the control unit 100b in FIG. The illustration is omitted.
  • the information processing apparatus 10 including the control unit 100c having only the function illustrated in FIG. 16 may be provided separately from the image processing apparatus that exhibits the display function and the image file generation function.
  • the control unit 100c includes an image file acquisition unit 318 that acquires an image file to be corrected, an update information acquisition unit 320 that acquires update information including an area updated by correction and image data of an update portion, and an updated tile image.
  • the image file acquisition unit 318 receives a designation input of the image to be corrected by the user, reads the corresponding image file from the hard disk drive 50, and stores it in the main memory 60.
  • the image file includes header, index block, and tile image data.
  • the update information acquisition unit 320 acquires update information input via the input device 20 while viewing the correction target image displayed on the display device 12 by the user.
  • the update information includes an area to be updated and image data after correction in the area. Specific examples will be described later.
  • the tile image generation unit 322 identifies a tile image that needs to be updated when the updated image is applied to the area to be updated, and generates a new tile image.
  • the area to be updated only covers a part of the tile image
  • the original tile image is read from the main memory 60, and a new tile image is generated by overwriting only the area to be updated.
  • a new tile image is generated by cutting out the corrected image.
  • a new tile image is generated for the areas to be updated in all hierarchies constituting the hierarchy data.
  • only a specific hierarchy may be updated depending on the designation of the user. In this case, it is possible to realize a mode in which different images are displayed within a specific resolution range.
  • the generated tile image is stored in the main memory 60.
  • the original image data stored in the main memory 60 by the image file acquisition unit 318 is left as it is, and the newly generated tile image is stored in another storage area.
  • the header / index block update unit 324 rewrites the pointer set for the area to be updated in the index block stored in the main memory 60 to point to the newly generated tile image. If there is no index block corresponding to the area, a new index block is generated, and the null pointer setting in the header is rewritten with a pointer indicating the generated index block.
  • the display image control unit 326 may be configured by functional blocks included in the control unit 100a illustrated in FIG. 7, but is not illustrated here.
  • the display image control unit 326 displays the image to be corrected by the same processing procedure as described in FIG. 15, but the header and the index block are updated as described above according to the correction of the image by the user. Accordingly, the tile image used when drawing the image changes to a new one. In this way, it is possible to correct or change the image while confirming the display image.
  • the newly generated tile image is added to another storage area without updating the data of the original tile image, and the image is updated by changing the reference destination by the index block or the header.
  • the image is updated by changing the reference destination by the index block or the header.
  • the image file generation unit 328 overwrites the original tile image data with the newly generated tile image data when the user finishes the correction.
  • the newly generated tile image data is stored as a separate file from the original tile image data. Then, an updated index block and header are added to form an image file.
  • FIG. 17 shows an example of correcting an image as a premise for explanation.
  • an ellipse and a triangle are drawn in the image 190 before correction.
  • a star figure 194 is added to the upper right of the image as shown in the corrected image 192.
  • FIG. 18 schematically shows changes in the pointers of the index block in such correction.
  • the pointer is indicated by an arrow, but only representative arrows are shown in order to avoid complication of the figure.
  • each area defined by the header 150 is set with a pointer to one of the index blocks 160 or a null pointer.
  • a pointer to one of the tile images 170e generated before the correction is set for each tile area of a plurality of layers belonging to the index block 160 pointed to by the pointer, as indicated by a dashed arrow. If the upper right region of the image 190 before correction in FIG. 17 is a monochrome background, the region shares one tile image. In FIG. 18, many broken arrows indicate one tile image 170f. Of course, pointers to individual tile images are set in the other areas.
  • a new tile image in which a star graphic of each resolution is added as a tile image in the corresponding region of each layer. 170g is generated and stored in a storage area different from the original tile image 170e. Then, in the index block 160, all pointers to the tile areas related to the area to be updated are updated to point to any tile image of the new tile image 170g.
  • the updated pointer is indicated by a one-dot chain line arrow. Since the area to be updated is no longer the background after the update, as shown in the figure, pointers to the respective tile images are set for the respective tile areas. Further, the area other than the area to be corrected may remain pointing to the original tile image 170e.
  • FIG. 19 is a diagram for explaining processing when a hierarchy is added to the high resolution side.
  • the image before correction is hierarchical data 200 including a 0th hierarchy 154i, a first hierarchy 154j, a second hierarchy 154k, and a third hierarchy 154l.
  • the header it is assumed that valid pointers to the index block are set for all areas, and in FIG.
  • a tile image of the update target area is newly generated for each layer as described above.
  • the added image has a higher resolution than the third hierarchy 154l having the highest resolution in the original hierarchy data, it is necessary to add a new hierarchy.
  • the layer to be added is the fourth layer 154m. A region where a new tile image is to be generated is shown in black in the figure.
  • the region other than the region to be updated is displayed at the resolution of the fourth layer 154m, it has the highest resolution among the original layer data.
  • the image of the third hierarchy 154l is enlarged and displayed. Therefore, a null pointer is set for a region other than the update target region in the fourth layer 154m, and the tile image of the third layer 154l is used. The area where the null pointer is set is shown in white in the figure.
  • a method of setting in the header there are a method of setting in the header and a method of setting in the index block for sharing the tile image.
  • a hierarchy corresponding to the fourth hierarchy 154m to be added may already be defined in the existing index block. Since the fourth layer 154m does not exist in the original layer data, a null pointer is set for the same layer of the index block.
  • the null pointer set for the update target area of the fourth hierarchy 154m is updated with a pointer to the newly generated tile image.
  • the area other than the area to be updated remains a null pointer.
  • the index block pointer is updated for each layer of low resolution.
  • FIG. 20 is a diagram for explaining the change of the header and the index block when there is no index block to which the layer corresponding to the fourth layer 154m to be added belongs.
  • an area 152i indicates an area defined for the hierarchical data before correction. Of course, there may be a plurality of areas defined by the header 150, but in the figure, they are collectively shown as one area 152i.
  • the 0th hierarchy 154i, the 1st hierarchy 154j, the 2nd hierarchy 154k, and the 3rd hierarchy 154l which existed before correction belong to the area
  • a pointer to the index block 160f is set for each area.
  • a pointer to the existing tile image 170h is set for each tile area defined by the index block 160f (dashed arrow).
  • a new area including the hierarchy is added.
  • a valid pointer is set only for the region 152j including the region to be updated, and a null pointer is set for the other regions.
  • a new index block 160g is generated, and a pointer to the index block 160g is set for the area 152j. If the hierarchy to be added is only the fourth hierarchy 154m, out of the three hierarchies belonging to the newly generated index block 160g, the pointer to the tile image may be set at the lowest hierarchy, and the other hierarchies are Set a null pointer for all areas.
  • the newly generated index block 160g a pointer is set so as to point to one of the newly generated tile images 170i with respect to the tile area included in the update target area (dashed line arrow).
  • the existing index block 160f is updated so that the pointer set for the tile area included in the area to be updated points to one of the newly generated tile images 170i.
  • the newly generated index block 160g may be added to the end of the original image file or may be another file. Thereby, the images before and after the update can be displayed.
  • FIG. 21 is a diagram for explaining processing for adding a new area to an existing image.
  • the image before addition is hierarchical data 204 including a 0th hierarchy 154i, a first hierarchy 154j, a second hierarchy 154k, and a third hierarchy 154l.
  • a valid pointer to the index block is set in the header.
  • hierarchical data 206 is generated by adding a new area to the image of each hierarchy at a size corresponding to each resolution.
  • the hierarchy data 206 includes a 0th hierarchy 154n, a first hierarchy 154o, a second hierarchy 154p, a third hierarchy 154q, and a fourth hierarchy 154r.
  • the fourth layer 154r and the third layer 154q can be generated by adding the tile image of the additional area shown by shading to the tile image of the original image shown by white.
  • a tile image indicated by shading in which the additional area and the original image are mixed is added to the area indicated by white where the original tile image can be used as it is.
  • the first hierarchy 154o and the 0th hierarchy 154n are all shaded because the original image and the additional area are mixed in all the tile images constituting the first hierarchy 154o and the 0th hierarchy 154n.
  • FIG. 22 is a diagram for explaining changes in the header and the index block when a new area is added.
  • a white triangle indicates a region 208 where the original tile image can be used, and a shaded portion indicates a region 210 that is changed by addition or addition.
  • the broken lines indicate the 0th hierarchy 154n, the 1st hierarchy 154o, the 2nd hierarchy 154p, the 3rd hierarchy 154q, and the 4th hierarchy 154r in FIG. 21, and the area where the original tile image can be used in each hierarchy, and additional or The area to be updated is determined by the addition, resulting in a structure as shown in FIG. Since the area defined by the header is generated sequentially from the top of the hierarchical structure, when the header 150 changes in this way, the area delimiter changes.
  • the existing index block can be used as it is.
  • a pointer to the index block 160h is set for each area (not shown) of the area 208.
  • a pointer to an existing tile image 170h is set (broken arrow).
  • a new index block 160i corresponding to the area to be added is generated, and a pointer to the index block 160i is set for the new area 210 in the header 150.
  • the area 210 may have a plurality of areas defined in the header 150, but is not shown.
  • a pointer to one of the new tile images 170k required by adding the area is set for each tile area (dashed line arrow).
  • the new tile image 170k is a tile image of the region to be added itself, or a tile image in which the region to be added and the original image are mixed, which are indicated by shading in FIG.
  • the area to be added is a monochrome background, one tile image can be shared.
  • the set pointer and thus the index block pointed to by it, can be used as it is. Therefore, there is no need to update the pointer to the tile image set in the index block.
  • the right and lower regions of the image are added, but the region is divided so that the existing index block can be used even after the image is expanded in any direction. As a result, changes in the header and index block can be minimized.
  • FIG. 23 is a diagram illustrating a method of dividing an area defined in a header when adding a hierarchy to the vertex side of a hierarchical structure such as when expanding the image size as described in FIGS. 21 and 22. .
  • the entire area of the 0th to 1st hierarchies is the first area 152k
  • the entire area of the 2nd to 4th hierarchies is divided into the second area 152l
  • the area is divided into a third area 152m, a fourth area 152n,.
  • the configuration of this area is the same as that shown in FIG.
  • the number of tile areas defined by one index block is prepared equally regardless of the index block, but the first area 152k is a 0th layer 2 ⁇ 2 tile image composed of one tile image. Since the index block 160j corresponding to the area is composed of only the first layer configured, only that number of tile areas is used, and null pointers are set to the other tile areas and invalidated.
  • the number of effective tile areas in the horizontal direction is indicated by a rectangle for each layer. Accordingly, the index block 160j corresponding to the first region 152k is shown as one and two rectangles. Since the index blocks 160k, 160l, etc. corresponding to other areas such as the second area 152l and the third area 152m can make all 4 ⁇ 4, 8 ⁇ 8, and 16 ⁇ 16 tile areas effective, there are four. 8 and 16 rectangles are shown.
  • the added hierarchy is further included in the first area 152o while keeping the hierarchy that originally belonged to the first area. Since the index block 160j corresponding to the original first area 152k is used for only two hierarchies out of the three hierarchies prepared as the data area, the hierarchies are added only by using the hierarchies that have been invalidated only in the first area 152o. Can be absorbed. Therefore, the second to fourth hierarchies (third to fifth hierarchies after the addition of hierarchies) included in the second area 152l in the original hierarchical data 230 can belong to the same area as they are. However, since the image of each layer is expanded, a new area is defined for the expanded portion and an index block is generated. The same applies to the lower layers.
  • the added hierarchy data 234 one more hierarchy is added to the top of the hierarchy data 232, and the added hierarchy is further included in the first area 152p while keeping the hierarchy that originally belonged to the first area.
  • the first area 152p has four layers, but the tile area prepared in the corresponding index block 160m is larger than the number of tile images in the first area 152p. This information is satisfied by the index block 160m. Then, the hierarchy below that can belong to the same area as that belonging to the first hierarchy data 230.
  • the added hierarchy is divided into four areas that belong to the first area 152p in the hierarchy data 234, and the first area is divided into two areas. 152q and the second region 152r.
  • the index block 160n corresponding to the first area 152q becomes the first area 152k of the first hierarchy data 230.
  • the index block 160j corresponding to it consists of only one tile image layer and 2 ⁇ 2 tile image layers.
  • the second area 152r is the same as the second area 152l of the hierarchical data 230.
  • the hierarchy below that can belong to the same area as that belonging to the first hierarchy data 230.
  • the area can be defined as much as possible without changing to other areas, and the existing index block can be used as it is.
  • the tile image of the added area is between the existing tile images. Therefore, it is necessary to rearrange the tile images and reassign the identification numbers. As the number of tile images increases, the load on this process increases.
  • the image area can be expanded only by local data change, so the processing cost is low, and the data display being updated and the final image file generation are realized with high responsiveness. it can.
  • FIG. 24 is a flowchart showing a processing procedure when the user corrects or modifies an image in the image processing apparatus.
  • the image file acquisition unit 318 reads the corresponding image file from the hard disk drive 50 and stores it in the main memory 60 (S110).
  • the display image control unit 326 displays the image of the image file on the display device 12 (S112).
  • the update information acquisition unit 320 accepts the update information
  • the tile image generation unit 322 receives a new tile image of the update part. Is stored in the main memory 60 (S116).
  • the input of update information performed by the user is performed, for example, by displaying an image to be newly pasted in the vicinity of the image displayed on the display device 12 and allowing the user to drag it to a desired area with a pointing device. Alternatively, a character or picture may be directly drawn with a pointing device, or a command for adding an area may be input.
  • the header / index block update unit 324 appropriately updates the header and index block according to the update content of the image as described above (S118). Then, the display image control unit 326 updates the display of the display device 12 by reading and decoding the tile image data that is newly referred to (S120). The processes from S114 to S120 are repeated until the correction is completed and update information cannot be obtained.
  • the image file generation unit 328 uses the newly created tile image stored in the main memory 60 as the original image file.
  • the image data is reconstructed by being incorporated in the image data (S122).
  • only the newly created tile image is stored in a separate file. Then, it is output as an image file together with the final header and index block data updated in S118 (S124).
  • the header, index block, and tile image are stored in a separate storage area from the existing data.
  • an operation Undo
  • the image can be easily returned to the previous state by returning the reference destination of the data.
  • the operation re-execution (Redo) is performed only by changing the reference destination.
  • the hierarchical data is composed of three data sets: a header, an index block, and a tile image.
  • the tile image can be made independent from the position on the original image, management becomes easier when the image is modified, etc., and the tile image is shared by multiple areas in consideration of image redundancy. Therefore, the data size of the tile image can be efficiently reduced.
  • the pointer set in the header or index block is invalidated, and in the invalid area, the hierarchy is traced to the lower resolution side and the valid pointer is set Explore. Thereby, the size of the data itself used for the index can be reduced as compared with the case where the pointer to any tile image is set for all the regions.
  • the hierarchical structure is divided into regions by the header, and an index block is associated with each region.
  • a plurality of hierarchies are included in one area.
  • data that is likely to be displayed or modified at a time can be handled collectively, and it is easy to avoid an inefficient situation in terms of storage area and processing, such as loading unnecessary data into the main memory.
  • by fixing the number of tile areas that can be defined in the index block fragmentation during data caching does not occur, and storage area management is easy. Even if the image is enlarged and the data size is increased, the data to be displayed and corrected can be efficiently accessed by dividing the area of the hierarchical data.
  • index block For example, in the case of hierarchical data composed of 80000 tile images, if the number of tile areas defined by the index block is 400, 200 index blocks are generated.
  • the index block when it is desired to access one tile image, if it is just a list of 80000 tile images, it is necessary to search for them in order, but if the area is divided as in the present embodiment, 1 Searching for one area is equivalent to searching for 400 tile images, and efficient access is possible.
  • the average number of index blocks required for an image displayed at one time is one to two, and four or more index blocks are required. It is rare. Therefore, compared with the case where the index to the tile image is held without dividing the area, the index data size required at one time can be reduced, and the main memory can be saved. As a result, there is a high possibility that an aspect in which a plurality of hierarchical data is processed simultaneously can be realized without squeezing the main memory.
  • the pointer set in the header and index block can be set to the file that records the index block and tile image.
  • data read from a plurality of index block files and tile image files can be used even with one hierarchical data, and hierarchical data can be generated and updated more flexibly.
  • the files are different, it is not necessary to store them in the same storage medium, so that huge image data exceeding 4 GB, for example, can be generated. Accordingly, it is possible to process uncompressed images, HDR (High Dynamic Range) images, attribute information, and the like.
  • HDR High Dynamic Range
  • a file including header, index block, and tile image data is distributed as normal version content.
  • a separate tile image file with a higher resolution is prepared for addition.
  • a pointer to the tile image for addition is also described. However, unless the tile image is obtained, the pointer is invalid and is not displayed.
  • the user upgrades the content, an additional file is downloaded, and the pointer to the tile image recorded in the file is valid, so that the additional image is displayed. In this way, the upgrade can be easily performed without changing the normal content file. You may be charged for the upgrade.
  • Embodiment 2 In the first embodiment, the image file is generated and corrected mainly based on information input by the user.
  • an aspect of rendering into hierarchical data by a graphic processor will be described.
  • the present embodiment can be realized by the information processing apparatus 10 shown in FIG. 4 of the first embodiment.
  • FIG. 25 shows in more detail the configuration of the control unit 100 and the main memory 60 in the information processing apparatus 10 according to the present embodiment.
  • the control unit 100 includes a main processor 400 and a graphic processor 402.
  • the main processor mainly executes an application program started in the information processing apparatus 10 and controls other functional blocks included in the information processing apparatus 10.
  • the graphic processor 402 executes image processing in accordance with an image processing request from the main processor 400. Data necessary for image processing is stored in the main memory 60.
  • the graphic processor 402 reads out the data and appropriately performs image processing, and then writes the result in the main memory 60 to perform image processing.
  • the graphic processor 402 performs rendering using the model data 418 stored in the main memory 60 in accordance with an image processing request from the main processor 400, and updates the color buffer 414 and the Z buffer 416 that are also stored in the main memory 60.
  • each of the color buffer 414 and the Z buffer 416 has a hierarchical data structure. That is, the color value pixel plane that holds color information for each pixel of the drawing target image and the Z value pixel plane that holds depth information from the viewpoint for each pixel are associated with the plurality of resolutions of the drawing target image. It has a hierarchical structure. As described in the first embodiment, the hierarchical data may be composed of headers, index blocks, and tile data.
  • the tile data is data for each tile area obtained by dividing the pixel plane of each layer into a predetermined size.
  • the graphic processor 402 performs rendering in accordance with a request from the main processor 400, and updates the hierarchical data to reflect the rendering result of the rendering unit 404 in each layer of the color buffer 414 and the Z buffer 416 stored in the main memory 60. Part 406.
  • the graphic processor 402 further includes a GPU color buffer 408, a GPU-Z buffer 410, and a dirty mask 412 as storage areas temporarily used during rendering.
  • the dirty mask 412 has an area of the same size as the GPU color buffer 408 and the GPU-Z buffer 410, and each pixel holds 1-bit information.
  • FIG. 26 is a flowchart showing a processing procedure of rendering to hierarchical data.
  • the main processor 400 makes a rendering request to the graphic processor 402 (S200).
  • Data necessary for rendering is stored in the main memory 60 as described above.
  • the color buffer 414 and the Z buffer 416 having a hierarchical structure as described above are also included.
  • the rendering unit 404 of the graphic processor 402 specifies the layer and area to be rendered in the color buffer 414 and the Z buffer 416 based on the model data 418 (S202).
  • the rendering unit 404 reads the data of the area from the color buffer 414 and the Z buffer 416 and spreads the data in the GPU buffer including the GPU color buffer 408 and the GPU-Z buffer 410 (S204). Similar to the tile image specifying method described in the first embodiment, the method of specifying tile data from the hierarchy and area to be rendered is searched in the order of header and index block. Therefore, reading is performed in units of tile data.
  • the rendering unit 404 initializes the dirty mask 412 (S206). For example, each pixel value is set to “0”. Then, rendering is performed by a general method using the model data 418, the GPU color buffer 408 and the GPU-Z buffer 410 are appropriately updated, and the pixel value to be updated in the dirty mask 412 is updated to “1” ( S208).
  • the hierarchical data of the color buffer 414 and the Z buffer 416 in the main memory 60 is updated (S210). Specifically, first, among the hierarchical data, the tile area including the pixel to be updated is specified based on the pixel value of the dirty mask 412 in the hierarchy and area to be rendered, and the data of the tile area is stored in the GPU color buffer. 408, updated based on the rendering result of the GPU-Z buffer 410.
  • new tile data is generated, and the pointer set in the index block is updated to the pointer to the new tile data. If frequent updating is expected, the generation of tile data may be omitted and only the pointer may be updated, and the tile data may be generated after the image is confirmed.
  • tile data of a region corresponding to the updated region is newly generated, and the pointer set in the index block is updated with a pointer to the new tile data. .
  • the rendering result is enlarged or reduced and reflected in new tile data.
  • tile data of the rendering target area originally does not exist in the color buffer 414 and the Z buffer 416, such as when rendering an image with a resolution higher than that of the existing hierarchical data
  • the corresponding area of the upper hierarchical level is enlarged and the GPU is expanded. Cover the color buffer 408 and the GPU-Z buffer 410.
  • the header or index block pointer is updated.
  • tile data is generated and pointers are updated for layers other than the layer to be rendered, as described above. This process is the same as that described with reference to FIG. 19 in the first embodiment.
  • the rendering result is reflected in the hierarchical data in S210, if the area in which the rendering result is expanded to reflect in the hierarchy below the rendering target hierarchy occupies one of the tile areas in the hierarchy, the tile data. Deletes and invalidates the pointer to it. Thereby, the size of tile data can be reduced.
  • a hierarchy in which the pointer is valid may be searched and an image in the upper hierarchy may be enlarged.
  • the color buffer 414 and the Z buffer 416 may individually hold or share the header and the index block.
  • the index block sets a plurality of pointers for one tile area, that is, pointers to color buffer tile data and Z buffer tile data. Thereby, the data of the header and the index block can be compressed rather than being held individually.
  • a pointer to tile data in the Z buffer that is no longer necessary in the index block may be deleted.
  • a target pointed to by a plurality of pointers set in one tile area in the index block is not limited to a color buffer or a Z buffer depending on the contents of the image.
  • the Z buffer may be shared among multiple color buffers. For example, two color buffer data and one Z buffer data may be prepared, rendering may be performed with one color buffer and Z buffer, and rendering may be performed with the other color buffer and Z buffer. In this case, it is more effective in terms of control to hold the header and the index block individually.
  • This embodiment of rendering the color buffer and Z buffer as hierarchical data can be applied to anti-aliasing. That is, hierarchical data composed of a high resolution hierarchy and a display image hierarchy having a lower resolution is generated. In general supersampling, it is necessary to prepare a storage area for a high-resolution image even for an area where no object exists, such as a monochrome background. On the other hand, by making these buffers hierarchical data as described above, an area obtained by enlarging the low-resolution hierarchy can be excluded from the rendering target of the high-resolution image.
  • the user specifies the necessary resolution for each area, only the minimum necessary area can be rendered in each layer, and the memory usage efficiency is improved.
  • the generated tile data need not be compressed. If anti-aliasing is required for the entire image, super-sampling may be performed, and the anti-aliasing method may be switched depending on the ratio of the target area.
  • a scaling process for enlarging or reducing an image is frequently required to reflect the rendering result in each hierarchy.
  • image data is sent and received between the graphic processor and main memory each time scaling processing is performed, there is a concern that the transfer bandwidth between the two may be compressed. Therefore, in the present embodiment, as shown in FIG. 27, a scaler 422 that performs scaling processing may be built in the main memory 60.
  • the graphic processor 520 and the main memory 60 need only exchange images with the resolution to be rendered, and the scaler 422 reflects the rendering result in each layer in the layer data in the main memory 60. To do.
  • compression of the transfer bandwidth between the graphic processor 520 and the main memory 60 can be prevented, and hierarchical data can be rendered efficiently.
  • the scaler 422 is not built in the main memory 60, and the same effect can be obtained by connecting to the main memory 60 by a bus different from the bus between the graphic processor 520 and the main memory 60.
  • the embodiment described above can be realized by using a general graphic processor.
  • a general graphic processor when addressing an internal frame buffer, that is, the above-described GPU buffer, in order to suppress the number of reading and writing from the main memory, a memory address close to a grouped area on the screen is assigned. Take the technique.
  • the area used for the GPU buffer must be a continuous address space. That is, it is not possible to cover areas with discontinuous addresses. 28 and 29 show the state of processing at that time.
  • FIG. 28 when a partial region 430 of the third layer image of the layer data is to be rendered, addresses “11” to “18” are allocated.
  • the graphic processor 402 can lay out the area 430 in the GPU buffer.
  • FIG. 29 it is assumed that a part of the region 432 in the same third hierarchy is to be rendered.
  • the area 432 includes areas to which the addresses “11” and “12” have been assigned in FIG. In this case, addresses “19” to “24” are allocated to other areas of the area 432.
  • the area 432 includes areas where the addresses are discontinuous, and the graphic processor 402 cannot spread the area in the GPU buffer.
  • a memory controller (not shown) of the main memory 60 may be provided with a table that associates the position of the area with the address to be allocated. In the case of the area 432 in FIG.
  • 1 information processing system 10 information processing device, 12 display device, 20 input device, 38 tile images, 50 hard disk drive, 60 main memory, 100 control unit, 102 input information acquisition unit, 106 load block determination unit, 108 load unit, 110 tile image identification unit, 112 tile decoding unit, 114 tile display image processing unit, 120 image layer generation unit, 122 image segmentation unit, 124 redundancy detection unit, 126 header / index block generation unit, 150 header, 160 index block, 170 tile Image, 318 image file acquisition unit, 320 update information acquisition unit, 322 tile image generation unit, 324 header / index block update unit, 326 display image control unit, 328 image file generation unit, 400 main processor, 402 graphic processor, 404 tile rendering unit, 406 hierarchical data update unit, 408 GPU color buffer, 410 GPU-Z buffer, 412 dirty mask, 414 color buffer, 416 Z buffer, 418 model data , 422 scaler, 520 graphic processor.
  • the present invention can be used for information processing apparatuses such as computers, game machines, image processing apparatuses, and image drawing apparatuses.

Abstract

 一の画像で解像度の異なる画像データを解像度順に並べた階層データを、ヘッダ150、インデックスブロック160、タイル画像170、の3つのデータからなる構造とする。ヘッダ150は、階層データを生成する仮想空間におけるピラミッド状の階層構造体を分割してなる複数の領域を定義し、領域ごとにインデックスブロック160のいずれかへのポインタが設定されたデータである。インデックスブロック160は、ヘッダ150で定義された構造体の領域ごとに生成され、各領域に属する複数階層の画像上の位置に対しタイル画像170のいずれかへのポインタが設定されるデータである。タイル画像170は、実際に画像を描画する際に用いる画像データである。

Description

画像ファイル生成装置、画像処理装置、画像ファイル生成方法、画像処理方法、および画像ファイルのデータ構造
 本発明は、ディスプレイに表示する画像を拡大/縮小、または上下左右に移動させる画像処理技術に関する。
 ゲームプログラムを実行するだけでなく、動画を再生できる家庭用エンタテインメントシステムが提案されている。この家庭用エンタテインメントシステムでは、GPUがポリゴンを用いた三次元画像を生成する(例えば特許文献1参照)。
 画像表示の目的に関わらず、画像をいかに効率よく表示するかは常に重要な問題となる。特に高精細な画像を高速に描画するためには様々な工夫が必要となり、例えばテクスチャデータを別に保持しマッピングを効率的に行う手法について提案がなされている(例えば非特許文献1および2参照)。
米国特許第6563999号公報
Sylvain Fefebvre, et. al., Unified Texture Management for Arbitrary Meshes, Repport de recherche, N5210, May 2004, Institut National De Recherche En Informatique Et En Automatique Martin Kraus, et. al., Adaptive Texture Maps, Graphics Hardware (2002), pp1-10, The Eurographics Association
 画像が高精細化しても、データサイズを小さく抑えること、高速に描画することは、画像を応答性良く表示するためには常に重要な課題である。また、画像の一部などを修正する必要が生じた場合、上述のテクスチャマッピングなどデータ構造を工夫する技術を適用したとしても、一度構築したデータ構造を全て更新し直す必要があるなど、更新処理が煩雑になりやすいという問題があった。
 本発明はこのような課題に鑑みてなされたものであり、その目的は、サイズの大きな画像であってもデータサイズを抑えるとともに、効率的に生成、表示、修正を行える画像処理技術を提供することにある。
 本発明のある態様は画像ファイル生成装置に関する。この画像ファイル生成装置は、入力された画像データから、異なる解像度の複数の画像データを生成し、解像度順に階層化して構成される階層データを生成する画像階層生成部と、階層データを構成する各階層の画像データを所定サイズのタイル画像に分割する画像分割部と、階層データを構成する各階層の画像データの分割後の各タイル領域と、当該領域を描画する際に用いるタイル画像のデータとを対応づけたインデックスデータを作成するインデックス作成部と、タイル画像のデータとインデックスデータとを含む画像ファイルを生成する画像ファイル生成部と、を備え、インデックス作成部は、階層データの画像平面とそれに垂直な解像度の軸によって定義される仮想空間において階層データで構成される階層構造体を分割してなる領域ごとに、前記タイル領域ごとのインデックスデータをまとめたインデックスブロックの形式で、前記インデックスデータを生成することを特徴とする。
 本発明の別の態様は画像処理装置に関する。この画像処理装置は、一の画像で異なる解像度の画像データで構成される階層データのそれぞれの画像を所定サイズに分割してなるタイル画像データと、階層データを構成する各階層の画像データの分割後の各タイル領域と、当該領域を描画する際に用いるタイル画像のデータとを対応づけたインデックスデータを含む画像ファイルを保持する記憶装置と、画像平面上の移動および解像度の変更を含む表示領域変更要求をユーザから受け付ける入力情報取得部と、表示領域変更要求に応じて新たに表示すべき領域を描画するのに必要なタイル画像のデータを、インデックスデータを参照することによって特定するタイル画像特定部と、特定したタイル画像のデータを前記記憶装置より読み出し、新たに表示すべき領域を描画する表示画像処理部と、を備え、インデックスデータは、階層データの画像平面とそれに垂直な解像度の軸によって定義される仮想空間において階層データで構成される階層構造体を分割してなる領域ごとに、タイル領域ごとのインデックスデータをまとめたインデックスブロックの形式を有することを特徴とする。
 本発明の別の態様は画像処理装置に関する。この画像処理装置は、一の画像で異なる解像度の画像データで構成される階層データのそれぞれの画像を所定サイズに分割してなるタイル画像データと、階層データを構成する各階層の画像データの分割後の各タイル領域と、当該領域を描画する際に用いるタイル画像のデータとを対応づけたインデックスデータを含む画像ファイルを読み出す画像ファイル取得部と、画像ファイルを用いて表示される画像の更新情報を取得する更新情報取得部と、更新情報に基づき、更新対象の領域を描画する際に用いる新たなタイル画像のデータを生成するタイル画像生成部と、インデックスデータにおいて更新対象の領域に含まれるタイル領域に対応づけられるタイル画像のデータを、新たなタイル画像のデータに更新するインデックスデータ更新部と、タイル画像生成部が生成したタイル画像のデータと、前記インデックスデータ更新部が更新したインデックスデータを含む新たな画像ファイルを生成する画像ファイル生成部と、を備え、インデックスデータは、前記階層データの画像平面とそれに垂直な解像度の軸によって定義される仮想空間において前記階層データで構成される階層構造体を分割してなる領域ごとに、タイル領域ごとのインデックスデータをまとめたインデックスブロックの形式を有することを特徴とする。
 本発明のさらに別の態様は画像ファイル生成方法に関する。この画像ファイル生成方法は、入力された画像データから、異なる解像度の複数の画像データを生成し、解像度順に階層化して構成される階層データを生成しメモリに格納するステップと、階層データを構成する各階層の画像データをメモリより読み出し所定サイズのタイル画像に分割するステップと、階層データを構成する各階層の画像データの分割後の各タイル領域と、当該領域を描画する際に用いるタイル画像のデータとを対応づけたインデックスデータを作成しメモリに格納するステップと、タイル画像のデータとインデックスデータとを含む画像ファイルを生成しめもりに格納するステップと、を含み、インデックスデータを作成するステップは、階層データの画像平面とそれに垂直な解像度の軸によって定義される仮想空間において階層データで構成される階層構造体を分割してなる領域ごとに、タイル領域ごとのインデックスデータをまとめたインデックスブロックの形式で、前記インデックスデータを生成することを特徴とする。
 本発明のさらに別の態様は画像処理方法に関する。この画像処理方法は、一の画像で異なる解像度の画像データで構成される階層データのそれぞれの画像を所定サイズに分割してなるタイル画像データと、階層データを構成する各階層の画像データの分割後の各タイル領域と、当該領域を描画する際に用いるタイル画像のデータとを対応づけたインデックスデータを含む画像ファイルをメモリより読み出すステップと、画像平面上の移動および解像度の変更を含む表示領域変更要求をユーザから受け付けるステップと、表示領域変更要求に応じて新たに表示すべき領域を描画するのに必要なタイル画像のデータを、インデックスデータを参照することによって特定するステップと、特定したタイル画像のデータをメモリより読み出し、新たに表示すべき領域を描画し表示装置に表示するステップと、を含み、インデックスデータは、階層データの画像平面とそれに垂直な解像度の軸によって定義される仮想空間において階層データで構成される階層構造体を分割してなる領域ごとに、タイル領域ごとのインデックスデータをまとめたインデックスブロックの形式を有することを特徴とする。
 本発明のさらに別の態様は画像処理方法に関する。この画像処理方法は、一の画像で異なる解像度の画像データで構成される階層データのそれぞれの画像を所定サイズに分割してなるタイル画像データと、階層データを構成する各階層の画像データの分割後の各タイル領域と、当該領域を描画する際に用いる前記タイル画像のデータとを対応づけたインデックスデータを含む画像ファイルをメモリより読み出すステップと、画像ファイルを用いて表示される画像の更新情報を取得するステップと、更新情報に基づき、更新対象の領域を描画する際に用いる新たなタイル画像のデータを生成しメモリに格納するステップと、インデックスデータにおいて更新対象の領域に含まれるタイル領域に対応づけられるタイル画像のデータを、新たなタイル画像のデータに更新するステップと、新たに生成したタイル画像のデータと、更新した前記インデックスデータを含む新たな画像ファイルを生成してメモリに格納するステップと、を含み、インデックスデータは、階層データの画像平面とそれに垂直な解像度の軸によって定義される仮想空間において階層データで構成される階層構造体を分割してなる領域ごとに、タイル領域ごとのインデックスデータをまとめたインデックスブロックの形式を有することを特徴とする。
 本発明のさらに別の態様は画像ファイルのデータ構造に関する。このデータ構造は、画像の少なくとも一部をディスプレイに表示するために記憶装置から読み出される画像ファイルのデータ構造であって、一の画像で異なる解像度の画像データを所定サイズに分割してなるタイル画像のデータと、画像データを解像度順に階層化した階層データにおける各画像データの分割後の各領域と当該領域を描画する際に用いるタイル画像のデータとを対応づけたインデックスデータと、を対応づけ、インデックスデータは、階層データの画像平面とそれに垂直な解像度の軸によって定義される仮想空間において階層データで構成される階層構造体を分割してなる領域ごとに、タイル領域ごとのインデックスデータをまとめたインデックスブロックの形式を有することを特徴とする。
 本発明のさらに別の態様は画像処理装置に関する。この画像処理装置は、プログラムを実行し新たに表示すべき画像の描画のための情報を含む画像処理要求を発行する画像処理要求部と、描画対象の画像の画素ごとの色情報を保持するカラー値画素平面と、画素ごとの視点からの奥行き情報を保持するZ値画素平面とを、描画対象画像の複数の解像度に対応させて階層化した階層カラーバッファおよび階層Zバッファを記憶する階層データ記憶部と、画像処理要求を受け付け画像処理を実行し、階層カラーバッファおよび階層Zバッファを更新する画像処理部と、を備え、画像処理部は、階層カラーバッファおよび階層Zバッファから読み出た描画対象の階層および領域のデータをそれぞれ記録する描画用カラーバッファおよび描画用Zバッファと、画像処理要求に基づき描画対象の階層および領域を特定して描画用カラーバッファおよび描画用Zバッファにデータを読み出し、画像処理要求に基づき画像処理演算を行いデータを更新する描画部と、更新された描画用カラーバッファおよび描画用Zバッファのデータに対し、複数の解像度に対応させてスケーリング処理を施し、階層カラーバッファおよび階層Zバッファの各階層のデータを更新する階層データ更新部と、を備えたことを特徴とする。
 本発明のさらに別の態様は画像処理方法に関する。この画像処理方法は、プログラムを実行し新たに表示すべき画像の描画のための情報を含む画像処理要求を発行するステップと、描画対象の画像の画素ごとの色情報を保持するカラー値画素平面と、画素ごとの視点からの奥行き情報を保持するZ値画素平面とを、描画対象画像の複数の解像度に対応させて階層化した階層カラーバッファおよび階層Zバッファをメモリに記憶するステップと、画像処理要求を受け付け画像処理を実行し、階層カラーバッファおよび階層Zバッファを更新するステップと、を含み、階層カラーバッファおよび階層Zバッファを更新するステップは、画像処理要求に基づき描画対象の階層および領域を特定し、階層カラーバッファおよび階層Zバッファからそれぞれデータを読み出して、描画用カラーバッファおよび描画用Zバッファに書き込むステップと、画像処理要求に基づき画像処理演算を行い描画用カラーバッファおよび描画用Zバッファのデータを更新するステップと、更新された描画用カラーバッファおよび描画用Zバッファのデータに対し、複数の解像度に対応させてスケーリング処理を施し、階層カラーバッファおよび階層Zバッファの各階層のデータを更新するステップと、を含むことを特徴とする。
 なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
 本発明によると、幅広い解像度で画像を表示するための画像データを効率的に構築できる画像処理装置を提供することができる。
実施の形態1の形態にかかる情報処理システムの使用環境を示す図である。 図1の画像処理システムに適用できる入力装置の外観構成を示す図である。 実施の形態1において使用する画像データの階層構造の概念図である。 実施の形態1における情報処理装置の構成を示す図である。 実施の形態1における画像データの流れを模式的に示すである。 実施の形態1における画像データの先読み処理を説明するための図である。 実施の形態1において階層データを表示する機能を有する制御部の構成を詳細に示す図である。 実施の形態1で用いる階層データのデータ構造を模式的に示す図である。 実施の形態1において表示対象の画像ファイルを生成する機能を有する制御部の構成を示す図である。 実施の形態1において画像に冗長性がある場合の元の画像とタイル画像との関係を説明する図である。 実施の形態1において画像に冗長性がある場合の元の画像とタイル画像との関係の別の例を説明する図である。 実施の形態1において冗長性によるタイル画像の共有をヘッダによって定義する手法を説明する図である。 実施の形態1において冗長性によるタイル画像の共有をインデックスブロックによって定義する手法を説明する図である。 図9で示した制御部が画像ファイルを生成する処理手順を示すフローチャートである。 実施の形態1において制御部が画像ファイルを表示するための処理手順を示すフローチャートである。 実施の形態1において画像を修正する機能を有する制御部の構成を示す図である。 実施の形態1における画像の修正例を示す図である。 図17のような修正におけるインデックスブロックのポインタの変化を模式的に示す図ある。 実施の形態1において高解像度側に階層を追加する場合の処理を説明するための図である。 実施の形態1において追加すべき階層が属するインデックスブロックが存在しなかった場合のヘッダおよびインデックスブロックの変化を説明する図である。 実施の形態1において既存の画像に新たな領域を追加する処理を説明するための図である。 実施の形態1において新たな領域を追加する場合のヘッダおよびインデックスブロックの変化を説明する図である。 実施の形態1において階層構造体の頂点側に階層を追加する際にヘッダにおいて定義される領域の分割手法を説明する図である。 実施の形態1の画像処理装置においてユーザが画像を修正、改変する際の処理手順を示すフローチャートである。 実施の形態2における情報処理装置のうち制御部およびメインメモリの構成をより詳細に示す図である。 実施の形態2において階層データへのレンダリングの処理手順を示すフローチャートである。 実施の形態2においてスケーリング処理を行うスケーラをメインメモリに内蔵した場合の装置構成を示す図である。 実施の形態2におけるGPUバッファのアドレッシングの様子を示す図である。 実施の形態2におけるGPUバッファのアドレッシングの様子を示す図である。
 実施の形態1
 本実施の形態において処理対象とする画像のデータは、原画像を複数段階に縮小して生成した異なる解像度の画像からなる階層構造を有する。各階層の画像は一又は複数のタイル画像に分割する。たとえば最も解像度の低い画像は1つのタイル画像で構成し、最も解像度の高い原画像は、最も多い数のタイル画像で構成する。画像表示時は、描画に使用しているタイル画像を、表示画像が所定の解像度になったときに異なる階層のタイル画像に切り替えることで、拡大表示または縮小表示を迅速に行う。
 まず、このような階層構造を有する画像の基本的な表示態様について説明する。図1は、本発明の実施の形態を適用できる情報処理システム1の使用環境を示す。情報処理システム1は、画像処理を含むアプリケーションプログラムを実行する情報処理装置10と、情報処理装置10による処理結果を出力する表示装置12とを備える。表示装置12は、画像を出力するディスプレイおよび音声を出力するスピーカを有するテレビであってよい。
 表示装置12は、情報処理装置10に有線ケーブルで接続されてよく、また無線LAN(Local Area Network)などにより無線接続されてもよい。情報処理システム1において、情報処理装置10は、ケーブル14を介してインターネットなどの外部ネットワークに接続し、階層化された圧縮画像データを含むコンテンツなどをダウンロードして取得してもよい。なお情報処理装置10は、無線通信により外部ネットワークに接続してもよい。
 情報処理装置10は、ユーザからの要求に応じて、表示装置12のディスプレイに表示する画像の拡大/縮小処理や、上下左右方向への移動処理など、表示領域を変更する処理を行う。ユーザが、ディスプレイに表示された画像を見ながら入力装置を操作すると、入力装置が、表示領域の変更要求信号を情報処理装置10に送信する。
 図2は、入力装置20の外観構成を示す。入力装置20は、ユーザが操作可能な操作手段として、十字キー21、アナログスティック27a、27bと、4種の操作ボタン26を備える。4種の操作ボタン26は、○ボタン22、×ボタン23、□ボタン24および△ボタン25から構成される。
 情報処理システム1において、入力装置20の操作手段には、表示画像の拡大/縮小要求、および上下左右方向へのスクロール要求を入力するための機能が割り当てられる。たとえば、表示画像の拡大/縮小要求の入力機能は、右側のアナログスティック27bに割り当てられる。ユーザはアナログスティック27bを手前に引くことで、表示画像の縮小要求を入力でき、また手前から押すことで、表示画像の拡大要求を入力できる。また、表示領域の移動要求の入力機能は、十字キー21に割り当てられる。ユーザは十字キー21を押下することで、十字キー21を押下した方向への移動要求を入力できる。なお、画像変更要求の入力機能は別の操作手段に割り当てられてもよく、たとえばアナログスティック27aに、スクロール要求の入力機能が割り当てられてもよい。
 また後に述べる各種機能を実現するため、入力装置20にはさらに、画像に表示されたカーソルを移動させたり、ファイルやコマンドを選択したりする機能も割り当てる。あるいは入力装置20は、ポインティングデバイス、マウス、キーボード、タッチパネルなど一般的な入力装置で実現してもよい。上述したような機能の割り当ては、入力装置20の種類によって適宜決定してよい。
 入力装置20は、入力された表示領域変更要求信号などを情報処理装置10に伝送する機能をもち、本実施の形態では情報処理装置10との間で無線通信可能に構成される。入力装置20と情報処理装置10は、Bluetooth(ブルートゥース)(登録商標)プロトコルやIEEE802.11プロトコルなどを用いて無線接続を確立してもよい。なお入力装置20は、情報処理装置10とケーブルを介して接続して、表示領域変更要求信号などを情報処理装置10に伝送してもよい。
 図3は、本実施の形態において使用する画像データの階層構造の概念図を示す。画像データは、深さ(Z軸)方向に、第0階層30、第1階層32、第2階層34および第3階層36からなる階層構造を有する。なお同図においては4階層のみ示しているが、階層数はこれに限定されない。以下、このような階層構造をもつ画像データを「階層データ」とよぶ。ただし同図の階層データは概念的なものであり、実際には後に述べるように複数のデータセットで階層データを表現する。
 図3に示す階層データは4分木の階層構造を有し、各階層は1以上のタイル画像38で構成される。すべてのタイル画像38は同じ画素数をもつ同一サイズに形成され、たとえば256×256画素を有する。各階層の画像データは、一つの画像を異なる解像度で表現しており、最高解像度をもつ第3階層36の原画像を複数段階に縮小して、第2階層34、第1階層32、第0階層30の画像データが生成される。たとえば第N階層の解像度(Nは0以上の整数)は、左右(X軸)方向、上下(Y軸)方向ともに、第(N+1)階層の解像度の1/2であってよい。
 情報処理装置10において、階層データは、所定の圧縮形式で圧縮された状態で記憶装置に保持されており、ディスプレイに表示される前に記憶装置から読み出されてデコードされる。本実施の形態の情報処理装置10は、複数種類の圧縮形式に対応したデコード機能を有し、たとえばS3TC形式、JPEG形式、JPEG2000形式の圧縮データをデコード可能とする。
 階層データの階層構造は、図3に示すように、左右方向をX軸、上下方向をY軸、深さ方向をZ軸として設定され、仮想的な3次元空間を構築する。情報処理装置10は、入力装置20から供給される表示領域変更要求信号から表示画像の変更量を導出すると、その変更量を用いて仮想空間におけるフレームの4隅の座標(フレーム座標)を導出する。仮想空間におけるフレーム座標は、後述するメインメモリへの圧縮データのロードおよび表示画像の生成処理に利用される。なお、仮想空間におけるフレーム座標の代わりに、情報処理装置10は、階層を特定する情報と、その階層におけるテクスチャ座標(UV座標)を導出してもよい。以下、階層特定情報およびテクスチャ座標の組み合わせも、フレーム座標と呼ぶ。
 図4は情報処理装置10の構成を示している。情報処理装置10は、無線インタフェース40、スイッチ42、表示処理部44、ハードディスクドライブ50、記録媒体装着部52、ディスクドライブ54、メインメモリ60、バッファメモリ70および制御部100を有して構成される。表示処理部44は、表示装置12のディスプレイに表示するデータをバッファするフレームメモリを有する。
 スイッチ42は、イーサネットスイッチ(イーサネットは登録商標)であって、外部の機器と有線または無線で接続して、データの送受信を行うデバイスである。スイッチ42は、ケーブル14を介して外部ネットワークに接続し、サーバからコンテンツのデータなどを受信できるように構成される。またスイッチ42は無線インタフェース40に接続し、無線インタフェース40は、所定の無線通信プロトコルで入力装置20と接続する。入力装置20においてユーザから入力された信号は、無線インタフェース40、スイッチ42を経由して、制御部100に供給される。
 ハードディスクドライブ50は、データを記憶する記憶装置として機能する。スイッチ42を介して受信された階層データは、ハードディスクドライブ50に格納される。記録媒体装着部52は、メモリカードなどのリムーバブル記録媒体が装着されると、リムーバブル記録媒体からデータを読み出す。ディスクドライブ54は、読出専用のROMディスクが装着されると、ROMディスクを駆動して認識し、データを読み出す。ROMディスクは、光ディスクや光磁気ディスクなどであってよい。階層データはこれらの記録媒体に格納されていてもよい。
 制御部100は、マルチコアCPUを備え、1つのCPUの中に1つの汎用的なプロセッサコアと、複数のシンプルなプロセッサコアを有する。汎用プロセッサコアはPPU(PowerPC Processor Unit)と呼ばれ、残りのプロセッサコアはSPU(Synergistic Processor Unit)と呼ばれる。
 制御部100は、メインメモリ60およびバッファメモリ70に接続するメモリコントローラを備える。PPUはレジスタを有し、演算実行主体としてメインプロセッサを備えて、実行するアプリケーションにおける基本処理単位としてのタスクを各SPUに効率的に割り当てる。なお、PPU自身がタスクを実行してもよい。SPUはレジスタを有し、演算実行主体としてのサブプロセッサとローカルな記憶領域としてのローカルメモリを備える。ローカルメモリは、バッファメモリ70として使用されてもよい。
 メインメモリ60およびバッファメモリ70は記憶装置であり、RAM(ランダムアクセスメモリ)として構成される。SPUは制御ユニットとして専用のDMA(Direct Memory Access)コントローラをもち、メインメモリ60とバッファメモリ70の間のデータ転送を高速に行うことができ、また表示処理部44におけるフレームメモリとバッファメモリ70の間で高速なデータ転送を実現できる。本実施の形態の制御部100は、複数のSPUを並列動作させることで、高速な画像処理機能を実現する。表示処理部44は、表示装置12に接続されて、ユーザからの要求に応じた画像処理結果を出力する。
 本実施の形態の情報処理装置10は、表示画像の拡大/縮小処理や表示領域の移動処理を行う際に表示画像をスムーズに変更させるために、圧縮画像データの一部をハードディスクドライブ50からメインメモリ60にロードしておく。また、メインメモリ60にロードした圧縮画像データのさらに一部をデコードしてバッファメモリ70に格納しておく。これにより、後の必要なタイミングで、表示画像の生成に使用する画像を瞬時に切り替えることが可能となる。
 図5は本実施の形態における画像データの流れを模式的に示している。まず階層データはハードディスクドライブ50に格納されている。ハードディスクドライブ50に代わり、記録媒体装着部52やディスクドライブ54に装着された記録媒体が保持していてもよい。あるいは、情報処理装置10がネットワークを介して接続した画像サーバから階層データをダウンロードするようにしてもよい。ここでの階層データは上述のとおり、S3TC形式などによる固定長圧縮、あるいはJPEG形式などによる可変長圧縮がなされている。
 この階層データのうち、一部の画像データを圧縮した状態のままメインメモリ60にロードする(S10)。ここでロードする領域は、現在の表示画像の仮想空間における近傍や、画像の内容、ユーザの閲覧履歴等に基づいて、高頻度で表示要求がなされると予測される領域など、あらかじめ定めた規則によって決定する。ロードは、画像変更要求がなされたときのみならず、例えば所定の時間間隔で随時行う。これによりロード処理が一時期に集中しないようにする。
 次に、メインメモリ60に格納されている圧縮画像データのうち、表示に必要な領域のタイル画像、または必要と予測される領域のタイル画像のデータをデコードし、バッファメモリ70に格納する(S12)。バッファメモリ70は、少なくとも2つのバッファ領域72、74を含む。各バッファ領域72、74のサイズは、フレームメモリ90のサイズよりも大きく設定され、入力装置20から表示領域変更要求信号が入力された場合に、ある程度の量の変更要求に対しては、バッファ領域72、74に展開した画像データで表示画像を生成できるようにする。
 バッファ領域72、74の一方は、表示画像の生成に用いる画像を保持するための表示用バッファであり、他方は、以後、必要と予測される画像を準備するためのデコード用バッファである。図5の例では、バッファ領域72が表示用バッファ、バッファ領域74がデコード用バッファで、表示領域68が表示されているものとする。後述する先読み処理によってデコード用バッファに格納する画像は、表示用バッファに格納されている画像と同一階層の画像でもよいし、縮尺の異なる別階層の画像でもよい。
 次に、表示用バッファであるバッファ領域72に格納された画像のうち表示領域68の画像を、フレームメモリ90に描画する(S14)。この間に、新たな領域の画像が必要に応じてデコードされ、バッファ領域74に格納される。格納が完了したタイミングや表示領域68の変更量などに応じて、表示用バッファとデコード用バッファを切り替える(S16)。これにより、表示領域の移動や縮尺率の変更などに対し表示画像をスムーズに切り替えることができる。
 図6は、先読み処理を説明するための図である。図6は、階層データの構造を示しており、各階層はL0(第0階層)、L1(第1階層)、L2(第2階層)、L3(第3階層)と表現されている。図6に示す階層データ構造において、深さ(Z軸)方向における位置は解像度を示し、L0に近い位置ほど解像度が低く、L3に近い位置ほど解像度は高い。なおディスプレイに表示される画像の大きさに注目すると、深さ方向における位置は、縮尺率に対応し、L3の表示画像の縮尺率を1とすると、L2における縮尺率は1/4、L1における縮尺率は1/16となり、L0における縮尺率は1/64となる。
 したがって深さ方向において、表示画像がL0側からL3側へ向かう方向に変化する場合、表示画像は拡大していき、L3側からL0側へ向かう方向に変化する場合は、表示画像は縮小していく。矢印80は、ユーザからの表示領域変更要求信号が、表示画像の縮小を要求しており、縮尺率1/4(L2)をまたいだ様子を示している。情報処理装置10では、タイル画像38として用意しているL1、L2の深さ方向の位置を、深さ方向の先読み境界として設定し、画像変更要求信号が先読み境界をまたぐと、先読み処理を開始する。
 表示画像の縮尺率がL2の近傍にある場合、表示画像は、L2(第2階層)のタイル画像を用いて作成される。具体的には、表示する画像の縮尺率が、L1タイル画像とL2タイル画像の切替境界82と、L2タイル画像とL3タイル画像の切替境界84の間にある場合に、L2タイル画像が利用される。したがって、矢印80に示すように画像の縮小処理が要求されると、L2のタイル画像が拡大された画像から、縮小された画像に変換されて表示される。一方、画像変更要求信号から予測される将来必要なタイル画像38を特定して、デコードしておく。図6の例では、表示領域変更要求信号による要求縮尺率がL2をまたいだときに、情報処理装置10は、縮小方向にあるL1の対応するタイル画像38をハードディスクドライブ50またはメインメモリ60から先読みしてデコードし、バッファメモリ70に書き込む。
 なお以上は深さ方向の先読み処理について説明したが、上下左右方向の先読み処理についても同様に処理される。具体的には、バッファメモリ70に展開されている画像データに先読み境界を設定しておき、画像変更要求信号による表示位置が先読み境界をまたいだときに、先読み処理が開始されるようにする。
 図7は本実施の形態において、上述の階層データを表示する機能を有する制御部100aの構成を詳細に示している。制御部100aは、入力装置20からユーザが入力した情報を取得する入力情報取得部102、新たに表示すべき領域を含むタイル画像を特定するタイル画像特定部110、新たにロードすべき画像データを決定するロードブロック決定部106、必要な画像ブロックをハードディスクドライブ50からロードするロード部108を含む。制御部100aはさらに、圧縮画像データをデコードするデコード部112、および表示画像を描画する表示画像処理部114を含む。
 図7において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。既述したように、制御部100は1つのPPUと複数のSPUとを有し、PPUおよびSPUがそれぞれ単独または協同して、各機能ブロックを構成できる。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
 入力情報取得部102は、ユーザが入力装置20に対して入力した、画像表示の開始/終了、表示領域の移動、表示画像の拡大、縮小などの指示内容を取得する。タイル画像特定部110は、現在の表示領域のフレーム座標とユーザが入力した表示領域変更要求の情報に従い、新たに表示すべき領域を含むタイル画像を特定する。そして当該タイル画像が既にメインメモリ60にロードされていれば、デコード部112に、ロードされていなければロードブロック決定部106に、当該情報を供給する。タイル画像特定部110はその時点の表示画像の描画に必要な画像の他、以後必要と予測されるタイル画像も特定してよい。
 ロードブロック決定部106は、タイル画像特定部110からの情報に基づき、ハードディスクドライブ50からメインメモリ60へ新たにロードすべき、複数のタイル画像からなる画像ブロックを特定し、ロード部108にロード要求を発行する。ロードブロック決定部106は、ロード部108がロード処理中でない状態において、例えば所定の時間間隔、あるいは、ユーザが表示領域変更要求を行った際など、所定のタイミングでロード要求を行ってもよい。ロード部108は、ロードブロック決定部106からの要求に従い、実際のロード処理を行う。
 デコード部112は、タイル画像特定部110から取得したタイル画像の情報に基づき、メインメモリ60からタイル画像のデータを読み出しデコードし、デコード用バッファまたは表示用バッファにデコード後のデータを格納する。表示画像処理部114は、新たな表示画像のフレーム座標に基づき、バッファメモリ70の表示用バッファから対応する画像データを読み出し、表示処理部44のフレームメモリに描画する。
 次に、これまで述べた階層構造を有する画像データの表示技術において、画像データをより効率的に構築し出力するための実施の形態について説明する。図8は本実施の形態における階層データのデータ構造を模式的に示している。 本実施の形態では階層データを、ヘッダ150、インデックスブロック160、タイル画像170、の3つのデータからなる構造とする。ヘッダ150およびインデックスブロック160は、階層データが形成する仮想空間内での位置に基づき、処理対象のタイル画像を特定するためのインデックスである。本実施の形態では、仮想空間における階層構造を領域分割し、領域ごとにタイル画像データへのインデックスをまとめることにより、タイル画像へのアクセスを効率化する。
 ヘッダ150は、図3に示したような、仮想空間におけるピラミッド状の階層構造体を分割してなる複数の領域を定義し、領域ごとにインデックスブロック160のいずれかへのポインタが設定されたデータである。図8に示すヘッダ150において三角形151は階層構造体を横から見た形状を示しており、水平な破線は各階層の画像154a、154b、154c、154d、154e、・・・を示している。このような階層構造体を、例えば実線で示すように領域分割し、領域152a、領域152b、領域152cなどの領域を定義する。ヘッダ150では原則として、各領域に対してインデックスブロック160のいずれかへのポインタが設定される。
 図8の例は、領域152aに対しインデックスブロック160aへのポインタ(矢印A)、領域152bに対しインデックスブロック160bへのポインタ(矢印B)、領域152cに対しインデックスブロック160cへのポインタ(矢印C)が設定されている様子を示している。ただし後に述べるように、ヘッダで定義される領域の一部に対して特定のインデックスブロックを指さないヌルポインタを設定してもよい。
 インデックスブロック160は、ヘッダ150で定義された構造体の領域ごとに生成され、各領域に属する複数階層の画像上の位置に対しタイル画像170のいずれかへのポインタが設定されるデータである。図8に示すように、ヘッダ150における一つの領域に対応する一つのインデックスブロックは、当該領域に属する、複数階層の画像の少なくとも一部の領域のデータを含む。同図の例では、領域152aに対応するインデックスブロック160aは、領域152aに属する2階層分の画像154a、154b全体のデータを保持する。領域152bに対応するインデックスブロック160bは、領域152bに属する3階層分の画像154c、154d、154e全体のデータを保持する。
 領域152cに対応するインデックスブロック160cは、領域152cに属する3階層分の画像154f、154g、154hの一部の領域のデータを保持する。そして各階層の画像平面をタイル画像のサイズに分割して生成したタイル領域ごとに、当該タイル領域の実際の画像データであるタイル画像170のいずれかを指すポインタを保持する。ただし後述するように、一つのタイル領域の描画を複数の情報を用いて行うようにした場合は、一つのタイル領域が複数のタイル画像を指すポインタを保持してもよい。同図において各インデックスブロック160a、160b、160にそれぞれ示される3平面は、対応する領域に属する階層に対応し、各階層上の小さい矩形のそれぞれがタイル領域を示している。
 図8の例は、インデックスブロック160bにおいて、タイル領域164aに対しタイル画像170aへのポインタ(矢印D)が設定され、タイル領域164bに対しタイル画像170bへのポインタ(矢印E)が設定されている様子を示している。ただし後に述べるように、インデックスブロックで定義されるタイル領域の一部は特定のタイル画像へのポインタを設定せずヌルポインタとしてもよい。タイル画像170は、圧縮されたタイル画像のデータである。このように階層データを構成することにより、タイル画像特定部110は、表示すべき画像フレームの仮想空間におけるフレーム座標から、ヘッダ150、インデックスブロック160、と辿り、当該画像フレームに含まれるタイル画像170を特定することができる。
 図8では、インデックスブロック160a、160b、160cはそれぞれ、4×4、8×8、16×16のタイル領域で構成される3階層の画像領域分のインデックスデータ、すなわちタイル画像170へのポインタを設定できるように示されている。このように、一つのインデックスブロック160で定義できるタイル領域の数を統一すると、例えばハードディスクドライブ50からメインメモリ60へインデックスブロック160のいずれかを読み出す際、どのインデックスブロックであっても必要となる記憶領域のサイズが変化せず、記憶領域の管理が容易になる。
 したがって、ヘッダ150において定義される領域は、インデックスブロック160が同じサイズとなるように生成されることが望ましい。階層データが図3で示すように、第0階層が1つのタイル画像である4分木の階層構造を有するとき、図8の領域152bに属する3階層の画像、すなわち第2階層の画像154c、第3階層の画像154d、第4階層の画像154eはそれぞれ、4×4、8×8、16×16のタイル領域からなる。
 したがって一つのインデックスブロック160で定義できる領域を上述のとおり4×4、8×8、16×16のタイル領域からなる画像領域とした場合、当該3階層の画像全体のデータを、そのまま1つのインデックスブロック160bに納めることができる。すなわち、階層データにおける第2階層の画像154c、第3階層の画像154d、第4階層の画像154eの全領域を、インデックスブロック160bの第0階層162d、第1階層162e、第2階層162fの全領域にそれぞれ対応させて、タイル画像へのポインタを設定することができる。
 一方、ヘッダ150における領域152aは第0階層および第1階層の2階層の画像154a、154bを含み、第0階層の画像154aは1つのタイル領域、第1階層の画像154bは2×2のタイル領域からなるため、1つのインデックスブロック160aで定義できる領域と比較し、階層数およびタイル領域の数が少ない。このような場合、階層データにおける第0階層の画像154aをインデックスブロック160aの第0階層162aの一部、例えば左上の1つのタイル領域に対応させ、タイル画像へのポインタを設定する。第1階層の画像154bも同様に、インデックスブロック160aの第1階層162bの一部、例えば左上の2×2のタイル画像に対応させ、タイル画像へのポインタを設定する。そして、インデックスブロック160aにおけるその他のタイル領域はヌルポインタを設定する。
 ヘッダ150における領域152cは第5階層、第6階層、第7階層の3階層の画像154f、154g、154hを含むが、これらの画像は1つのインデックスブロック160で定義できるタイル領域の数より多いタイル画像からなるため、図8に示すように画像平面を分割することにより、各階層の一部の領域をインデックスブロック160cの第0階層、第1階層、第2階層にそれぞれ対応させる。各インデックスブロックに属する複数階層の画像は解像度の異なる同一の画像領域となるように領域分割する。
 なお図8で示した階層構造体の領域分割の態様はあくまで例示であり、元の階層データの構造や望ましいインデックスブロックのデータサイズなどによって適宜決定してよい。また後述するように、元の画像の更新に応じて、階層データの分割態様を変化させてもよい。
 次に、これまで述べたデータ構造を有する階層データを含む画像ファイルを生成する態様について説明する。この態様も図1で示した情報処理システム、図4で示した情報処理装置10と同様の装置構成で実現できる。図9は、本実施の形態において表示対象の画像ファイルを生成する機能を有する制御部100bの構成を示している。なお制御部100bは図7の制御部100aに示した、画像表示を行うための機能を備えていてもよいが、ここでは図示を省略している。一方、図9に示した機能のみを有する制御部100bを備えた情報処理装置10を、表示機能を発揮する情報処理装置とは別に設けてもよい。
 制御部100bは、ハードディスクドライブ50に格納された画像データを読み出し階層化する画像階層生成部120、各階層の画像をタイル画像に分割する画像分割部122、各階層の画像を解析し冗長性を検出する冗長性検出部124、冗長性を考慮して、ヘッダ、インデックスブロックのデータを生成するヘッダ・インデックスブロック生成部126、および最終的に出力する、タイル画像、ヘッダ、インデックスブロックを含む画像ファイルを生成する画像ファイル生成部128を含む。
 画像階層生成部120は、ハードディスクドライブ50から、ファイル作成対象の画像のデータを読み出す。この画像データはある解像度を有する一枚の画像のデータでよい。処理対象の画像データは、図に示すように入力装置20を介してユーザが指定してもよいし、原画像を取得した別の機能ブロック(図示せず)からの要求を受け付けてもよい。画像階層生成部は120はさらに、読み出した画像のデータを所定の解像度へ段階的に縮小した画像のデータを生成することにより、元の画像を含めた階層構造の画像データを生成する。
 画像分割部122は、各階層の画像を所定のサイズに分割してタイル画像のデータを生成する。生成したタイル画像はメインメモリ60に格納する。この際、各タイル画像が元の画像のどの位置の画像であるかを、識別番号を付与するなどして管理する。
 冗長性検出部124は各階層の画像を解析することにより、同一階層内、および階層間で画像の冗長性を検出する。同一階層内での冗長性としては例えば、複数のタイル領域に渡って同じタイル画像のデータを用いることができる場合が考えられる。また階層間での冗長性としては、低解像度の階層の画像を拡大した画像と高解像度の階層の画像とで見た目の差が大きくない場合が考えられる。このように冗長性がある領域は、個々にタイル画像のデータを持たずとも、あるタイル画像のデータを流用することで表示が可能である。このようにすることで、画像データの圧縮を実現する。具体的な手法は後に述べる。
 ヘッダ・インデックスブロック生成部126は、上述のヘッダおよびインデックスブロックのデータを作成する。冗長性が検出されない画像では上述のように、ヘッダで定義される全ての領域に対しインデックスブロックのいずれかへのポインタが設定され、さらにインデックスブロックで定義される全てのタイル領域に対し、タイル画像へのポインタが設定される。一方、冗長性を有する画像領域については、ヘッダあるいはインデックスブロックにヌルポインタを設定することでタイル画像のデータ共有を実現する。
 画像ファイル生成部128は、インデックスブロックにおいて設定されたポインタが指すタイル画像のデータを読み出し、順につなげることによって、最終的な画像データを生成する。そして画像データ、ヘッダ、インデックスブロックを含む画像ファイルを生成して、最終的な出力データとする。上述のように、画像の冗長性を検出して、複数の領域の描画に一つのタイル画像のデータを用いるようにすることにより、画像データのサイズを効率的に圧縮することができる。本実施の形態では、解像度の異なる同一の画像を画像データに含むため、異なる階層の画像であっても同じタイル画像のデータを利用することによってデータの高率圧縮が可能である。
 図10は画像に冗長性がある場合の元の画像とタイル画像との関係を説明する図である。同図において画像180aおよび画像180bは、同じ領域を表す2つの階層の画像である。すなわち画像180aは画像180bを縮小して得られる。画像180aおよび画像180b上に示した格子はタイル画像に分割する際の境界線である。同図では説明のために画像180a、180bのタイル領域およびタイル画像170のそれぞれに識別番号を付与している。
 同図において画像180aおよび画像180bには、楕円形と三角形の図形が描かれ、それ以外の領域は背景として単色に塗りつぶされているとする。そのような画像の各領域から切り出されたタイル画像170のデータは、本来の画像上の並びと独立してメインメモリ60などに保持しておく。ここで画像180aおける単色の塗りつぶし領域であるタイル領域「4」は、そこから切り出されたタイル画像「4」と対応する。このようなとき、インデックスブロック160において、タイル領域「4」に対しタイル画像「4」へのポインタを設定する。
 画像180bは、画像180aの高解像度画像であるから、2つの画像の各タイル領域の対応関係は拡大率によって容易に導出できる。同図では例えば、画像180aのタイル領域「4」と、画像180bのタイル領域「15」、「16」、「19」、「20」が対応する。したがって、画像180aのタイル領域「4」が単色の塗りつぶし領域であれば、画像180bのタイル領域「15」、「16」、「19」、「20」は全て塗りつぶし領域であることが特定できる。すなわちこれらの領域の表示にはタイル画像「4」があれば済むことになる。
 同様に、画像180aを画像180bの解像度まで拡大したときに塗りつぶし領域となる領域を、画像180aを走査することによって判別すると、タイル領域「3」の下半分の領域、すなわち画像180bのタイル領域「17」、「18」が塗りつぶし領域であることがわかる。したがってこれらの領域もタイル画像「4」を用いることにより表示することが可能である。このようにタイル画像を共有することにより、タイル画像のデータ圧縮が可能となる。さらに後に述べるように、低解像度のタイル画像によって表示可能な高解像度の画像の領域は特定のポインタを持たないようにすることで、ヘッダやインデックスブロックのデータ圧縮も可能となる。
 本実施の形態で用いる画像データは、複数の解像度の同一の画像を処理対象とするため、上記の冗長性検出処理を最も小さい解像度の画像から順に繰り返すことにより、高解像度の大きなサイズの画像についても、計算負荷を抑えて冗長性を有する領域を特定することができる。なお上述の説明では単色の塗り潰し領域を検出して、同じ塗りつぶし領域でタイル画像のデータを共有する例を述べたが、同様の処理は、およそ単色の領域、ランダムな模様や繰り返しの模様のみの領域などでも有効である。これらの領域の検出は、領域ごとのカラーヒストグラムや周波数解析などによって低解像度の画像から実施していく。
 図11は冗長性がある場合の元の画像とタイル画像との関係の別の例を説明する図である。画像180aおよび画像180bは図10で示したのと同様である。同図において画像180aのタイル領域「2」は、画像180bのタイル領域「7」、」「8」、「11」、「12」に対応する。画像180bは画像180aより高解像度の画像であるため、これらの領域の4つのタイル画像は領域「2」から切り出したタイル画像「2」を単に拡大した画像より多くの情報を含むのが一般的である。
 しかし元の画像が写真などで、画像180bの領域「7」、「8」、「11」、「12」にピントが合っていない場合など、タイル画像「2」を拡大した画像と大きな差がない場合がある。このような場合、上述の塗りつぶし領域と同様、領域「7」、」「8」、「11」、「12」を表示する際、そこから切り出したタイル画像ではなくタイル画像「2」を用い、それを拡大して表示しても、元の画像と大差ない画像を表示させることができる。このような冗長性は、低解像度画像を拡大した画像と高解像度の画像との差分がしきい値以下である場合や、高解像度の画像を周波数解析したとき、しきい値以下の周波数帯のみ含む場合などに検出できる。
 図12は、上述のような冗長性によるタイル画像の共有をヘッダによって定義する手法を説明する図である。このときヘッダ150aで定義される階層構造体の領域中、別の領域に含まれる階層の画像を用いて表示が可能な領域は、特定のインデックスブロックへのポインタを設定せずヌルポインタとする。図12では、ヘッダ150aの構造体において、網掛けで示した領域には特定のインデックスブロックへのポインタ、すなわち有効なポインタが設定され、白抜きの領域にはヌルポインタを設定するとする。
 このようなヘッダ150aを有する階層データにおいて画像領域156を表示する場合、当該画像を含む領域はヌルポインタとなっている。この場合、階層データの仮想空間を、画像が縮小される方向に辿っていき、同じ画像領域156の縮小画像を含み有効なポインタが設定されている領域を探索する(矢印F)。同図においては領域152dに有効なポインタが設定されているため、当該ポインタが指すインデックスブロック160dのデータを取得する(矢印G)。
 そしてインデックスブロック160dがデータを保持する階層のうち、最も解像度の大きい第2階層において画像領域156を含むタイル領域を特定し、それに対応づけられたポインタを取得する。画像領域156が領域152dの第2階層の画像平面上のどこに位置するかは、階層データにおける各階層の縮尺率によって容易に計算できるため、上記のタイル領域の特定はそれに基づき実施する。
 そして取得したポインタが指すタイル画像170cのデータを取得し(矢印H)、それを用いて画像領域156の表示画像を生成する。ここで画像領域156がタイル画像のサイズを有するとすると、画像領域156を描画するには同図に示すように、縮小画像であるタイル画像170cの一部の領域172を拡大する。上述のとおり、画像領域156に対応する領域172の位置は、両者の縮尺率によって容易に計算できる。
 このように、ヘッダ150aにおいてヌルポインタを定義可能とすることにより、ヘッダ150aが定義する全ての領域に対しインデックスブロックを用意する必要がなくなり、データの圧縮効率が向上する。なおヌルポインタを設定する領域は必ずしも高解像度側になくてもよく、図12に示すように、低解像度の領域と高解像度の領域に挟まれた領域152eに対し中抜けの状態でヌルポインタを設定することもできる。この場合、領域152eに含まれる画像を表示する際は、解像度の低い側の領域152fに属する階層の画像を拡大して表示し、表示画像の解像度が増加して領域152sに入ったら、当該領域に対して設定されたポインタが指すインデックスブロックを参照してタイル画像を取得する。
 このようにすることで、表示画像がある解像度を超えるとこれまでと異なる画像が表示されるようにすることができる。例えば解像度を上げると新聞紙面の漢字に対して振り仮名が出現したり、写真の背景に別の物が出現したり、といった表示上の演出が可能となる。なおこのように、ヘッダでは基本的に任意の領域に対してヌルポインタを設定することが可能であるが、階層構造体の頂点、すなわち解像度が最も小さい画像を含む領域152gに対しては必ず有効なポインタを設定する。これにより、その他のいかなる領域に対してヌルポインタを設定しても、階層構造体を辿ることにより、少なくとも領域152gには到達し、表示画像を生成できる。
 図13は、上述のような冗長性によるタイル画像の共有をインデックスブロックによって定義する手法を説明する図である。ここでインデックスブロック160eに属する画像領域中、同じインデックスブロック160eに含まれる別の階層の画像を用いて表示が可能が領域は、特定のタイル画像へのポインタを設定せずにヌルポインタとする。図13では、インデックスブロック160eにおいて網掛けで示したタイル領域には特定のタイル画像へのポインタ、すなわち有効なポインタが設定され、白抜きの領域にはヌルポインタを設定するとする。
 同図において画像領域158を表示する場合、まずヘッダ150bにおいて当該画像領域158を含む領域152hを特定し、当該領域152hに対して設定されたポインタが指すインデックスブロック160eを取得する(矢印I)。インデックスブロック160eがデータを保持する領域のうち、画像領域158に対応する、第2階層162gの画像中の領域に対しヌルポインタが設定されていた場合、同じインデックスブロック160eに属する階層を縮小方向に辿っていき、同じ画像領域158の縮小画像に対し有効なポインタが設定されている階層を探索する。
 同図の例では、まず第1階層162hの画像に到達するが(矢印J)、画像領域158に対応する領域に対してはやはりヌルポインタが設定されている。そこでさらに解像度の低い第0階層162iの画像に到達する(矢印K)。第0階層162iの画像では、画像領域158に対応する領域に有効なポインタが設定されているため、当該ポインタが指すタイル画像170dのデータを取得し(矢印L)、それを用いて画像領域158の表示画像を生成することができる。ここで画像領域158がタイル画像のサイズを有するとすると、画像領域158を描画するには同図に示すように、縮小画像であるタイル画像170dの一部の領域174を拡大する。上述と同様、画像領域158に対応する領域174の位置は、両者の縮尺率によって容易に計算できる。
 このように、インデックスブロック160eにおいてヌルポインタを定義可能とすることにより、インデックスブロック160eで定義される全てのタイル領域に対しタイル画像へのポインタを定義せずに済み、タイル画像のデータ圧縮とともにインデックスブロック自体のデータ量を削減することができる。また、タイル画像が更新されても、インデックスブロック内での画像の拡大縮小関係は基本的には変化しないため、全てのタイル画像へのポインタを更新する必要がなくなり、更新処理を最小限に抑えることができる。
 ヘッダと同様、インデックスブロックにおいても、解像度が最も小さい第0階層162iの画像では全タイル領域に対し有効なポインタを設定するようにする。このようにすることでその他の任意の領域でヌルポインタを設定しても、縮小方向へ階層を辿ることにより少なくとも第0階層162iの画像には到達し、表示画像を生成できる。ただしヘッダで定義される領域のうち、階層構造体の頂点、すなわち解像度が最も小さい階層を含む領域は上述のとおり、タイル画像の数が元々少ない場合があり、このような場合は対応するインデックスブロックの全ての階層にヌルポインタが設定された領域が含まれていてよい。
 またヘッダと同様、インデックスブロックにおいても、ある画像領域について、高解像度の第2階層162gと低解像度の第0階層162iには特定のポインタを設定し、その中間の解像度の第1階層162hのみヌルポインタを設定するようにできる。例えば図13において中間の第1階層162hの左下の領域を表示する際は、解像度の低い第0階層162iの同領域に対して設定されたポインタが指すタイル画像を拡大して表示し、第2階層162gを用いるまで表示画像の解像度が上がったら、当該第2階層162gの同じ領域に対して設定されたポインタが指すタイル画像を用いて表示画像を生成する。このようにすることで、ヘッダと同様、同じ領域でも拡大すると別の画像が表示されるような態様を実現できる。
 このようにインデックスブロックでタイル画像の共有を定義する場合、ヘッダでインデックスブロックの共有を定義する場合に比べ、タイル画像単位で詳細な設定を行うことができる。なお図12および図13の例では、ヘッダまたはインデックスブロックのいずれかにヌルポインタが設定されている場合を示しているが、双方にヌルポインタが設定されていても同様の処理により、インデックスブロックおよびタイル画像の共有を定義できる。また上述の例では、ヘッダまたはインデックスブロックにヌルポインタを設定することにより、異なる階層同士でタイル画像を共有する態様を実現した。一方、同一階層でタイル画像を共有する場合は、階層構造体の領域のうち、同一階層を含む複数の領域に対し同一のインデックスブロックへのポインタを設定するか、インデックスブロックにおいて複数のタイル領域に対し同一のタイル画像へのポインタを設定すればよい。
 次に、画像ファイルを生成する機能を有する制御部100bの動作を説明する。図14は図9で示した制御部100bが画像ファイルを生成する処理手順を示すフローチャートである。まずユーザまたは別の処理モジュールによって画像データを指定する入力がなされたら、画像階層生成部120は、ハードディスクドライブ50から指定された画像データを読み出す(S50)。そして一般的な縮小処理を施すことによって所定の解像度を有する画像データを生成して、複数の解像度の画像データからなる階層データを生成する(S52)。次に画像分割部122は、各階層の画像をタイル画像に分割したうえメインメモリ60に格納する(S54)。このとき、各タイル画像の画像上の位置とメインメモリ60の記憶領域を示すアドレスとを対応づけて記録しておくことにより、インデックスブロックの生成に利用する。
 なおS50において、あらかじめタイル画像を記録したファイルを読み出すようにしてもよい。この場合、S52の階層データ生成処理、S54の画像分割処理は省略できる。ファイルの先頭アドレスからの各タイル画像のアドレスのオフセット値と画像上の位置を当該ファイルに含めておけば、S50で読み出した際の当該ファイルのメインメモリ60における先頭アドレスをS54で記録しておくことにより、各タイル画像のアドレスと画像上の位置との関係を取得できる。
 次に冗長性検出部124は、上述のように冗長性の有無を確認する(S58)。具体的には、N階層の画像を走査して、N+1階層の画像のタイル画像の大きさに対応する大きさの領域に単色で構成される領域があるか否かを確認する。これを解像度が高い階層の方向へ繰り返していく。冗長性検出部124はそのほか、N階層の画像をN+1階層の画像の大きさまで拡大した画像とN+1階層の画像との差分画像や、N+1階層の画像の周波数解析により、N+1階層の画像であってもN階層の画像と同程度の情報しか含まない領域があるか否かを確認する。確認手法は画像処理の分野で一般的に行われている手法を適宜適用してよい。
 次にヘッダ・インデックスブロック生成部126は、冗長性を加味してヘッダおよびインデックスブロックを作成する(S60)。具体的には、ヘッダで定義する領域ごと、低解像度側の領域に属する画像を拡大して表示できる場合は、当該領域に対してヌルポインタを設定し、その他の領域については対応するインデックスブロックを生成してそれぞれを指すポインタをヘッダに設定する。さらに各インデックスブロックにおいて、それに属する複数の階層の画像うち低解像度の画像を拡大して表示できる領域に対してはヌルポインタを設定し、それ以外の領域に対しては、当該領域から切り出したタイル画像へのポインタを設定する。
 次に画像ファイル生成部128は、最終的に出力するための画像ファイルを作成する(S62)。ここで冗長性検出部124がS58で冗長性を検出しなかった場合は、S54で分割して生成されたタイル画像のデータを全てメインメモリ60より読み出し、S60で生成したヘッダおよびインデックスブロックとともに画像ファイルとする。冗長性が検出された場合は、S60で生成したインデックスブロックで設定されたポインタが指すタイル画像のデータのみをメインメモリ60より読み出し、S60で生成したヘッダおよびインデックスブロックとともに画像ファイルとする。
 次に、このようにして生成した画像ファイルをもちいて画像を表示するときの動作を説明する。図15は、本実施の形態における画像ファイルを用いて画像を表示するための処理手順を示すフローチャートである。本処理手順は、図7に示した制御部100aによって実現できる。同図のフローチャートは、表示領域変更要求によって画像ファイルから必要なデータを読み出しデコードして表示する処理を主に記載しているが、ハードディスクからのロード、必要なデータの先読み処理、バッファメモリへの書き出しなど基本的な流れは図5で示したのと同様である。
 まず表示装置12に画像の一部が表示された状態で、ユーザが入力装置20を介して表示領域の変更要求を入力すると、入力情報取得部102はそれを受け付ける(S70)。するとタイル画像特定部110は、要求される表示画像の変更量を導出し、それに基づき新たに表示すべきフレーム座標を決定する(S72)。表示画像の変更量は、仮想空間における上下左右方向の移動量および深さ方向の移動量であり、表示すべきフレーム座標は、それまでに表示されていた表示領域のフレーム座標と導出した変更量により決定できる。
 次にタイル画像特定部110は、ヘッダを参照してフレーム座標が属する領域を特定し、当該領域に対しインデックスブロックへの有効なポインタ設定されているか否かを確認する(S74)。有効なポインタが設定されていたら(S74のY)、当該ポインタが指すインデックスブロックを取得する(S78)。ヌルポインタが設定されていたら(S74のN)、階層構造体を画像の縮小方向へ辿り、有効なポインタが設定されている領域を探索し、検出した領域に対して設定されているポインタが指すインデックスブロックを取得する(S76、S78)。
 さらにインデックスブロックにおいて、フレーム座標に対応する領域に対しタイル画像への有効なポインタが設定されているか否かを確認する(S80)。有効なポインタが設定されていたら(S80のY)、当該ポインタが指すタイル画像のアドレスや識別番号などタイル画像を一意に定める情報を特定する(S84)。ヌルポインタが設定されていたら(S80のN)、当該インデックスブロックにおける階層を画像の縮小方向へ辿り、有効なポインタが設定されている階層を探索し、検出した階層の該当領域に対して設定されているポインタが指すタイル画像を特定する(S82、S84)。
 バッファメモリ70に、当該タイル画像のデコードされたデータが格納されていない場合は(S86のN)、デコード部112がタイル画像のデータをメインメモリ60から読み出し、デコードする(S88、S90)。
 S76でヘッダにおいて有効なポインタが設定されている領域を探索した場合、または、S82でインデックスブロック内で有効なポインタが設定されている階層を探索した場合は、特定したタイル画像を拡大して描画する必要がある。このため、そのような経緯を辿ってタイル画像を特定した場合、タイル画像特定部110はその旨の情報をデコード部112に与えておく。デコード部112は、その情報に基づきタイル画像の拡大が必要か否かを判定する(S92)。
 拡大が必要な場合(S92のY)、デコード部112はタイル画像特定部110から取得したフレーム座標に基づきタイル画像を拡大したうえ、必要な領域をバッファメモリ70に格納する(S94)。この処理は、該当タイル画像がデコード済み(S86のY)であっても同様に行う。そして拡大処理の有無に関わらず、表示画像処理部114は、当該タイル画像のうち新たに表示すべき領域をフレームメモリに描画する(S96)。描画処理には、要求される解像度に応じて、バッファメモリ70に格納されたデータを拡大、縮小する処理も含まれる。
 次にヘッダおよびインデックスブロックにおけるポインタのデータ構造について説明する。例えば11階層で構成される階層データを図8で示したように4×4、8×8、16×16の3階層の領域ずつインデックスブロックにまとめた場合、ヘッダで定義される領域は4162個になる。また一つのインデックスブロックには最大336のタイル領域が定義される。これらの要素のそれぞれにポインタを設定するため、ポインタの検索を効率的に行えるデータ構造とすることが望ましい。ポインタのデータ構造としては、固定長配列、連想配列、ツリー構造が考えられる。
 ヘッダのポインタを固定長配列とした場合は、領域ごとに識別番号を付与し、それをインデックスとして固定長のポインタ配列にアクセスする。この場合、領域を特定できればすぐにポインタが取得できるため、編集や検索処理が速く行える。連想配列とした場合は、領域ごとに識別番号を付与し、それをキーとしてポインタの連想配列にアクセスする。この場合、有効なポインタのみを保持すればよいため、ヘッダのデータサイズを抑えることができる。
 ツリー構造とした場合は、領域間をつなぐポインタをさらに定義し、画像の階層構造体の頂点から領域間ポインタをたどって所望の領域を検索する。この場合、後述するように頂点に階層を追加した際、頂点付近のポインタを更新するのみでよくなる。このようにポインタのデータ構造によって有効性が異なるため、メモリコストや処理コストなど重視すべき点によって適宜選択する。さらにBツリー構造などデータ探索で一般的に用いられる手法を適宜導入してもよい。インデックスブロックのポインタも同様の態様となるため、処理速度などを考慮して最適な手法を選択してよい。
 またインデックスブロックへのポインタ、およびタイル画像へのポインタは、目的とするインデックスブロックやタイル画像が記録されたファイル名やネットワークに接続したサーバのロケーション情報などを含めてもよい。これにより、1つの階層データに複数のファイルやサイトからの画像を含めたり、1つのファイルを複数の階層データで共有したりすることができる。
 次に、上述のようにヘッダ、インデックスブロック、タイル画像で構成される画像ファイルを修正、改変する場合について説明する。この態様も図1で示した情報処理システム、図4で示した情報処理装置10と同様の装置構成で実現できる。図16は、本実施の形態において画像を修正する機能を有する制御部100cの構成を示している。なお制御部100cは図7の制御部100aに示した、画像表示を行うための機能や、図9の制御部100bに示した、画像ファイルを生成する機能を備えていてもよいが、ここでは図示を省略している。一方、図16に示した機能のみを有する制御部100cを備えた情報処理装置10を、表示機能や画像ファイル生成機能を発揮する画像処理装置とは別に設けてもよい。
 制御部100cは、修正対象の画像ファイルを取得する画像ファイル取得部318、修正によって更新される領域や更新部分の画像データなどからなる更新情報を取得する更新情報取得部320、更新後のタイル画像を生成するタイル画像生成部322、ヘッダおよびインデックスブロックを更新するヘッダ・インデックスブロック更新部324、修正中の画像を表示する表示画像制御部326、および修正後の画像ファイルを生成する画像ファイル生成部328を含む。
 画像ファイル取得部318は、ユーザによる修正対象の画像の指定入力を受け付け、該当する画像ファイルをハードディスクドライブ50から読み出してメインメモリ60に格納する。この画像ファイルはこれまで説明したように、ヘッダ、インデックスブロック、タイル画像のデータを含む。更新情報取得部320は、ユーザが表示装置12に表示された修正対象の画像を見ながら、入力装置20を介して入力した更新情報を取得する。更新情報には上述のとおり、更新すべき領域とその領域における修正後の画像データなどが含まれる。具体例は後に述べる。
 タイル画像生成部322は、更新すべき領域に更新後の画像を当てはめた際に更新する必要が生じたタイル画像を特定し、新たなタイル画像を生成する。ここで、更新すべき領域があるタイル画像の一部にのみかかっている場合は、元のタイル画像をメインメモリ60から読み出し、更新すべき領域のみ上書きすることにより新たなタイル画像を生成する。あるタイル画像が全て更新すべき領域に含まれている場合は、修正後の画像を切り出すことによって新たなタイル画像を生成する。このとき、階層データを構成する全ての階層における更新すべき領域に対し新たなタイル画像を生成する。ただしユーザの指定によっては、特定の階層のみ更新するようにしてもよい。この場合、特定の解像度の範囲で異なる画像が表示される態様を実現できる。
 生成したタイル画像はメインメモリ60に格納する。この際、画像ファイル取得部318がメインメモリ60に格納した元の画像データはそのままにしておき、新たに生成したタイル画像は別の記憶領域に格納する。次にヘッダ・インデックスブロック更新部324は、メインメモリ60に格納されたインデックスブロックにおいて、更新すべき領域に対して設定されたポインタを、新たに生成したタイル画像を指すように書き換える。また、当該領域に対応するインデックスブロックが存在しない場合は、新たにインデックスブロックを生成し、ヘッダにおけるヌルポインタの設定を、生成したインデックスブロックを指すポインタに書き換える。
 表示画像制御部326は、図7で示した制御部100aに含まれる機能ブロックで構成してよいが、ここでは図示を省略している。表示画像制御部326は、図15で説明したのと同様の処理手順により修正対象の画像を表示するが、ユーザによる画像の修正に応じて上述のようにヘッダ、インデックスブロックが更新されていく。それに応じて、画像を描画する際に用いるタイル画像が新たなものに変化する。このようにすることで、表示画像を確認しながら画像を修正、改変することが可能になる。
 本実施の形態では、元のタイル画像のデータを更新せず別の記憶領域に新たに生成したタイル画像を追加し、インデックスブロックやヘッダによって参照先を変化させることにより画像を更新する。このようにすると、元のタイル画像のうち修正領域にあたるタイル画像のデータを検索して上書きする場合と比較して処理コストが低く、応答性よく修正途中の画像を表示させることができる。また、修正途中で元の画像に戻すことも容易にできる。
 画像ファイル生成部328は、ユーザが修正を終えたときなどに、新たに生成したタイル画像のデータで元のタイル画像のデータを上書きする。あるいは新たに生成したタイル画像のデータを、元のタイル画像のデータとは別のファイルとして保存する。そして更新されたインデックスブロックやヘッダを付加して画像ファイルとする。
 次に、上述の機構によって画像を修正、改変するときの各データに対する処理の具体例を説明する。図17は説明の前提とする画像の修正例を示している。同図において修正前の画像190には、楕円と三角形が描かれている。これを修正し、修正後の画像192に示されるように、画像の右上に星の図形194を追加する場合を考える。図18はこのような修正におけるインデックスブロックのポインタの変化を模式的に示している。同図においてポインタは矢印で示しているが、図が煩雑になるのを避けるため、代表的な矢印のみを表している。
 まず修正前において、ヘッダ150で定義される各領域は、インデックスブロック160のいずれかへのポインタ、あるいはヌルポインタが設定されている。そしてポインタが指すインデックスブロック160に属する複数の階層の各タイル領域に対し、破線の矢印によって示されるように、修正前に生成されていたタイル画像170eのいずれかへのポインタが設定されている。図17における修正前の画像190の右上の領域は単色の背景であるとすると、当該領域は一つのタイル画像を共有する。図18において多くの破線矢印が一つのタイル画像170fを指しているのはこれを表している。当然、その他の領域は個々のタイル画像へのポインタが設定されている。
 このような背景部分に、図17における修正後の画像192のように星の図形194を追加すると、各階層の該当領域におけるタイル画像として、各解像度の星の図形が追加された新たなタイル画像170gが生成され、元のタイル画像170eとは別の記憶領域に格納される。するとインデックスブロック160において、更新すべき領域にかかるタイル領域に対するポインタは全て、新たなタイル画像170gのいずれかのタイル画像を指すように更新される。図18では、更新後のポインタを一点鎖線の矢印で表している。更新後、更新対象の領域は背景でなくなったため、図に示すように、各タイル領域に対しそれぞれのタイル画像へのポインタが設定される。また、修正対象の領域以外の領域は、元のタイル画像170eを指したままでよい。
 次に、図17の星の図形194のように更新によって追加された画像が、それまでの階層データの最高解像度の画像よりさらに高い解像度を有する場合に、高解像度側に階層を追加する手順を説明する。図19は、高解像度側に階層を追加する場合の処理を説明するための図である。同図において、修正前の画像は第0階層154i、第1階層154j、第2階層154k、第3階層154lからなる階層データ200であったとする。ここでヘッダにおいては全ての領域に対しインデックスブロックへの有効なポインタが設定されているものとし、同図ではそれを網掛けで示している。
 このような画像に対し、図17で示すように右上の領域に高解像度の画像を追加する修正を行った場合、上述のように更新対象の領域のタイル画像を各階層について新たに生成する。ここで、追加した画像は元の階層データで最高解像度を有する第3階層154lより高解像度であるため、新たな階層を追加する必要がある。同図では追加する階層を第4階層154mとしている。また新たにタイル画像を生成すべき領域は、同図において黒く示されている。
 この例では高解像度画像による画像の修正は局所的なものであるため、更新対象の領域以外の領域を第4階層154mの解像度で表示する場合は、元からある階層データのうち最高解像度を有する第3階層154lの画像を拡大して表示することになる。そのため、第4階層154mのうち更新対象の領域以外に対しては、ヌルポインタを設定し、第3階層154lのタイル画像を流用する。ヌルポインタを設定する領域は、同図では白抜きで表されている。
 タイル画像の共有には前述のとおり、ヘッダにおいて設定する手法とインデックスブロックにおいて設定する手法がある。一つのインデックスブロックでまとめられる階層数を固定とした場合、追加すべき第4階層154mに対応する階層が、既存のインデックスブロックに既に定義づけられている場合がある。第4階層154mは元の階層データでは存在していないため、インデックスブロックの同階層に対してはヌルポインタが設定されている。
 このような場合は、当該既存のインデックスブロックにおいて、第4階層154mの更新対象の領域に対して設定されているヌルポインタを、新たに生成したタイル画像へのポインタに更新する。更新対象の領域以外の領域は、ヌルポインタのままとする。低解像度の各階層についても同様に、インデックスブロックのポインタを更新する。
 図20は、追加すべき第4階層154mに対応する階層が属するインデックスブロックが存在しなかった場合のヘッダおよびインデックスブロックの変化を説明する図である。同図のヘッダ150において、領域152iは修正前の階層データに対し定義づけられている領域を示している。ヘッダ150で定義される領域は当然複数でよいが、同図ではそれらをまとめて一つの領域152iで示している。領域152iには、修正前に存在した第0階層154i、第1階層154j、第2階層154k、第3階層154lが属している。そして各領域に対し、インデックスブロック160fへのポインタが設定されている。そしてインデックスブロック160fで定義づけられる各タイル領域に対し、既存のタイル画像170hへのポインタが設定されている(破線矢印)。
 ここで第4階層154mを追加する場合、まずヘッダ150において、当該階層を含む新たな領域を追加する。ただし図20に示すように、更新対象の領域を含む領域152jのみ有効なポインタを設定し、その他の領域はヌルポインタを設定する。さらに新たなインデックスブロック160gを生成し、領域152jに対して当該インデックスブロック160gへのポインタを設定する。追加する階層が第4階層154mのみであれば、新たに生成したインデックスブロック160gに属する3階層のうち、タイル画像へのポインタを設定するのは最も低解像度の一階層でよく、その他の階層は全領域に対しヌルポインタを設定する。
 そして、新たに生成したインデックスブロック160gにおいて、更新対象の領域に含まれるタイル領域に対し、新たに生成したタイル画像170iのいずれかを指すようにポインタを設定する(一点鎖線矢印)。また既存のインデックスブロック160fも同様に、更新対象の領域に含まれるタイル領域に対し設定されたポインタが、新たに生成したタイル画像170iのいずれかを指すように更新する。なお最終的に画像ファイルを生成する際は、新たに生成したインデックスブロック160gは、元の画像ファイルの末尾に追加してもよいし、別のファイルとしてもよい。これにより更新前後の画像を表示することができる。
 次に、既存の画像に背景や描画領域など新たな領域を追加することにより画像のサイズを拡張する手順を説明する。図21は、既存の画像に新たな領域を追加する処理を説明するための図である。同図において、追加前の画像は第0階層154i、第1階層154j、第2階層154k、第3階層154lからなる階層データ204であったとする。各階層が属する領域は、ヘッダにおいてインデックスブロックへの有効なポインタが設定されている。
 このような画像に対し新たな領域を追加する場合、各解像度に対応するサイズで各階層の画像に新たな領域を追加した階層データ206を生成する。図21の例で階層データ206は、第0階層154n、第1階層154o、第2階層154p、第3階層154q、第4階層154rからなる。第4階層154rおよび第3階層154qは、白抜きで示した元の画像のタイル画像に、網掛けで示した追加領域のタイル画像を加えることによって生成できる。第2階層154pはそのサイズによって、元のタイル画像がそのまま利用できる白抜きで示した領域に、追加領域と元の画像が混在する網掛けで示したタイル画像を加える。第1階層154oおよび第0階層154nは、それを構成する全てのタイル画像において、元の画像と追加領域が混在するため全て網掛けで示している。
 このように、画像に新たな領域を追加する場合、階層によっては元からあるタイル画像をそのまま利用できる。この性質を利用し、元からあるインデックスブロックはそのまま利用し、追加領域など必要な領域についてのみ新たなインデックスブロックを生成する。図22は、新たな領域を追加する場合のヘッダおよびインデックスブロックの変化を説明する図である。同図のヘッダ150において、白抜きの三角形は元のタイル画像を利用できる領域208を示し、網掛けの部分は追加または追加によって変化する領域210を示している。
 破線は図21の第0階層154n、第1階層154o、第2階層154p、第3階層154q、第4階層154rを示しており、それぞれの階層において元のタイル画像を利用できる領域、および追加または追加によって更新すべき領域が決定され、図22に示すような構造となる。ヘッダで定義される領域は、階層構造体の頂点から順に生成されるため、このようにヘッダ150が変化すると領域の区切りに変化が生じる。
 しかし後に述べるように領域の区切りを工夫することにより、図22のように階層データの頂点で階層が増加するような変化が生じても、変化前に定義されていた領域は可能な限り保存し、ひいては既存のインデックスブロックをそのまま利用できるようにする。図22で領域追加前は、領域208の各領域(図示せず)に対し、インデックスブロック160hへのポインタが設定されている。そしてインデックスブロック160hで定義づけられる各タイル領域は既存のタイル画像170hへのポインタが設定されている(破線矢印)。
 領域追加後は、追加する領域に対応する新たなインデックスブロック160iを生成し、ヘッダ150における新たな領域210に対し当該インデックスブロック160iへのポインタを設定する。ここで領域210はヘッダ150においては複数の領域が定義されていてよいが図示を省略している。生成したインデックスブロック160iには、タイル領域ごとに、領域追加によって必要となった新たなタイル画像170kのいずれかへのポインタが設定される(一点鎖線矢印)。ここで新たなタイル画像170kは、図21で網掛けで示した、追加する領域自体のタイル画像や、追加する領域と元の画像が混在するタイル画像である。この際、追加する領域が単色の背景である場合などは、一つのタイル画像を共有できる。
 一方、ヘッダにおいて元から定義づけられていた領域は、領域の区切り方に変更がない場合は、設定されたポインタ、ひいてはそれが指し示すインデックスブロックをそのまま利用できる。そのためインデックスブロック内で設定される、タイル画像へのポインタを更新する必要がない。なお上述の例は画像の右および下の領域を追加する場合であるが、いずれの方向に画像を拡張する場合であっても、既存のインデックスブロックを拡張後も利用できるように領域分割を行うことにより、ヘッダ、インデックスブロックの変化を最小限に抑えることができる。
 図23は、図21および図22で説明したように、画像サイズを拡張する場合など階層構造体の頂点側に階層を追加する際にヘッダにおいて定義される領域の分割手法を説明する図である。まず最初の階層データ230では、第0~1階層の全体を第1領域152k、第2~4階層の全体を第2領域152l、第5~7階層を画像上の領域で分割した領域を順に第3領域152m、第4領域152n、・・・、というように領域分割される。この領域の構成は図8で示したのと同様である。
 前述のとおりひとつのインデックスブロックが定義するタイル領域の数はインデックスブロックによらず等しく準備するが、第1領域152kは、1つのタイル画像で構成される第0階層、2×2のタイル画像で構成される第1階層のみからなるため、当該領域に対応するインデックスブロック160jにおいてはその数のタイル領域のみを使用し、それ以外のタイル領域にはヌルポインタを設定して無効とする。
 なお図23に示すインデックスブロックでは、有効なタイル領域の横方向の数を階層別に矩形で示している。従って第1領域152kに対応するインデックスブロック160jは1つおよび2つの矩形が示されている。第2領域152l、第3領域152mなどその他の領域に対応するインデックスブロック160k、160lなどは、4×4個、8×8個、16×16個のタイル領域を全て有効にできるため、4個、8個、16個の矩形が示されている。
 ここで階層データ230の頂点側に1階層、追加した階層データ232に対しては、元から第1領域に属していた階層はそのままに、追加した階層を第1領域152oにさらに含める。元の第1領域152kに対応するインデックスブロック160jは、データ領域として準備された3階層のうち2階層分のみ用いていたため、無効としていた階層を利用することにより階層の追加を第1領域152oのみで吸収することができる。したがって、元の階層データ230において第2領域152lに含まれていた第2~4階層(階層追加後の第3~5階層)は、そのまま同じ領域に属することができる。ただし各階層の画像は拡張されているため、拡張部分に対し新たな領域を定義しインデックスブロックを生成する。さらに下の階層も同様である。
 ここで階層データ232の頂点側にさらに1階層、追加した階層データ234に対しても、元から第1領域に属していた階層はそのままに、追加した階層を第1領域152pにさらに含める。この場合、第1領域152pのみ4階層となるが、それに対応するインデックスブロック160mで準備されているタイル領域は、第1領域152pのタイル画像の数より大きいため、4階層であってもタイル画像の情報はインデックスブロック160mで充足する。すると、それ以下の階層は最初の階層データ230のときに属していたのと同様の領域に属することができる。
 階層データ234にさらに1階層、追加した階層データ236では、階層データ234で第1領域152pに属していた4階層に、追加した階層を加えた5階層を2つの領域に分割して第1領域152q、第2領域152rとする。このとき第1領域152qを第0~1階層、第2領域152rを第2~4階層とすることにより、第1領域152qに対応するインデックスブロック160nは、最初の階層データ230の第1領域152kに対応するインデックスブロック160jと同様、1つのタイル画像の階層、2×2個のタイル画像の階層のみからなる。また第2領域152rも階層データ230の第2領域152lと同様となる。
 そしてそれ以下の階層は、最初の階層データ230のときに属していたのと同様の領域に属することができる。以上の変化を繰り返すことにより、階層データの頂点に階層を追加しても、可能な限りその他の領域に変化なく領域を定義することができ、ひいては既存のインデックスブロックをそのまま利用することができる。
 図21で示したように画像の領域を拡張した場合、画像処理で一般的に用いられるようなラスタ方向の順番に基づくタイル画像の管理では、追加した領域のタイル画像が既存のタイル画像の間に挿入されてしまうため、タイル画像の並び替えや識別番号のふり直しが必要となる。タイル画像の数が増加するほど、この処理にかかる負荷は多大なものになる。本実施の形態では上述のとおり、局所的なデータの変化のみで画像の領域の拡張が可能になるため、処理コストが低く、更新中のデータ表示や最終的な画像ファイル生成を応答性よく実現できる。
 次に上記の構成によって実現できる動作を説明する。図24は画像処理装置においてユーザが画像を修正、改変する際の処理手順を示すフローチャートである。まずユーザが修正対象の画像ファイルを指定すると、画像ファイル取得部318はハードディスクドライブ50から該当する画像ファイルを読み出しメインメモリ60に格納する(S110)。すると表示画像制御部326は当該画像ファイルの画像を表示装置12に表示する(S112)。
 この状態でユーザが表示装置12に表示された画像を見ながら更新情報を入力すると(S114のY)、更新情報取得部320はそれを受け付け、タイル画像生成部322が更新部分の新たなタイル画像を生成してメインメモリ60に格納する(S116)。ユーザが行う更新情報の入力は、例えば表示装置12に表示した画像の近傍に、新たに貼り付けたい画像をさらに表示し、ユーザがポインティングデバイスで所望の領域までドラッグさせるなどの操作によってなされる。あるいはポインティングデバイスによって文字や絵を直接描き込んだり、領域を追加するコマンドを入力するなどでもよい。
 次にヘッダ・インデックスブロック更新部324は、上述のように画像の更新内容によって適宜ヘッダ、インデックスブロックを更新する(S118)。すると表示画像制御部326は、新たに参照先となったタイル画像のデータを読み出し、デコードすることによって表示装置12の表示を更新する(S120)。S114からS120までの処理を、修正が終了し更新情報が得られなくなるまで繰り返す。
 修正が終了したことをユーザからの入力などにより検知したら(S114のN)、画像ファイル生成部328は、メインメモリ60に格納しておいた、新たに作成したタイル画像を、元の画像ファイルの画像データに組み込んで、画像データを再構築する(S122)。あるいは新たに作成したタイル画像のみを別のファイルに保存する。そしてS118で更新した最終的なヘッダおよびインデックスブロックのデータとともに画像ファイルとして出力する(S124)。
 修正中、ヘッダ、インデックスブロック、タイル画像は、既存のデータと別の記憶領域に格納しておく。そしてユーザが、直前の画像の更新を取り消す操作(Undo)を行った場合はそれらのデータの参照先を元に戻すことにより、画像を前の状態に戻すことが容易にできる。操作の再履行(Redo)でも同様に、参照先を変更するのみで遂行される。
 以上述べた本実施の形態によれば、階層データをヘッダ、インデックスブロック、タイル画像、の3つのデータセットで構成する。これにより、タイル画像を本来の画像上の位置から独立させることができ、画像を修正した際などに管理が容易になるほか、画像の冗長性を考慮してタイル画像を複数の領域で共有することができるため、タイル画像のデータサイズを効率よく削減することができる。
 また、タイル画像を複数の領域で共有する際、ヘッダもしくはインデックスブロックで設定するポインタを無効とし、無効となっている領域では、階層を低解像度側へ辿って有効なポインタが設定されている領域を探索する。これにより、全ての領域に対しいずれかのタイル画像へのポインタを設定する場合と比較し、インデックスに用いるデータ自体のサイズを削減できる。
 さらに、ヘッダによって階層構造体を領域分割し、領域ごとにインデックスブロックを対応づける。この際、一つの領域には複数の階層を含める。これにより、一時に表示や修正の対象となりやすいデータをまとめて扱うことができ、不必要なデータをメインメモリにロードするなど、記憶領域や処理の面で非効率な状況を回避しやすくなる。また、インデックスブロックで定義できるタイル領域の数を固定とすることで、データキャッシュ時のフラグメンテーションが発生せず、記憶領域の管理が容易である。また画像が巨大化してデータサイズが大きくなっても、階層データの領域分割により表示や修正対象のデータへのアクセスが効率的に行える。
 例えば80000個のタイル画像で構成される階層データの場合、インデックスブロックで定義するタイル領域の数を400とすると、インデックスブロックは200個生成される。ここで1つのタイル画像にアクセスしたいとき、単なる80000個のタイル画像の羅列であれば、それを順に検索していく必要があるが、本実施の形態のように領域分割されていれば、1つの領域を検索することは400個のタイル画像を検索することと同等となり、効率の良いアクセスが可能となる。
 同様に、一般的な画像表示装置で表示を行う場合、一度に表示する画像に必要なインデックスブロックは、平均的には1~2個であり、4個以上のインデックスブロックが必要となることは稀である。そのため、領域を分割せずにタイル画像へのインデックスを保持する場合と比較し、一度に必要なインデックスデータサイズが少なくて済み、メインメモリを節約できる。結果的に、複数の階層データを同時に処理するような態様も、メインメモリを圧迫せずに実現できる可能性が高くなる。
 さらに、ヘッダおよびインデックスブロックで設定するポインタには、インデックスブロックおよびタイル画像を記録したファイルの設定もできるようにする。このようにすることで、一つの階層データであっても複数のインデックスブロックファイルやタイル画像ファイルから読み出したデータを利用することができ、階層データをより柔軟に生成、更新することができる。またファイルが異なれば同一の記憶媒体に格納しておく必要がなくなるため、例えば4GBを超える巨大な画像データを生成することができる。これにより非圧縮画像、HDR(High Dynamic Range)画像、アトリビュート情報などを処理対象とすることも可能となる。
 同時に、複数の階層データで、用いるデータのファイルを共有することも可能となる。例えば雑誌のヘッダ、フッタなどテンプレートとして再利用が可能な画像は、個々に保持せず共有することで、階層データ個別のデータサイズを小さくできる。タイル画像ばかりでなくインデックスブロックのデータを共有してもよい。
 これを応用すると、階層データを用いたコンテンツのアップグレードが容易に実現できる。例えば通常版のコンテンツとしてヘッダ、インデックスブロック、タイル画像のデータを含むファイルを配布する。そして追加用として、さらに高解像度な階層のタイル画像のファイルを別に用意する。通常版のヘッダやインデックスブロックには、追加用のタイル画像へのポインタも記述しておくが、当該タイル画像を入手しない限り、そのポインタは無効となるため表示はされない。ユーザがコンテンツのアップグレードをすると、追加用のファイルがダウンロードされ、それに記録されたタイル画像へのポインタが有効となるため、追加用の画像が表示される。このようにすると、通常版のコンテンツファイルを変化させることなくアップグレードが容易に可能となる。アップグレードには課金を義務づけてもよい。
 実施の形態2
 実施の形態1では、主にユーザが入力した情報に基づき画像ファイルを生成、修正した。本実施の形態では、グラフィックプロセッサによって階層データへレンダリングする態様について述べる。レンダリングに階層データを導入することにより、実施の形態1で述べたのと同様、必要とされる解像度に見合った処理のみを行えばよくなり、高精細の巨大な画像であっても効率的な処理が可能となる。本実施の形態は実施の形態1の図4で示した情報処理装置10によって実現できる。図25は本実施の形態における情報処理装置10のうち制御部100およびメインメモリ60の構成をより詳細に示している。
 制御部100はメインプロセッサ400とグラフィックプロセッサ402を含む。メインプロセッサは情報処理装置10において起動したアプリケーションプログラムを主に実行するとともに、情報処理装置10に含まれる他の機能ブロックの制御を行う。グラフィックプロセッサ402はメインプロセッサ400からの画像処理要求に従い画像処理を実行する。画像処理に必要なデータはメインメモリ60に格納され、グラフィックプロセッサ402はそれを読み出し適宜画像処理を行ったうえ、メインメモリ60などに結果を書き出すことにより画像処理を遂行する。
 グラフィックプロセッサ402は、メインプロセッサ400からの画像処理要求に従い、メインメモリ60に格納されたモデルデータ418を用いてレンダリングを行い、同じくメインメモリ60に格納したカラーバッファ414およびZバッファ416を更新する。本実施の形態では図25に示すように、カラーバッファ414およびZバッファ416はいずれも階層データの構造とする。すなわち、描画対象の画像の画素ごとの色情報を保持するカラー値画素平面と、画素ごとの視点からの奥行き情報を保持するZ値画素平面とを、描画対象画像の複数の解像度に対応させて階層化した構造を有する。当該階層データは、実施の形態1で説明したように、ヘッダ、インデックスブロック、タイルデータによって構成してよい。ここでタイルデータは、各階層の画素平面を所定のサイズに分割したタイル領域ごとのデータである
 グラフィックプロセッサ402は、メインプロセッサ400からの要求に従いレンダリングを行うレンダリング部404、レンダリング部404によるレンダリングの結果をメインメモリ60に格納されたカラーバッファ414およびZバッファ416の各階層に反映させる階層データ更新部406を含む。グラフィックプロセッサ402はさらに、レンダリング時に一時的に用いる記憶領域として、GPUカラーバッファ408、GPUーZバッファ410、およびダーティマスク412を含む。ダーティマスク412はGPUカラーバッファ408、GPUーZバッファ410と同じサイズの領域を有し各ピクセルが1ビットの情報を保持する。レンダリングによってGPUカラーバッファ408、GPUーZバッファ410が更新されたら、更新対象のピクセルの値を変化させることにより、当該ピクセルの領域を検出する。
 次に上記の構成を有する画像処理装置の、レンダリング時の動作を説明する。図26は階層データへのレンダリングの処理手順を示すフローチャートである。まずメインプロセッサ400はグラフィックプロセッサ402に対しレンダリング要求を行う(S200)。レンダリングに必要なデータは上述の通りメインメモリ60に格納される。モデルデータ418の他、上述の通り階層構造を有するカラーバッファ414およびZバッファ416もこれに含まれる。
 するとグラフィックプロセッサ402のレンダリング部404は、モデルデータ418などに基づき、カラーバッファ414およびZバッファ416のうちレンダリング対象の階層および領域を特定する(S202)。次にレンダリング部404は、当該領域のデータをカラーバッファ414およびZバッファ416から読み出し、GPUカラーバッファ408およびGPUーZバッファ410からなるGPUバッファに敷き詰める(S204)。レンダリング対象の階層および領域からタイルデータを特定する手法は実施の形態1で述べたタイル画像の特定手法と同様に、ヘッダ、インデックスブロックの順で検索していく。したがって読み出しはタイルデータの単位で行う。
 このときレンダリング部404は、ダーティマスク412を初期化する(S206)。例えば各ピクセル値を「0」にセットする。そして、モデルデータ418を用いて一般的な手法でレンダリングを行い、GPUカラーバッファ408、GPUーZバッファ410を適宜更新するとともに、ダーティマスク412における更新対象のピクセル値を「1」に更新する(S208)。
 そしてGPUカラーバッファ408、GPUーZバッファ410におけるレンダリング結果に基づき、メインメモリ60のカラーバッファ414およびZバッファ416の階層データを更新する(S210)。具体的にはまず、各階層データのうち、レンダリング対象の階層および領域において、更新対象のピクセルを含むタイル領域をダーティマスク412のピクセル値に基づき特定し、当該タイル領域のデータを、GPUカラーバッファ408、GPUーZバッファ410のレンダリング結果に基づき更新する。
 このとき実施の形態1で述べたように、新たなタイルデータを生成し、インデックスブロックに設定されているポインタを新たなタイルデータへのポインタに更新する。なお、頻繁に更新されることが予想される場合は、タイルデータの生成を省略してポインタの更新のみを行い、画像が確定してからタイルデータを生成してもよい。次にレンダリング対象の階層以外の階層に対しても、更新された領域に対応する領域のタイルデータを新たに生成し、インデックスブロックに設定されているポインタを新たなタイルデータへのポインタに更新する。この際、階層によって解像度が異なるため、レンダリング結果は拡大または縮小して新たなタイルデータに反映させる。
 既存の階層データより高解像度の画像をレンダリングするときなど、レンダリング対象の領域のタイルデータがカラーバッファ414およびZバッファ416に元々存在しない場合は、その上の階層の対応する領域を拡大してGPUカラーバッファ408、GPUーZバッファ410に敷き詰める。そしてレンダリング後、更新されたタイルデータのみをカラーバッファ414およびZバッファ416に反映させ、ヘッダあるいはインデックスブロックのポインタを更新する。その後、レンダリング対象の階層以外の階層に対しても、タイルデータを生成、ポインタを更新する点は上記と同様である。この処理は、実施の形態1において図19を用いて説明したのと同様の処理となる。
 なおS210においてレンダリングの結果を階層データに反映させる際、レンダリング対象の階層より下の階層へ反映させるためにレンダリング結果を拡大した領域が、当該階層のタイル領域のいずれかを占めていたらそのタイルデータは削除し、それへのポインタを無効とする。これによりタイルデータのサイズを削減できる。表示時は実施の形態1で述べたのと同様、ポインタが有効な階層を探索し、上の階層の画像を拡大すればよい。
 なおカラーバッファ414およびZバッファ416は、ヘッダおよびインデックスブロックを個別に保持してもよいし、共有してもよい。共有とする場合、インデックスブロックは一つのタイル領域に対し複数のポインタ、すなわちカラーバッファのタイルデータおよびZバッファのタイルデータへのポインタを設定する。これにより、個別に保持するよりヘッダおよびインデックスブロックのデータを圧縮することができる。レンダリング後、画像を確定する場合は、インデックスブロックのうち不要となったZバッファのタイルデータへのポインタを削除してもよい。インデックスブロックにおいて一つのタイル領域に設定する複数のポインタが指す対象は、画像の内容によっては、カラーバッファやZバッファに限られない。
 また複数のカラーバッファ間でZバッファを共有してもよい。例えばカラーバッファのデータを2つ、Zバッファのデータを1つ用意し、一方のカラーバッファとZバッファでレンダリングを行い、他方のカラーバッファとZバッファでレンダリングを行ってもよい。この場合はそれぞれ個別にヘッダおよびインデックスブロックを保持する方が制御の面で有効である。
 カラーバッファおよびZバッファを階層データとしてレンダリングする本実施の態様は、アンチエイリアスに応用することができる。すなわち高解像度の階層とそれより解像度が低い表示用の画像の階層とからなる階層データを生成する。一般的なスーパーサンプリングでは、単色の背景などオブジェクトが存在しない領域についても、高解像度画像用の記憶領域を用意する必要がある。一方、これらのバッファを上述のような階層データとすることにより、低解像度の階層を拡大すれば得られる領域は高解像度画像のレンダリング対象から外すことができる。
 例えば領域ごとに必要な解像度をユーザが指定することにより、各階層において必要最低限の領域のみのレンダリングで済みメモリの使用効率が向上する。頻繁なタイルデータ更新と画像表示を応答性良く行うためには、生成したタイルデータは圧縮しなくても良い。なお画像の全体にわたりアンチエイリアスが必要な場合はスーパーサンプリングを行うなど、対象領域の割合によってアンチエイリアスの手法を切り替えてもよい。
 アンチエイリアスを階層データを用いて行う場合、常に最下層の画像のみをレンダリングし、画像確定後にその縮小画像を生成する場合と、ユーザが指定した階層にレンダリングし、そのたびに全ての階層の対応する領域も更新する場合とが考えられる。前者は縮小処理の頻度が低く抑えられ、後者はラスタライズ、シェーダー処理、ROP(Rendering Output Pipeline)、ピクセル転送などのピクセル生成処理のコストを予測しやすい。ただし後者は、グラフィックプロセッサ402とメインメモリ60間で元の画像、拡大画像、縮小画像などのデータが頻繁に転送されるため、転送バンド幅への負荷がかかり易くなる。
 アンチエイリアスの場合のみならず、階層データをレンダリングする場合は、レンダリング結果を各階層へ反映させるため、画像を拡大、縮小するスケーリング処理が頻繁に必要となる。スケーリング処理の都度、画像データをグラフィックプロセッサ、メインメモリ間で送受すると、両者間の転送バンド幅を圧迫する懸念がある。そこで本実施の形態では、図27で示すようにスケーリング処理を行うスケーラ422をメインメモリ60に内蔵するようにしてもよい。
 これにより、グラフィックプロセッサ520およびメインメモリ60は、レンダリング対象の解像度の画像のみをやりとりすればよく、メインメモリ60内の階層データにおける各階層へのレンダリング結果の反映は、スケーラ422がメインメモリ60内で行う。結果としてグラフィックプロセッサ520とメインメモリ60間の転送バンド幅の圧迫が防止でき、階層データのレンダリングが効率的に実施できる。なおスケーラ422はメインメモリ60に内蔵せず、グラフィックプロセッサ520とメインメモリ60間のバスとは別のバスでメインメモリ60に接続するようにしても同様の効果が得られる。
 以上述べた本実施の形態は、一般的なグラフィックプロセッサを利用して実現することができる。ここで一般的なグラフィックプロセッサでは、内部のフレームバッファ、すなわち上述のGPUバッファのアドレッシング時、メインメモリからの読み出しおよび書き込みの回数を抑えるため、画面上でまとまった領域に対し近いメモリアドレスを割り当てる、という手法をとる。しかしGPUバッファに用いられる領域は連続したアドレス空間でなくてはならない、という制約がある。すなわちアドレスが不連続な領域を敷き詰めることができない。図28、29はその際の処理の様子を示している。
 まず図28において、階層データの第3階層の画像の一部の領域430をレンダリング対象としたとき、「11」~「18」のアドレスが割り振られるとする。この場合、グラフィックプロセッサ402はGPUバッファに当該領域430を敷き詰めることができる。その後、図29に示すように、同じ第3階層の一部の領域432をレンダリング対象としたとする。領域432は、図28においてアドレス「11」および「12」を割り当て済みの領域を含む。この場合、領域432のその他の領域に、「19」~「24」のアドレスを割り振る。このようにアドレス割り当てを行うと、領域432はアドレスが不連続な領域を含んでしまい、グラフィックプロセッサ402がGPUバッファに当該領域を敷き詰めることができなくなる。
 このため、領域432を別の記憶領域に一旦コピーし、新たな連続したアドレス(図29ではアドレス「50」~「57」)を割り当てることによりGPUバッファへの敷き詰めを行う必要がある。このような処理コストを軽減するため本実施の形態では、メインメモリ60のメモリコントローラ(図示せず)に、領域の位置と割り振るアドレスとを対応づけるテーブルを設けてもよい。図29の領域432の場合、ラスタ順に「0」~「7」で領域の位置を表現し、「0」=「19」、「1」=「20」、「2」=「21」、「3」=「22」、「4」=「23」、「5」=「24」、「6」=「11」、「7」=「12」、と対応づける。
 こうすることにより不連続なアドレスを割り振られた領域のレンダリングであっても、メインメモリ60においてアドレス変換がなされるため、図29で示したような敷き詰めのためのコピーが必要なくなる。さらに図27のようにメインメモリ60がスケーラ422を内蔵していたとすると、拡大、縮小した画像の生成も含め、階層データを生成、更新するための多くの処理をメインメモリ60内で閉じることができる。
 本実施の形態のように階層データのレンダリングを可能とすることにより、ヘッダ、インデックスブロックによるタイルデータへのランダムアクセス、ヘッダを分割して階層データごとのメモリコストを下げたことによる複数の階層データの同時処理、タイルデータの追加、削除、更新がレンダリングによって可能、といった特徴が得られる。これらの特徴は、ランダムアクセス、マルチテクスチャリング、レンダーターゲット、というテクスチャの要件と同等である。したがって、階層データをテクスチャと同等に扱うことが可能になり、階層データをコンピュータグラフィックスを用いた広範囲の用途に応用することができる。
 以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
1 情報処理システム、 10 情報処理装置、 12 表示装置、 20 入力装置、 38 タイル画像、 50 ハードディスクドライブ、 60 メインメモリ、 100 制御部、 102 入力情報取得部、 106 ロードブロック決定部、 108 ロード部、 110 タイル画像特定部、 112 デコード部、 114 表示画像処理部、 120 画像階層生成部、 122 画像分割部、 124 冗長性検出部、 126 ヘッダ・インデックスブロック生成部、 150 ヘッダ、 160 インデックスブロック、 170 タイル画像、 318 画像ファイル取得部、 320 更新情報取得部、322 タイル画像生成部、 324 ヘッダ・インデックスブロック更新部、 326 表示画像制御部、 328 画像ファイル生成部、 400 メインプロセッサ、 402 グラフィックプロセッサ、 404 レンダリング部、 406 階層データ更新部、 408 GPUカラーバッファ、 410 GPUーZバッファ、 412 ダーティマスク、 414 カラーバッファ、 416 Zバッファ、 418 モデルデータ、 422 スケーラ、 520 グラフィックプロセッサ。
 以上のように本発明はコンピュータ、ゲーム機、画像処理装置、画像描画装置などの情報処理装置に利用可能である。

Claims (40)

  1.  入力された画像データから、異なる解像度の複数の画像データを生成し、解像度順に階層化して構成される階層データを生成する画像階層生成部と、
     前記階層データを構成する各階層の画像データを所定サイズのタイル画像に分割する画像分割部と、
     前記階層データを構成する各階層の画像をタイル画像に分割した際の各領域であるタイル領域と、当該領域を描画する際に用いる前記タイル画像のデータとを対応づけたインデックスデータを作成するインデックス作成部と、
     前記タイル画像のデータと前記インデックスデータとを含む画像ファイルを生成する画像ファイル生成部と、を備え、
     前記インデックス作成部は、前記階層データの画像平面とそれに垂直な解像度の軸によって定義される仮想空間において前記階層データで構成される階層構造体を分割してなる領域ごとに、前記タイル領域ごとのインデックスデータをまとめたインデックスブロックの形式で、前記インデックスデータを生成することを特徴とする画像ファイル生成装置。
  2.  前記インデックス作成部は、前記階層構造体を分割してなる領域と、それに対応する前記インデックスブロックとを対応づけたヘッダデータをさらに生成し、
     前記画像ファイル生成部は、前記ヘッダデータおよび前記インデックスブロックを前記インデックスデータに含めることを特徴とする請求項1に記載の画像ファイル生成装置
  3.  ある解像度の階層の画像を解析することによって、当該解像度の画像に含まれるタイル画像のデータを流用して描画できる、当該解像度より高解像度の階層の画像の領域を特定する冗長性検出部をさらに備え、
     前記インデックス作成部は、前記インデックスデータにおいて、前記冗長性検出部が特定した領域以外の領域にのみタイル画像のデータを対応づけることを特徴とする請求項1または2に記載の画像ファイル生成装置。
  4.  ある解像度の階層の画像を解析することによって、当該解像度の画像に含まれるタイル画像のデータを流用して描画できる、当該解像度より高解像度の階層の画像の領域を特定する冗長性検出部をさらに備え、
     前記冗長性検出部が特定した領域が、前記階層構造体を分割してなる一の領域の全体に渡るとき、前記画像ファイル生成部は、当該領域に対応する前記インデックスブロックを前記画像ファイルから除外することを特徴とする請求項1または2に記載の画像ファイル生成装置。
  5.  前記インデックスデータは、一のタイル画像のデータを複数のタイル領域に対応づけ、前記画像ファイルは、前記インデックスデータにおいて対応づけられていないタイル画像のデータを含まないことを特徴とする請求項1から4のいずれかに記載の画像ファイル生成装置。
  6.  前記階層構造体を分割してなる領域はそれぞれ、前記階層データに含まれる複数の階層の画像の対応する領域を含むことを特徴とする請求項1から5のいずれかに記載の画像ファイル生成装置。
  7.  一つのインデックスブロックにおいてタイル画像のデータに対応づけることのできる前記タイル領域の数は、全てのインデックスブロックで同一であることを特徴とする請求項1から6のいずれかに記載の画像ファイル生成装置。
  8.  一の画像を異なる解像度で表す画像データによって構成される階層データのそれぞれの画像を所定サイズに分割してなるタイル画像のデータと、前記階層データを構成する各階層の画像をタイル画像に分割した際の各領域であるタイル領域と当該領域を描画する際に用いる前記タイル画像のデータとを対応づけたインデックスデータと、を含む画像ファイルを保持する記憶装置と、
     画像平面上の移動および解像度の変更を含む表示領域変更要求をユーザから受け付ける入力情報取得部と、
     前記表示領域変更要求に応じて新たに表示すべき領域を描画するのに必要なタイル画像のデータを、前記インデックスデータを参照することによって特定するタイル画像特定部と、
     特定したタイル画像のデータを前記記憶装置より読み出し、新たに表示すべき領域を描画する表示画像処理部と、
     を備え、
     前記インデックスデータは、前記階層データの画像平面とそれに垂直な解像度の軸によって定義される仮想空間において前記階層データで構成される階層構造体を分割してなる領域ごとに、前記タイル領域ごとのインデックスデータをまとめたインデックスブロックの形式を有することを特徴とする画像処理装置。
  9.  前記インデックスデータは、前記階層構造体を分割してなる領域と、それに対応する前記インデックスブロックとを対応づけたヘッダデータを含み、
     前記タイル画像特定部は、新たに表示すべき領域の情報に基づき前記ヘッダデータを検索し、当該表示すべき領域を含む、前記階層構造体を分割してなる領域を特定したうえ、それに対応づけられた前記インデックスブロックを参照することにより、前記必要なタイル画像のデータを特定することを特徴とする請求項8に記載の画像処理装置。
  10.  前記インデックスデータは、ある解像度の画像に含まれるタイル画像のデータを流用して描画できる、当該解像度より高解像度の階層の画像のタイル領域に対しては無効データを対応づけ、
     前記タイル画像特定部は、前記インデックスデータにおいて、新たに表示すべき領域に含まれる前記タイル領域に対して無効データが対応づけられていたら、前記階層データを縮小方向に辿り、前記領域の縮小領域に含まれ特定のタイル画像のデータに対応づけられているタイル領域を探索することにより、当該タイル画像のデータを特定し、
     前記表示画像処理部は、前記タイル画像特定部が特定したタイル画像を拡大することにより新たに表示すべき領域を描画することを特徴とする請求項8または9に記載の画像処理装置。
  11.  前記ヘッダデータは、ある解像度の画像に含まれるタイル画像のデータを流用して描画できる、当該解像度より高解像度の階層の画像のタイル領域が前記階層構造体を分割してなる一の領域の全体に渡るとき、当該領域に対しては無効データを対応づけ、
     前記タイル画像特定部は、前記ヘッダデータにおいて、新たに表示すべき領域を含む、前記階層構造体を分割してなる領域に対して無効データが対応づけられていたら、前記構造体を縮小方向に辿り、新たに表示すべき領域の縮小領域を含み特定のインデックスブロックに対応づけられている領域を探索することにより、当該インデックスブロックを特定したうえで、前記縮小領域のタイル画像を特定し、
     前記表示画像処理部は、前記タイル画像特定部が特定したタイル画像を拡大することにより新たに表示すべき領域を描画することを特徴とする請求項9に記載の画像処理装置。
  12.  前記インデックスデータは、前記タイル領域と、前記画像ファイルと異なるファイルに属するタイル画像のデータとを、当該ファイルの識別情報を指定したうえで対応づけ、
     前記表示画像処理部は、新たに表示すべき領域に用いるタイル画像のデータを、前記インデックスデータにおいて指定された別のファイルから読み出し描画することを特徴とする請求項8から11のいずれかに記載の画像処理装置。
  13.  一の画像を異なる解像度で表す画像データによって構成される階層データのそれぞれの画像を所定サイズに分割してなるタイル画像のデータと、前記階層データを構成する各階層の画像をタイル画像に分割した際の各領域であるタイル領域と当該領域を描画する際に用いる前記タイル画像のデータとを対応づけたインデックスデータと、を含む画像ファイルを読み出す画像ファイル取得部と、
     前記画像ファイルを用いて表示される画像の更新情報を取得する更新情報取得部と、
     前記更新情報に基づき、更新対象の領域を描画する際に用いる新たなタイル画像のデータを生成するタイル画像生成部と、
     前記インデックスデータにおいて更新対象の領域に含まれるタイル領域に対応づけられるタイル画像のデータを、新たなタイル画像のデータに更新するインデックスデータ更新部と、
     前記タイル画像生成部が生成したタイル画像のデータと、前記インデックスデータ更新部が更新した前記インデックスデータを含む新たな画像ファイルを生成する画像ファイル生成部と、を備え、
     前記インデックスデータは、前記階層データの画像平面とそれに垂直な解像度の軸によって定義される仮想空間において前記階層データで構成される階層構造体を分割してなる領域ごとに、前記タイル領域ごとのインデックスデータをまとめたインデックスブロックの形式を有することを特徴とする画像処理装置。
  14.  前記タイル画像生成部は、前記階層データを構成する全ての階層に対し、更新対象の領域を描画する際に用いる新たなタイル画像のデータを生成し、
     前記インデックスデータ更新部は、前記全ての階層の更新対象の領域に含まれるタイル領域に対応づけられるタイル画像のデータを更新することを特徴とする請求項13に記載の画像処理装置。
  15.  前記タイル画像生成部は、前記階層データのうち、前記更新情報において指定される特定の階層のみに対し、更新対象の領域を描画する際に用いる新たなタイル画像のデータを生成し、
     前記インデックスデータ更新部は、当該特定の階層の更新対象の領域に含まれるタイル領域に対応づけられるタイル画像のデータを更新することを特徴とする請求項13に記載の画像処理装置。
  16.  前記更新情報において、更新前の前記階層データにおける最高解像度の階層を超える解像度の画像の書き込みが指定されている場合、
     前記インデックスデータ更新部は、前記インデックスデータにおいて、前記階層データに追加すべき、書き込まれる画像の解像度を有する新たな階層のタイル領域を追加で定義し、そのうち更新対象のタイル領域を、前記タイル画像生成部が新たに生成した、書き込まれる画像を含むタイル画像に対応づけることを特徴とする請求項13から15のいずれかに記載の画像処理装置。
  17.  前記更新情報において、更新前の画像に新たな画像領域を追加する指定がされている場合、
     前記インデックスデータ更新部は、画像領域の追加によって前記階層構造体の変化した部分に対応する領域を新たに生成し、当該領域に対応する前記インデックスブロックをさらに生成することを特徴とする請求項13から15のいずれかに記載の画像処理装置。
  18.  前記タイル画像生成部は、追加される画像領域と、更新前の画像が混在するタイル画像の領域を特定し、前記追加される画像領域のタイル画像のデータとともに当該混在するタイル画像のデータを生成することを特徴とする請求項17に記載の画像処理装置。
  19.  入力された画像データから、異なる解像度の複数の画像データを生成し、解像度順に階層化して構成される階層データを生成しメモリに格納するステップと、
     前記階層データを構成する各階層の画像データをメモリより読み出し所定サイズのタイル画像に分割するステップと、
     前記階層データを構成する各階層の画像をタイル画像に分割した際の各領域であるタイル領域と当該領域を描画する際に用いる前記タイル画像のデータとを対応づけたインデックスデータを作成しメモリに格納するステップと、
     前記タイル画像のデータと前記インデックスデータとを含む画像ファイルを生成しメモリに格納するステップと、を含み、
     前記インデックスデータを作成するステップは、前記階層データの画像平面とそれに垂直な解像度の軸によって定義される仮想空間において前記階層データで構成される階層構造体を分割してなる領域ごとに、前記タイル領域ごとのインデックスデータをまとめたインデックスブロックの形式で、前記インデックスデータを生成することを特徴とする画像ファイル生成方法。
  20.  一の画像を異なる解像度で表す画像データによって構成される階層データのそれぞれの画像を所定サイズに分割してなるタイル画像のデータと、前記階層データを構成する各階層の画像をタイル画像に分割した際の各領域であるタイル領域と当該領域を描画する際に用いる前記タイル画像のデータとを対応づけたインデックスデータと、を含む画像ファイルをメモリより読み出すステップと、
     画像平面上の移動および解像度の変更を含む表示領域変更要求をユーザから受け付けるステップと、
     前記表示領域変更要求に応じて新たに表示すべき領域を描画するのに必要なタイル画像のデータを、前記インデックスデータを参照することによって特定するステップと、
     特定したタイル画像のデータをメモリより読み出し、新たに表示すべき領域を描画し表示装置に表示するステップと、
     を含み、
     前記インデックスデータは、前記階層データの画像平面とそれに垂直な解像度の軸によって定義される仮想空間において前記階層データで構成される階層構造体を分割してなる領域ごとに、前記タイル領域ごとのインデックスデータをまとめたインデックスブロックの形式を有することを特徴とする画像処理方法。
  21.  一の画像を異なる解像度で表す画像データによって構成される階層データのそれぞれの画像を所定サイズに分割してなるタイル画像のデータと、前記階層データを構成する各階層の画像をタイル画像に分割した際の各領域であるタイル領域と当該領域を描画する際に用いる前記タイル画像のデータとを対応づけたインデックスデータと、を含む画像ファイルをメモリより読み出すステップと、
     前記画像ファイルを用いて表示される画像の更新情報を取得するステップと、
     前記更新情報に基づき、更新対象の領域を描画する際に用いる新たなタイル画像のデータを生成しメモリに格納するステップと、
     前記インデックスデータにおいて更新対象の領域に含まれるタイル領域に対応づけられるタイル画像のデータを、新たなタイル画像のデータに更新するステップと、
     新たに生成したタイル画像のデータと、更新した前記インデックスデータを含む新たな画像ファイルを生成してメモリに格納するステップと、
     を含み、
     前記インデックスデータは、前記階層データの画像平面とそれに垂直な解像度の軸によって定義される仮想空間において前記階層データで構成される階層構造体を分割してなる領域ごとに、前記タイル領域ごとのインデックスデータをまとめたインデックスブロックの形式を有することを特徴とする画像処理方法。
  22.  入力された画像データから、異なる解像度の複数の画像データを生成し、解像度順に階層化して構成される階層データを生成しメモリに格納する機能と、
     前記階層データを構成する各階層の画像データをメモリより読み出し所定サイズのタイル画像に分割する機能と、
     前記階層データを構成する各階層の画像をタイル画像に分割した際の各領域であるタイル領域と、当該領域を描画する際に用いる前記タイル画像のデータとを対応づけたインデックスデータを作成しメモリに格納する機能と、
     前記タイル画像のデータと前記インデックスデータとを含む画像ファイルを生成しめもりに格納する機能と、
     をコンピュータに実現させるコンピュータプログラムであって、
     前記インデックスデータを作成する機能は、前記階層データの画像平面とそれに垂直な解像度の軸によって定義される仮想空間において前記階層データで構成される階層構造体を分割してなる領域ごとに、前記タイル領域ごとのインデックスデータをまとめたインデックスブロックの形式で、前記インデックスデータを生成することを特徴とするコンピュータプログラム。
  23.  一の画像を異なる解像度で表す画像データによって構成される階層データのそれぞれの画像を所定サイズに分割してなるタイル画像のデータと、前記階層データを構成する各階層の画像をタイル画像に分割した際の各領域であるタイル領域と当該領域を描画する際に用いる前記タイル画像のデータとを対応づけたインデックスデータと、を含む画像ファイルをメモリより読み出す機能と、
     画像平面上の移動および解像度の変更を含む表示領域変更要求をユーザから受け付ける機能と、
     前記表示領域変更要求に応じて新たに表示すべき領域を描画するのに必要なタイル画像のデータを、前記インデックスデータを参照することによって特定する機能と、
     特定したタイル画像のデータをメモリより読み出し、新たに表示すべき領域を描画し表示装置に表示する機能と、
     をコンピュータに実現させるコンピュータプログラムであって、
     前記インデックスデータは、前記階層データの画像平面とそれに垂直な解像度の軸によって定義される仮想空間において前記階層データで構成される階層構造体を分割してなる領域ごとに、前記タイル領域ごとのインデックスデータをまとめたインデックスブロックの形式を有することを特徴とするコンピュータプログラム。
  24.  一の画像を異なる解像度で表す画像データによって構成される階層データのそれぞれの画像を所定サイズに分割してなるタイル画像のデータと、前記階層データを構成する各階層の画像をタイル画像に分割した際の各領域であるタイル領域と当該領域を描画する際に用いる前記タイル画像のデータとを対応づけたインデックスデータと、を含む画像ファイルをメモリより読み出す機能と、
     前記画像ファイルを用いて表示される画像の更新情報を取得する機能と、
     前記更新情報に基づき、更新対象の領域を描画する際に用いる新たなタイル画像のデータを生成しメモリに格納する機能と、
     前記インデックスデータにおいて更新対象の領域に含まれるタイル領域に対応づけられるタイル画像のデータを、新たなタイル画像のデータに更新する機能と、
     新たに生成したタイル画像のデータと、更新した前記インデックスデータを含む新たな画像ファイルを生成してメモリに格納する機能と、
     をコンピュータに実現させるコンピュータプログラムであって、
     前記インデックスデータは、前記階層データの画像平面とそれに垂直な解像度の軸によって定義される仮想空間において前記階層データで構成される階層構造体を分割してなる領域ごとに、前記タイル領域ごとのインデックスデータをまとめたインデックスブロックの形式を有することを特徴とするコンピュータプログラム。
  25.  画像の少なくとも一部をディスプレイに表示するために記憶装置から読み出される画像ファイルのデータ構造であって、
     一の画像を異なる解像度で表す画像データを所定サイズに分割してなるタイル画像のデータと、
     前記画像データを解像度順に階層化した階層データにおける各階層の画像をタイル画像に分割した際の各領域であるタイル領域と当該領域を描画する際に用いる前記タイル画像のデータとを対応づけたインデックスデータと、を対応づけ、
     前記インデックスデータは、前記階層データの画像平面とそれに垂直な解像度の軸によって定義される仮想空間において前記階層データで構成される階層構造体を分割してなる領域ごとに、前記タイル領域ごとのインデックスデータをまとめたインデックスブロックの形式を有することを特徴とする画像ファイルのデータ構造。
  26.  一つの前記インデックスブロックで定義可能なタイル領域の数は、全てのインデックスブロックで同一であることを特徴とする請求項25に記載の画像ファイルのデータ構造。
  27.  前記インデックスデータは、ある解像度の画像に含まれるタイル画像のデータを流用して描画できる、当該解像度より高解像度の階層の画像のタイル領域に対しては無効データを対応づけられていることにより、前記タイル画像の流用によって画像を描画する旨を表したことを特徴とする請求項25および26のいずれかに記載の画像ファイルのデータ構造。
  28.  プログラムを実行し新たに表示すべき画像の描画のための情報を含む画像処理要求を発行する画像処理要求部と、
     描画対象の画像の画素ごとの色情報を保持するカラー値画素平面と、画素ごとの視点からの奥行き情報を保持するZ値画素平面とを、描画対象画像の複数の解像度に対応させて階層化した階層カラーバッファおよび階層Zバッファを記憶する階層データ記憶部と、
     前記画像処理要求を受け付け画像処理を実行し、前記階層カラーバッファおよび前記階層Zバッファを更新する画像処理部と、を備え、
     前記画像処理部は、
     前記階層カラーバッファおよび前記階層Zバッファから読み出た描画対象の階層および領域のデータをそれぞれ記録する描画用カラーバッファおよび描画用Zバッファと、
     前記画像処理要求に基づき描画対象の階層および領域を特定して前記描画用カラーバッファおよび前記描画用Zバッファにデータを読み出し、前記画像処理要求に基づき画像処理演算を行いデータを更新する描画部と、
     更新された前記描画用カラーバッファおよび前記描画用Zバッファのデータに対し、前記複数の解像度に対応させてスケーリング処理を施し、前記階層カラーバッファおよび前記階層Zバッファの各階層のデータを更新する階層データ更新部と、
     を備えたことを特徴とする画像処理装置。
  29.  前記階層カラーバッファおよび前記階層Zバッファは、各階層の画素平面を所定のサイズに分割してなるタイルデータと、各階層の分割後の個々の領域であるタイル領域と当該タイル領域が描画対象となったときに用いる前記タイルデータとを対応づけたインデックスデータと、で構成され、
     前記階層データ更新部は、描画対象領域を含むタイル領域ごとにタイルデータを各階層に対して新たに生成し、前記インデックスデータにおいて描画対象領域を含むタイル領域に対応づけられたタイルデータを、新たなタイルデータとすることにより、各階層のデータを更新することを特徴とする請求項28に記載の画像処理装置。
  30.  前記画像処理部は、前記描画部による画像処理演算に際し、前記描画用カラーバッファおよび前記描画用Zバッファの画素値が更新されたか否かの情報を画素ごとに保持する画素更新用マスクをさらに備え、
     前記階層データ更新部は、前記画素更新用マスクを参照し、前記タイル領域のうち更新された画素を含むタイル領域を特定し、当該タイル領域のタイルデータを生成することを特徴とする請求項29に記載の画像処理装置。
  31.  前記描画部は、前記階層カラーバッファおよび前記階層Zバッファにおいて描画対象の階層に描画対象領域に対応するタイルデータが存在しないとき、当該階層より解像度の小さい別の階層の対応する領域を拡大して前記描画用カラーバッファおよび前記描画用Zバッファに読み出して更新し、
     前記階層データ更新部は、前記描画対象領域を含む描画対象の階層のタイル領域と当該タイル領域に対し新たに生成したタイルデータとを対応づけたデータを前記インデックスデータに追加することを特徴とする請求項29または30に記載の画像処理装置。
  32.  前記階層データ更新部は、描画対象の階層より高い解像度の階層における描画対象の領域に一つのタイル領域全体が含まれていたら、前記インデックスデータにおいて当該タイル領域に対応づけられたタイルデータを削除することを特徴とする請求項31に記載の画像処理装置。
  33.  前記インデックスデータは、前記階層カラーバッファおよび前記階層Zバッファの画素平面とそれに垂直な解像度の軸によって定義される仮想空間において前記階層カラーバッファおよび前記階層Zバッファで構成される階層構造体を分割してなる領域ごとに、前記タイル領域ごとのインデックスデータをまとめたインデックスブロックの形式を有することを特徴とする請求項29から32のいずれかに記載の画像処理装置。
  34.  前記インデックスデータは、前記階層構造体を分割してなる領域と、それに対応する前記インデックスブロックとを対応づけたヘッダデータを含み、
     前記描画部は、描画対象の領域の情報に基づき前記ヘッダデータを検索し、当該描画対象の領域を含む、前記階層構造体を分割してなる領域を特定したうえ、それに対応づけられた前記インデックスブロックを参照することにより、前記階層カラーバッファおよび前記階層Zバッファから前記タイルデータの単位でデータを読み出すことを特徴とする請求項33に記載の画像処理装置。
  35.  前記階層カラーバッファおよび前記階層Zバッファは、前記タイル領域と、双方のタイルデータとを対応づけた一つのインデックスデータを共有することを特徴とする請求項29から34のいずれかに記載の画像処理装置。
  36.  前記階層データ更新部は、前記描画部とは独立に前記階層データ記憶部に接続されていることを特徴とする請求項28から35のいずれかに記載の画像処理装置。
  37.  一度に読み出すタイルデータに対し与えられる連続したアドレスと、前記描画部が前記階層カラーバッファおよび前記階層Zバッファからタイルデータ読み出す際に各タイルデータに対し割り当てたアドレスとを対応づけたアドレス変換テーブルを参照し、前記描画部が前記階層カラーバッファおよび前記階層Zバッファからデータを読み出す際に指定したアドレスを、前記連続したアドレスに変換するメモリコントローラをさらに備えたことを特徴とする請求項29から36のいずれかに記載の画像処理装置。
  38.  プログラムを実行し新たに表示すべき画像の描画のための情報を含む画像処理要求を発行するステップと、
     描画対象の画像の画素ごとの色情報を保持するカラー値画素平面と、画素ごとの視点からの奥行き情報を保持するZ値画素平面とを、描画対象画像の複数の解像度に対応させて階層化した階層カラーバッファおよび階層Zバッファをメモリに記憶するステップと、
     前記画像処理要求を受け付け画像処理を実行し、前記階層カラーバッファおよび前記階層Zバッファを更新するステップと、を含み、
     前記階層カラーバッファおよび前記階層Zバッファを更新するステップは、
     前記画像処理要求に基づき描画対象の階層および領域を特定し、前記階層カラーバッファおよび前記階層Zバッファからそれぞれデータを読み出して、描画用カラーバッファおよび描画用Zバッファに書き込むステップと、
     前記画像処理要求に基づき画像処理演算を行い前記描画用カラーバッファおよび前記描画用Zバッファのデータを更新するステップと、
     更新された前記描画用カラーバッファおよび前記描画用Zバッファのデータに対し、前記複数の解像度に対応させてスケーリング処理を施し、前記階層カラーバッファおよび前記階層Zバッファの各階層のデータを更新するステップと、
     を含むことを特徴とする画像処理方法。
  39.  プログラムを実行し新たに表示すべき画像の描画のための情報を含む画像処理要求を発行する機能と、
     描画対象の画像の画素ごとの色情報を保持するカラー値画素平面と、画素ごとの視点からの奥行き情報を保持するZ値画素平面とを、描画対象画像の複数の解像度に対応させて階層化した階層カラーバッファおよび階層Zバッファをメモリに記憶する機能と、
     前記画像処理要求を受け付け画像処理を実行し、前記階層カラーバッファおよび前記階層Zバッファを更新する機能と、をコンピュータに実現させることを特徴とするコンピュータプログラムであって、
     前記階層カラーバッファおよび前記階層Zバッファを更新する機能は、
     前記画像処理要求に基づき描画対象の階層および領域を特定し、前記階層カラーバッファおよび前記階層Zバッファからそれぞれデータを読み出して、描画用カラーバッファおよび描画用Zバッファに書き込む機能と、
     前記画像処理要求に基づき画像処理演算を行い前記描画用カラーバッファおよび前記描画用Zバッファのデータを更新する機能と、
     更新された前記描画用カラーバッファおよび前記描画用Zバッファのデータに対し、前記複数の解像度に対応させてスケーリング処理を施し、前記階層カラーバッファおよび前記階層Zバッファの各階層のデータを更新する機能と、
     をコンピュータに実現させることを特徴とするコンピュータプログラム。
  40.  プログラムを実行し新たに表示すべき画像の描画のための情報を含む画像処理要求を発行する機能と、
     描画対象の画像の画素ごとの色情報を保持するカラー値画素平面と、画素ごとの視点からの奥行き情報を保持するZ値画素平面とを、描画対象画像の複数の解像度に対応させて階層化した階層カラーバッファおよび階層Zバッファをメモリに記憶する機能と、
     前記画像処理要求を受け付け画像処理を実行し、前記階層カラーバッファおよび前記階層Zバッファを更新する機能と、をコンピュータに実現させることを特徴とするコンピュータプログラムを記録した記録媒体であって、
     前記階層カラーバッファおよび前記階層Zバッファを更新する機能は、
     前記画像処理要求に基づき描画対象の階層および領域を特定し、前記階層カラーバッファおよび前記階層Zバッファからそれぞれデータを読み出して、描画用カラーバッファおよび描画用Zバッファに書き込む機能と、
     前記画像処理要求に基づき画像処理演算を行い前記描画用カラーバッファおよび前記描画用Zバッファのデータを更新する機能と、
     更新された前記描画用カラーバッファおよび前記描画用Zバッファのデータに対し、前記複数の解像度に対応させてスケーリング処理を施し、前記階層カラーバッファおよび前記階層Zバッファの各階層のデータを更新する機能と、
     をコンピュータに実現させることを特徴とするコンピュータプログラムを記録した記録媒体。
PCT/JP2010/004809 2009-10-26 2010-07-29 画像ファイル生成装置、画像処理装置、画像ファイル生成方法、画像処理方法、および画像ファイルのデータ構造 WO2011052117A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
AU2010313045A AU2010313045B2 (en) 2009-10-26 2010-07-29 Image file generation device, image processing device, image file generation method, image processing method, and data structure for image files
US13/502,409 US8724914B2 (en) 2009-10-26 2010-07-29 Image file generation device, image processing device, image file generation method, image processing method, and data structure for image files
CN201080045762.3A CN102667864B (zh) 2009-10-26 2010-07-29 图像文件生成装置、图像处理装置、图像文件生成方法、图像处理方法
RU2012121208/08A RU2519058C2 (ru) 2009-10-26 2010-07-29 Устройство формирования файлов изображения, устройство обработки изображения, способ формирования файлов изображения, способ обработки изображения и структура данных файлов изображения
BR112012009893-4A BR112012009893B1 (pt) 2009-10-26 2010-07-29 dispositivos e métodos de geração de arquivo de imagem e de processamento de imagem, mídia de gravação não transitória legível por computador, e, estrutura de dados de um arquivo de imagem

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2009245797A JP5368254B2 (ja) 2009-10-26 2009-10-26 画像ファイル生成装置、画像処理装置、画像ファイル生成方法、画像処理方法、および画像ファイルのデータ構造
JP2009-245798 2009-10-26
JP2009245798A JP5296656B2 (ja) 2009-10-26 2009-10-26 画像処理装置および画像処理方法
JP2009-245797 2009-10-26

Publications (1)

Publication Number Publication Date
WO2011052117A1 true WO2011052117A1 (ja) 2011-05-05

Family

ID=43921556

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/004809 WO2011052117A1 (ja) 2009-10-26 2010-07-29 画像ファイル生成装置、画像処理装置、画像ファイル生成方法、画像処理方法、および画像ファイルのデータ構造

Country Status (6)

Country Link
US (1) US8724914B2 (ja)
CN (1) CN102667864B (ja)
AU (1) AU2010313045B2 (ja)
BR (1) BR112012009893B1 (ja)
RU (1) RU2519058C2 (ja)
WO (1) WO2011052117A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130067502A1 (en) * 2011-09-09 2013-03-14 Microsoft Corporation Atlasing and Virtual Surfaces
WO2013099076A1 (ja) * 2011-12-27 2013-07-04 株式会社ソニー・コンピュータエンタテインメント 動画圧縮装置、画像処理装置、動画圧縮方法、画像処理方法、および動画圧縮ファイルのデータ構造
JP2022024065A (ja) * 2015-12-12 2022-02-08 ダッソー システムズ マルチ解像度画像システム
CN114764843A (zh) * 2021-01-12 2022-07-19 四川大学 基于邻域块匹配的多孔介质图像超维重建方法

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5747378B2 (ja) * 2011-03-18 2015-07-15 株式会社日立国際電気 画像転送システム、画像転送方法、画像受信装置、画像送信装置、及び、画像撮像装置
US9135885B2 (en) * 2011-11-30 2015-09-15 Adobe Systems Incorporated Resolution independent client side rendering
JP5548671B2 (ja) * 2011-12-27 2014-07-16 株式会社ソニー・コンピュータエンタテインメント 画像処理システム、画像提供サーバ、情報処理装置、および画像処理方法
US9280956B2 (en) * 2012-11-29 2016-03-08 Qualcomm Incorporated Graphics memory load mask for graphics processing
USD885418S1 (en) * 2015-05-19 2020-05-26 Idea Connection Systems, Inc. Display screen or portion thereof with graphical user interface
IL226219A (en) * 2013-05-07 2016-10-31 Picscout (Israel) Ltd Efficient comparison of images for large groups of images
JP6232940B2 (ja) * 2013-11-01 2017-11-22 富士ゼロックス株式会社 画像情報処理装置及びプログラム
CN104035751B (zh) * 2014-06-20 2016-10-12 深圳市腾讯计算机系统有限公司 基于多图形处理器的数据并行处理方法及装置
US9821227B2 (en) 2014-08-13 2017-11-21 King.Com Ltd. Composing an image
USD770469S1 (en) * 2014-10-06 2016-11-01 National Comprehensive Cancer Network Display screen or portion thereof with icon
USD770468S1 (en) 2014-10-06 2016-11-01 National Comprehensive Cancer Network Display screen or portion thereof with graphical user interface for clinical practice guidelines
USD772889S1 (en) 2014-10-06 2016-11-29 National Comprehensive Cancer Network Display screen or portion thereof with graphical user interface for clinical practice guidelines
USD780768S1 (en) * 2014-10-06 2017-03-07 National Comprehensive Cancer Network Display screen or portion thereof with icon
KR102380979B1 (ko) * 2015-01-05 2022-04-01 삼성전자 주식회사 이미지의 메타데이터 관리 방법 및 장치
US9489710B2 (en) 2015-02-10 2016-11-08 Qualcomm Incorporated Hybrid rendering in graphics processing
US10410398B2 (en) * 2015-02-20 2019-09-10 Qualcomm Incorporated Systems and methods for reducing memory bandwidth using low quality tiles
RU2609076C2 (ru) * 2015-03-16 2017-01-30 Рамиль Ильдарович Хантимиров Способ и система интеллектуального управления распределением ресурсов в облачных вычислительных средах
US10244241B2 (en) * 2015-03-22 2019-03-26 Innova Plex, Inc. Pyramidal file structure and method of use thereof
GB2539509B (en) * 2015-06-19 2017-06-14 Advanced Risc Mach Ltd Method of and apparatus for processing graphics
CN105100826B (zh) * 2015-07-17 2018-11-23 小米科技有限责任公司 图片处理方法、装置及系统
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
US9990690B2 (en) * 2015-09-21 2018-06-05 Qualcomm Incorporated Efficient display processing with pre-fetching
CA3002339C (en) * 2015-10-17 2024-02-06 Arivis Ag Direct volume rendering in virtual and/or augmented reality
TWI610292B (zh) * 2015-11-19 2018-01-01 瑞鼎科技股份有限公司 驅動電路及其運作方法
BR102015032565B1 (pt) * 2015-12-22 2023-02-28 Universidade Estadual De Campinas - Unicamp Método de visualização interativa de uma estrutura de árvore maxtree e uso do mesmo
US10540007B2 (en) * 2016-03-04 2020-01-21 Rockwell Collins, Inc. Systems and methods for delivering imagery to head-worn display systems
US10157498B2 (en) * 2016-08-18 2018-12-18 Robert Bosch Gmbh System and method for procedurally generated object distribution in regions of a three-dimensional virtual environment
JP6702602B2 (ja) * 2016-08-25 2020-06-03 Necディスプレイソリューションズ株式会社 自己画像診断方法、自己画像診断プログラム、ディスプレイ装置、及び自己画像診断システム
JP6840506B2 (ja) * 2016-10-20 2021-03-10 キヤノン株式会社 画像処理装置、画像処理方法、プログラム
US11222397B2 (en) 2016-12-23 2022-01-11 Qualcomm Incorporated Foveated rendering in tiled architectures
CN106991143B (zh) * 2017-03-22 2019-07-19 苏州中科图新网络科技有限公司 多层级图像文件、生成方法及装置、读取方法及装置
RU2677573C2 (ru) 2017-04-05 2019-01-17 Общество С Ограниченной Ответственностью "Яндекс" Система и способ дополнения изображения стилизованными свойствами
US10885607B2 (en) 2017-06-01 2021-01-05 Qualcomm Incorporated Storage for foveated rendering
CN109388448B (zh) * 2017-08-09 2020-08-04 京东方科技集团股份有限公司 图像显示方法、显示系统以及计算机可读存储介质
GB2574361B (en) 2017-12-18 2021-03-24 Advanced Risc Mach Ltd Graphics Processing
US10726610B2 (en) 2018-08-29 2020-07-28 Arm Limited Efficient graphics processing using metadata
US11375178B2 (en) * 2019-03-04 2022-06-28 Dolby Laboratories Licensing Corporation Multi-resolution multi-view video rendering
US11049290B2 (en) 2019-03-21 2021-06-29 Adobe Inc. Generation of a sequence of textures for video delivery

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02289097A (ja) * 1989-02-14 1990-11-29 Intel Corp 画像表示データ処理装置
JPH07131658A (ja) * 1993-10-29 1995-05-19 Canon Inc 画像通信装置
JPH09325759A (ja) * 1995-11-22 1997-12-16 Nintendo Co Ltd 高速高効率3dグラフィックス及びデジタル音声信号処理を提供するコプロセッサを備える高性能低コストビデオゲームシステム
JP2003504921A (ja) * 1999-07-01 2003-02-04 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ウェーブレットに基づく画像の階層注視及び注視型符号化
JP2004348702A (ja) * 2002-09-06 2004-12-09 Sony Computer Entertainment Inc 画像処理方法、画像処理装置、および画像処理システム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2798168B2 (ja) 1993-01-27 1998-09-17 富士ゼロックス株式会社 画像符号化装置
JP3102369B2 (ja) * 1997-01-31 2000-10-23 富士通株式会社 データ処理装置
SG64486A1 (en) 1997-03-27 1999-04-27 Sony Corp Method and apparatus for information processing computer readable medium and authoring system
US6556713B2 (en) * 1997-07-31 2003-04-29 Canon Kabushiki Kaisha Image processing apparatus and method and storage medium
US6720971B1 (en) * 1998-05-29 2004-04-13 Canon Kabushiki Kaisha Image processing method and apparatus, and storage medium
US6229926B1 (en) * 1998-07-24 2001-05-08 Picsurf, Inc. Memory saving wavelet-like image transform system and method for digital camera and other memory conservative applications
CN1131637C (zh) * 2000-10-13 2003-12-17 北京算通数字技术研究中心有限公司 数据流索引文件生成及用该文件访问帧和切变镜头的方法
US7454069B2 (en) * 2002-11-20 2008-11-18 Ricoh Company, Ltd. Image processing apparatus, image compressing apparatus, image decompressing apparatus, image processing method, image compressing method, image decompressing method, information processing apparatus, information processing method, program and recording medium
US6990637B2 (en) * 2003-10-23 2006-01-24 Microsoft Corporation Graphical user interface for 3-dimensional view of a data collection based on an attribute of the data
JP5007228B2 (ja) * 2004-06-14 2012-08-22 プレコード,インコーポレイテッド 画像クリーンアップおよび前置符号化
EP1681656A1 (en) * 2005-01-18 2006-07-19 Oculus Info Inc. System and method for processing map data
DE102006018689A1 (de) 2006-04-13 2007-10-25 Seereal Technologies S.A. Verfahren zum Rendern und Generieren computergenerierter Videohologramme in Echtzeit
JP5215945B2 (ja) * 2008-08-12 2013-06-19 株式会社ソニー・コンピュータエンタテインメント 画像処理装置
JP4744623B2 (ja) * 2009-07-01 2011-08-10 シャープ株式会社 画像圧縮方法、画像圧縮装置、画像形成装置、コンピュータプログラム及び記録媒体

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02289097A (ja) * 1989-02-14 1990-11-29 Intel Corp 画像表示データ処理装置
JPH07131658A (ja) * 1993-10-29 1995-05-19 Canon Inc 画像通信装置
JPH09325759A (ja) * 1995-11-22 1997-12-16 Nintendo Co Ltd 高速高効率3dグラフィックス及びデジタル音声信号処理を提供するコプロセッサを備える高性能低コストビデオゲームシステム
JP2003504921A (ja) * 1999-07-01 2003-02-04 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ウェーブレットに基づく画像の階層注視及び注視型符号化
JP2004348702A (ja) * 2002-09-06 2004-12-09 Sony Computer Entertainment Inc 画像処理方法、画像処理装置、および画像処理システム

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130067502A1 (en) * 2011-09-09 2013-03-14 Microsoft Corporation Atlasing and Virtual Surfaces
US9324299B2 (en) * 2011-09-09 2016-04-26 Microsoft Technology Licensing, Llc. Atlasing and virtual surfaces
WO2013099076A1 (ja) * 2011-12-27 2013-07-04 株式会社ソニー・コンピュータエンタテインメント 動画圧縮装置、画像処理装置、動画圧縮方法、画像処理方法、および動画圧縮ファイルのデータ構造
JP2013135463A (ja) * 2011-12-27 2013-07-08 Sony Computer Entertainment Inc 動画圧縮装置、画像処理装置、動画圧縮方法、画像処理方法、および動画圧縮ファイルのデータ構造
US9693072B2 (en) 2011-12-27 2017-06-27 Sony Corporation Moving picture compression apparatus, image processing apparatus, moving picture compression method, image processing method, and data structure of moving picture compression file
JP2022024065A (ja) * 2015-12-12 2022-02-08 ダッソー システムズ マルチ解像度画像システム
JP7385640B2 (ja) 2015-12-12 2023-11-22 ダッソー システムズ マルチ解像度画像システム
CN114764843A (zh) * 2021-01-12 2022-07-19 四川大学 基于邻域块匹配的多孔介质图像超维重建方法
CN114764843B (zh) * 2021-01-12 2023-04-18 四川大学 基于邻域块匹配的多孔介质图像超维重建方法

Also Published As

Publication number Publication date
US20120268465A1 (en) 2012-10-25
RU2012121208A (ru) 2013-12-10
BR112012009893B1 (pt) 2021-02-02
BR112012009893A2 (pt) 2017-02-21
RU2519058C2 (ru) 2014-06-10
US8724914B2 (en) 2014-05-13
CN102667864B (zh) 2015-06-03
AU2010313045B2 (en) 2013-08-29
AU2010313045A1 (en) 2012-06-14
CN102667864A (zh) 2012-09-12

Similar Documents

Publication Publication Date Title
WO2011052117A1 (ja) 画像ファイル生成装置、画像処理装置、画像ファイル生成方法、画像処理方法、および画像ファイルのデータ構造
JP5368254B2 (ja) 画像ファイル生成装置、画像処理装置、画像ファイル生成方法、画像処理方法、および画像ファイルのデータ構造
JP5037574B2 (ja) 画像ファイル生成装置、画像処理装置、画像ファイル生成方法、および画像処理方法
JP5419822B2 (ja) 画像処理装置、画像表示装置、画像処理方法、および画像ファイルのデータ構造
RU2324229C2 (ru) Визуальный и пространственный графические интерфейсы
US9373308B2 (en) Multi-viewport display of multi-resolution hierarchical image
US8878869B2 (en) Image processing device and image processing method
JP4076502B2 (ja) ゾーン・レンダリングのための効率的なグラフィックス状態管理
JP5296656B2 (ja) 画像処理装置および画像処理方法
US5986661A (en) Graphics output system with bounded updating
US9047680B2 (en) Information processing apparatus, information processing method, and data structure of content files
US11210847B2 (en) Graphics processing systems
CN113495933A (zh) 一种矢量瓦片显示方法及系统
JP2010085779A (ja) 画像処理装置および画像処理方法
WO2013005371A1 (ja) 画像処理装置、画像データ生成装置、画像処理方法、画像データ生成方法、および画像ファイルのデータ構造
Zhang et al. Interactive rendering for large-scale mesh based on MapReduce
JP2010134841A (ja) 構造化文書処理方法、構造化文書処理装置及びプログラム
JP2012014184A (ja) 画像処理装置、画像処理方法、および画像のデータ構造

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 201080045762.3

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10826257

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 3146/CHENP/2012

Country of ref document: IN

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2010313045

Country of ref document: AU

WWE Wipo information: entry into national phase

Ref document number: 2012121208

Country of ref document: RU

ENP Entry into the national phase

Ref document number: 2010313045

Country of ref document: AU

Date of ref document: 20100729

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 13502409

Country of ref document: US

122 Ep: pct application non-entry in european phase

Ref document number: 10826257

Country of ref document: EP

Kind code of ref document: A1

REG Reference to national code

Ref country code: BR

Ref legal event code: B01A

Ref document number: 112012009893

Country of ref document: BR

ENP Entry into the national phase

Ref document number: 112012009893

Country of ref document: BR

Kind code of ref document: A2

Effective date: 20120426