WO2021053948A1 - 画像処理装置と画像処理方法およびプログラム - Google Patents

画像処理装置と画像処理方法およびプログラム Download PDF

Info

Publication number
WO2021053948A1
WO2021053948A1 PCT/JP2020/027460 JP2020027460W WO2021053948A1 WO 2021053948 A1 WO2021053948 A1 WO 2021053948A1 JP 2020027460 W JP2020027460 W JP 2020027460W WO 2021053948 A1 WO2021053948 A1 WO 2021053948A1
Authority
WO
WIPO (PCT)
Prior art keywords
block
pixel data
data
unit
pixels
Prior art date
Application number
PCT/JP2020/027460
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
Application filed by ソニー株式会社 filed Critical ソニー株式会社
Priority to JP2021546524A priority Critical patent/JPWO2021053948A1/ja
Priority to US17/753,780 priority patent/US20220377271A1/en
Publication of WO2021053948A1 publication Critical patent/WO2021053948A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N25/00Circuitry of solid-state image sensors [SSIS]; Control thereof
    • H04N25/70SSIS architectures; Circuits associated therewith
    • H04N25/71Charge-coupled device [CCD] sensors; Charge-transfer registers specially adapted for CCD sensors
    • H04N25/75Circuitry for providing, modifying or processing image signals from the pixel array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N25/00Circuitry of solid-state image sensors [SSIS]; Control thereof
    • H04N25/70SSIS architectures; Circuits associated therewith
    • H04N25/76Addressed sensors, e.g. MOS or CMOS sensors
    • H04N25/77Pixel circuitry, e.g. memories, A/D converters, pixel amplifiers, shared circuits or shared components
    • H04N25/771Pixel circuitry, e.g. memories, A/D converters, pixel amplifiers, shared circuits or shared components comprising storage means other than floating diffusion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N25/00Circuitry of solid-state image sensors [SSIS]; Control thereof
    • H04N25/70SSIS architectures; Circuits associated therewith
    • H04N25/76Addressed sensors, e.g. MOS or CMOS sensors
    • H04N25/77Pixel circuitry, e.g. memories, A/D converters, pixel amplifiers, shared circuits or shared components
    • H04N25/772Pixel circuitry, e.g. memories, A/D converters, pixel amplifiers, shared circuits or shared components comprising A/D, V/T, V/F, I/T or I/F converters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Definitions

  • This technology makes it possible to improve the processing speed of image processing with respect to image processing devices, image processing methods and programs.
  • Patent Document 1 proposes to improve the processing speed by using cache technology.
  • the purpose of this technology is to provide an image processing device, an image processing method, and a program that can improve the processing speed of image processing.
  • the first aspect of this technology is A first block having a plurality of lines of pixel data having a predetermined number of pixels in the line direction, and a plurality of lines including a part of the lines of the first block containing pixel data having a predetermined number of pixels following the first block in the line direction.
  • a third block having a second block to be shared and a third block having a plurality of lines including a line different from the line included in the second block in the first block having pixel data of a predetermined number of pixels continuing in the line direction with respect to the first block.
  • the image processing apparatus includes a memory control unit that reads pixel data of the first, second, and third blocks including pixel data of peripheral pixels used for generating pixel data of the interpolation position from the memory unit.
  • the memory unit includes a first block having a plurality of lines of pixel data having a predetermined number of pixels in the line direction, and pixel data having a predetermined number of pixels following the first block in the line direction as one of the first blocks.
  • a second block having a plurality of lines including a part line, and a plurality of lines including a line different from the line included in the second block in the first block, which contains pixel data of a predetermined number of pixels continuing in the line direction with respect to the first block.
  • the input image data is divided and stored in the third block to be shared.
  • the predetermined number of pixels in the line direction is, for example, equal to or larger than the number of pixels in the line direction of the peripheral pixels used in the interpolation processing, and the first block includes all the lines of the peripheral pixels used in the interpolation processing.
  • the memory unit is provided with three areas, and the input image data divided into blocks is stored in each area.
  • the memory control unit converts the read address generation unit that generates the read address for reading the pixel data of the peripheral pixels used for generating the pixel data of the interpolation position and the read address generated by the read address generation unit into block unit addresses. It has a read address conversion processing unit that converts to. Further, the memory control unit has a read image data processing unit that selects pixel data of peripheral pixels from the pixel data of the first, second, and third blocks read from the memory unit and outputs the pixel data to the interpolation processing unit. May be good.
  • the memory control unit reads the pixel data of the first, second, and third blocks including the pixel data of the peripheral pixels from the memory unit using the address obtained by the read address conversion processing unit.
  • the pixel data of each block is read from different banks by burst transfer.
  • the interpolation position is a position where the pixel data of the peripheral pixels is included in only one of the first, second, and third blocks
  • the memory control unit includes the pixel data of the block including the pixel data of the peripheral pixels.
  • the interpolation position is a position where the pixel data of the peripheral pixels is included in the two blocks in the first, second, and third blocks, the pixel data of the two blocks including the pixel data of the peripheral pixels is input. It may be read from the memory unit.
  • the memory control unit has a written image data processing unit that divides the input image data into data of the first block, a second block, and a third block, and an input image data that is divided into blocks by the writing image processing unit. May be configured to have a write address generation unit that generates a write address for writing the data to the memory unit in block units.
  • the image processing device includes an arithmetic processing unit that calculates an interpolation position that is a pixel position before image conversion corresponding to a pixel position after image conversion, and pixel data of peripheral pixels read from the memory unit by a memory control unit. May be further provided with an interpolation processing unit that performs interpolation processing using the above and generates pixel data at the interpolation position. Further, the data amount of the first, second and third blocks may be equal to the data width of the memory unit.
  • the second aspect of this technology is A first block having a plurality of lines of pixel data having a predetermined number of pixels in the line direction, and a plurality of lines including a part of the lines of the first block containing pixel data having a predetermined number of pixels following the first block in the line direction.
  • a third block having a second block to be shared and a third block having a plurality of lines including a line different from the line included in the second block in the first block, which has pixel data of a predetermined number of pixels continuing in the line direction with respect to the first block.
  • the memory control unit reads out the pixel data of the first, second, and third blocks including the pixel data of the peripheral pixels used for generating the pixel data of the interpolation position from the memory unit in which the input image data is divided and stored in the block.
  • the third aspect of this technology is A program that runs image conversion on a computer
  • the procedure for calculating the interpolation position which is the pixel position before image conversion, corresponding to the pixel position after image conversion, and
  • a first block having a plurality of lines of pixel data having a predetermined number of pixels in the line direction, and a plurality of lines including a part of the lines of the first block containing pixel data having a predetermined number of pixels following the first block in the line direction.
  • the computer executes a procedure of performing interpolation processing using pixel data of peripheral pixels read from the memory unit and generating pixel data of the interpolation position.
  • the program of the present technology provides, for example, a storage medium, a communication medium, for example, a storage medium such as an optical disk, a magnetic disk, or a semiconductor memory, which is provided in a computer-readable format to a general-purpose computer capable of executing various program codes. It is a program that can be provided by a medium or a communication medium such as a network. By providing such a program in a computer-readable format, processing according to the program can be realized on the computer.
  • the image processing device of the present technology sequentially stores the image data before image processing in the frame memory, and reads out the image data stored in the frame memory for image conversion, for example, enlargement / reduction, movement, deformation of the image, etc.
  • the image data after image conversion is generated accordingly.
  • FIG. 1 illustrates the configuration of an image processing device.
  • the image processing device 10 includes a memory buffer unit 11, a memory control unit 12, a memory unit 13, an interpolation processing unit 14, and an arithmetic processing unit 15.
  • Each unit constituting the image processing device 10 may be provided integrally, and the interpolation processing unit 14 and the arithmetic processing unit 15 may be provided separately from the memory control unit 12 and the memory unit 13.
  • the memory buffer unit 11 is configured by using a line memory or a frame memory.
  • the memory buffer unit 11 temporarily stores the input image data DVin in the line memory or the frame memory. Further, the input image data DVin temporarily stored in the memory buffer unit 11 is read out by the memory control unit 12 and stored in the memory unit 13.
  • the memory control unit 12 acquires image data from the memory buffer unit 11 and stores it in the memory unit 13. Further, the memory control unit 12 reads the pixel data of the peripheral pixels necessary for generating the pixel data of the interpolation position notified from the arithmetic processing unit 15 from the memory unit 13 and outputs the pixel data to the interpolation processing unit 14.
  • the memory control unit 12 includes a write image data processing unit 121, a write address generation unit 122, a read address generation unit 123, a read address conversion processing unit 124, a read image data processing unit 125, and an access control unit 126. ..
  • the written image data processing unit 121 converts the image data of the memory buffer unit 11 into data of a processing unit stored in the memory unit 13.
  • the written image data processing unit 121 has a first block having a plurality of lines of pixel data having a predetermined number of pixels in the line direction, and a pixel data having a predetermined number of pixels following the first block in the line direction as one of the first blocks.
  • the write address generation unit 122 generates a write address for writing the data of the processing unit output from the write image data processing unit 121 to the memory unit 13.
  • the write address generation unit 122 generates a write address for writing the block unit data output from the write image data processing unit 121 to the memory unit 13 in block units.
  • the read address generation unit 123 generates a read address for reading the pixel data of the peripheral pixels used for generating the pixel data of the interpolation position.
  • the read address conversion processing unit 124 converts the read address generated by the read address generation unit 123 into the data address of the processing unit, that is, the address of the block including the pixel data of the peripheral pixels indicated by the read address.
  • the read image data processing unit 125 selects pixel data of peripheral pixels used for interpolation processing from the image data read from the memory unit 13 and outputs the pixel data to the interpolation processing unit 14.
  • the access control unit 126 buffers image data, address data, etc., and mediates / controls access when accessing the memory unit 13.
  • the memory unit 13 is configured by using DRAM (Dynamic Random Access Memory) or SRAM (Static Random Access Memory).
  • DRAM Dynamic Random Access Memory
  • SRAM Static Random Access Memory
  • DRAM Dynamic Random Access Memory
  • the same data is stored in a plurality of banks in order to enable random access with little delay, and the banks are switched when reading desired data. That is, the input image data converted into the data in the block unit is stored in the three banks, and the pixel data of the first, second, and third blocks is read out from different banks in the block unit.
  • SRAM Static Random Access Memory
  • the interpolation processing unit 14 performs interpolation processing based on the pixel data of the peripheral pixels read from the memory unit 13 and the interpolation position notified from the arithmetic processing unit 15, and generates the pixel data of the interpolation position.
  • the arithmetic processing unit 15 calculates which position the pixel position after image conversion is before image conversion, and outputs the calculated interpolated position, which is the pixel position, to the memory control unit 12, thereby peripheral to the interpolated position.
  • the block data including the pixel data of the pixels is read from the memory unit 13. Further, the arithmetic processing unit 15 outputs the interpolation position to the interpolation processing unit 14 to generate pixel data of the interpolation position. Further, the arithmetic processing unit 15 calculates the interpolation position for each pixel position after image conversion and outputs the interpolation position to the memory control unit 12 and the interpolation processing unit 14. Therefore, pixel data is generated for each pixel position after image conversion, and the image data DVout after image conversion is output from the interpolation processing unit 14.
  • FIG. 2 illustrates the relationship between the peripheral pixels and the block in which the input image data is divided with respect to the interpolation position.
  • a pixel included in the pixel area ARM of "2 lines x 4 pixels" based on the interpolation position MP (pixel position indicated by a white circle) is defined as a peripheral pixel.
  • the block size is set so that the number of pixels in the line direction is equal to or larger than the number of pixels in the line direction of the peripheral pixels, and the first block includes all the lines of the peripheral pixels used for the interpolation processing. For example, the block size of the first block.
  • the block size of the second block having a predetermined number of pixel data continuing in the line direction with respect to the first block for a plurality of lines including a part of the lines of the first block is, for example, "2 lines x 4 pixels”.
  • the block size of the third block which has a plurality of lines including a line different from the line included in the second block in the first block, has pixel data of a predetermined number of pixels continuing in the line direction with respect to the first block. 2 lines x 4 pixels ".
  • the first block BLK1 has pixel data “(y, x-4), (y, x-3), (y, x-3), (y, x-3), (y, x-3), y, x-2), (y, x-1), (y + 1, x-4), (y + 1, x-3), (y + 1, x-2), (y + 1, x-1) " To.
  • the second block BLK2 has four pixels whose line direction follows the first block BLK1 and pixel data "(y-1, x), (y-1) for two lines including one line of the first block BLK1. , X + 1), (y-1, x + 2), (y-1, x + 3), (y, x), (y, x + 1), (y, x + 2), (y, x + 3) ”.
  • the third block BLK3 has pixel data "(y + 1, ,) for two lines including four pixels whose line direction follows the first block BLK1 and a line different from the line included in the second block BLK2 in the first block BLK1.
  • x pixel data "(y + 1, ,) for two lines including four pixels whose line direction follows the first block BLK1 and a line different from the line included in the second block BLK2 in the first block BLK1.
  • x (y + 1, x + 1), (y + 1, x + 2), (y + 1, x + 3), (y + 2, x), (y + 2, x + 1), (y + 2, x + 2), (y + 2, x + 3) ”.
  • the first block BLK1 has four pixel in the line direction and pixel data for two lines “(y, x + 4), (y, x + 5), (y, x + 6), (Y, x + 7), (y + 1, x + 4), (y + 1, x + 5), (y + 1, x + 6), (y + 1, x + 7) ”.
  • the second block BLK2 has four pixels whose line direction follows the first block BLK1 and pixel data "(y-1, x), (y-1) for two lines including one line of the first block BLK1. , X + 1), (y-1, x + 2), (y-1, x + 3), (y, x), (y, x + 1), (y, x + 2), (y, x + 3) ”.
  • the third block BLK3 has pixel data "(y + 1, ,) for two lines including four pixels whose line direction follows the first block BLK1 and a line different from the line included in the second block BLK2 in the first block BLK1.
  • x pixel data "(y + 1, ,) for two lines including four pixels whose line direction follows the first block BLK1 and a line different from the line included in the second block BLK2 in the first block BLK1.
  • x (y + 1, x + 1), (y + 1, x + 2), (y + 1, x + 3), (y + 2, x), (y + 2, x + 1), (y + 2, x + 2), (y + 2, x + 3) ”.
  • the data of the three blocks BLK1, BLK2, and BLK3 are read out to generate the pixel data of the interpolation position MP.
  • the pixel data of the pixel region ARm of the pixel can be acquired.
  • the block BLKa has pixel data "(y-1, x-4), (y-1, x-3), (y-1, x-2), (y-1, x-1), ( y, x-4), (y, x-3), (y, x-2), (y, x-1) ”.
  • the block BLKb has pixel data "(y-1, x), (y-1, x + 1), (y-1, x + 2), (y-1, x + 3), (y, x), (y, x + 1). ), (Y, x + 2), (y, x + 3) ”.
  • the block BLKc has pixel data "(y + 1, x-4), (y + 1, x-3), (y + 1, x-2), (y + 1, x-1), (y + 2, x-4), (y + 2).
  • the block BLKd has pixels“ (y + 1, x), (y + 1, x + 1), (y + 1, x + 2), (Y + 1, x + 3), (y + 2, x), (y + 2, x + 1), (y + 2, x + 2), (y + 2, x + 3) ”. Therefore, by reading the data of the four blocks BLKa, BLKb, BLKc, and BLKd, the pixel data of the pixel region ARm of the peripheral pixels used for generating the pixel data of the interpolation position MP can be acquired.
  • the memory control unit 12 divides the input image data stored in the memory buffer unit 11 into a first block, a second block, and a third block as shown in FIG. 2A or FIG. 2B. Then, it is stored in the memory unit 13.
  • the memory control unit 12 reads data of three blocks from the memory unit 13 with reference to the interpolation position calculated by the arithmetic processing unit 15, and generates pixel data of the interpolation position by interpolation processing using the read data. To do.
  • the memory control unit 12 uses burst transfer when writing and reading image data to the memory unit 13 in block units.
  • the memory control unit 12 stores the data for each block in the three banks of the memory unit 13 and reads the pixel data of different blocks from the three banks so that the data can be read at high speed.
  • the data width of the input image data is 32 bits and the data width of the data writing and data reading of the memory unit 13 is 256 bits, eight pixel data can be stored in one address of the memory unit 13. That is, if the amount of data in one block and the data width of the memory unit 13 are equalized, one address in the memory unit 13 corresponds to one address in the block, and data can be easily written or read in block units. Can be done.
  • FIG. 3 is a flowchart illustrating the operation of the image processing device of the present technology.
  • the image processing apparatus performs image data writing processing.
  • the memory control unit 12 of the image processing device 10 has a first block having a plurality of lines of pixel data having a predetermined number of pixels in the line direction, and pixels having a predetermined number of pixels following the first block in the line direction.
  • a second block having a plurality of lines including a part of the lines of the first block, and a line including pixel data of a predetermined number of pixels continuing in the line direction with respect to the first block in the second block in the first block. It is divided into a third block having a plurality of lines including lines different from the above, stored in the memory unit 13, and the process proceeds to step ST2.
  • step ST2 the image processing device sets the processing target pixel.
  • the arithmetic processing unit 15 of the image processing device 10 sets the image-converted pixel that generates the pixel data as the processing target pixel, and proceeds to step ST3.
  • step ST3 the image processing device performs interpolation position calculation processing.
  • the arithmetic processing unit 15 of the image processing apparatus 10 calculates the pixel position before image conversion corresponding to the processing target pixel set in step ST2 as an interpolation position, and proceeds to step ST4.
  • step ST4 the image processing device performs block reading processing.
  • the memory control unit 12 of the image processing device 10 reads the block data including the pixel data of the peripheral pixels used for generating the pixel data of the interpolated position calculated in step ST3 from the memory unit 13 and proceeds to step ST5.
  • step ST5 the image processing device performs interpolation processing.
  • the interpolation processing unit 14 of the image processing apparatus 10 performs interpolation processing using the pixel data of the peripheral pixels used for generating the pixel data of the interpolation position from the block data read in step ST4, so that the pixels of the pixels to be processed Data is generated and the process proceeds to step ST6.
  • step ST6 the image processing apparatus determines whether or not the setting of the pixel to be processed has been completed. If there is an image that has not been set as the processing target pixel in the image after image conversion, the arithmetic processing unit 15 of the image processing device 10 proceeds to step ST7, and each pixel after image conversion is set as the processing target pixel and the pixel. If data has been generated, the process ends.
  • step ST7 the image processing device updates the processing target pixel.
  • the arithmetic processing unit 15 of the image processing device 10 sets a pixel that has not been set as a processing target pixel as a new processing target pixel, and returns to step ST3.
  • FIG. 6 shows a specific example of the input image data and the block.
  • the block size is "2 lines x 4 pixels".
  • step ST11 of FIG. 4 the memory control unit initializes the address.
  • step ST12 the memory control unit sets the flag JPV.
  • step ST13 the memory control unit acquires the pixel data of the addresses PH to PH + 3 in the address PV.
  • the memory control unit 12 acquires pixel data of four pixels of addresses (PV, PH), (PV, PH + 1), ..., (PV, PH + 3) from the memory buffer unit 11 and proceeds to step ST14.
  • step ST14 the memory control unit calculates the address BX.
  • "INT" indicates an integer part of the division result.
  • step ST15 the memory control unit sets the flag JBX.
  • step ST19 the memory control unit 12 determines the block data.
  • the memory control unit 12 has "(PV, PH), (PV, PH + 1), ..., (PV, PH + 3)" and already acquired “(PV-1, PH), (PV-1, PH + 1)". ), ..., (PV-1, PH + 3) ”as image data of the block (BY, BX), and the process proceeds to step ST20.
  • step ST20 the memory control unit performs a block (BY, BX) writing process.
  • the memory control unit 12 records the image data of the blocks (BY, BX) in the three banks of the memory unit 13 by burst transfer, and proceeds to step ST21.
  • step ST21 the memory control unit determines whether all the acquisition of the pixel data of the address PV has been completed. The memory control unit proceeds to step ST22 if the acquisition of the pixel data of the address PV is not completed, and proceeds to step ST23 if all the acquisitions are completed.
  • step ST22 the memory control unit updates the address PH.
  • step ST23 the memory control unit determines whether the writing of one frame is completed.
  • the memory control unit proceeds to step ST24 in FIG. 5 when the address PV does not indicate the last position (final line) in the vertical direction, and when the address PV indicates the last position (final line) in the vertical direction. Ends the writing process of the image of one frame.
  • step ST25 the memory control unit updates the address PV.
  • step ST26 the memory control unit sets the flag JPV.
  • step ST28 the memory control unit updates the address BY.
  • the pixel data of the addresses (1,0) (1,1) (1,2) (1,3) is the address (0,0).
  • ) (0,1) (0,2) (0,3) are stored in the memory unit 13 as block (0,0) data together with the pixel data.
  • the pixel data of the addresses (1,8) (1,9) (1,10) (1,11) is the pixels of the addresses (0,8) (0,9) (0,10) (0,11). Together with the data, it is stored in the memory unit 13 as block (0,2) data.
  • the pixel data of the addresses (2,4) (2,5) (2,6) (2,7) is the address (1,4).
  • (1,5) (1,6) (1,7) are stored in the memory unit 13 as block (1,1) data together with the pixel data.
  • the pixel data of the addresses (2,8) (2,9) (2,10) (2,11) is the pixels of the addresses (1,8) (1,9) (1,10) (1,11). Together with the data, it is stored in the memory unit 13 as block (1,3) data.
  • the pixel data of the peripheral pixels used for generating the pixel data at the interpolation position can be acquired by reading the pixel data of the three blocks.
  • the writing process of the input image data can be performed at high speed. Further, by storing the block data in the three banks, it is possible to efficiently read out the block including the pixel data used for the pixel data interpolation processing as described later.
  • Image data reading process Next, the process of reading the image data from the memory unit 13 will be described.
  • the block data including the pixel data of the peripheral pixels required for generating the pixel data of the interpolation position calculated by the interpolation position calculation process is read from the memory unit 13.
  • FIG. 7 is a flowchart illustrating the image data reading process.
  • the block size is "2 lines x 4 pixels", and the size of the pixel area ARm of the peripheral pixels is also “2 lines x 4 pixels”.
  • step ST41 the memory control unit acquires the interpolation position (my, mx).
  • the memory control unit 12 acquires the interpolation position (my, mx) calculated by the arithmetic processing unit 15 and proceeds to step ST42.
  • step ST42 the memory control unit sets the interpolation target address (PMV, PMH).
  • step ST44 the memory control unit sets the flag JPMV.
  • step ST46 the memory control unit calculates the block address BX.
  • step ST47 the memory control unit sets the flag JBX.
  • step ST49 the memory control unit sets the address in the first block pattern.
  • the memory control unit 12 sets the addresses (BY1, BX1) (BY2, BX2) (BY3, BX3) of the three blocks with the pattern of the three blocks to be read as the first block pattern.
  • FIG. 8 shows the addresses of the three blocks.
  • the memory control unit 12 performs the operations of the equations (1) to (6) and sets the addresses (BY1, BX1) (BY2, BX2) (BY3, BX3) of the three blocks shown in (a) of FIG. To step ST56.
  • BX1 INT (PSH / 4) ⁇ ⁇ ⁇ (1)
  • BY1 INT (PMV / 2) ⁇ ⁇ ⁇ (2)
  • BX2 (INT (PSH / 4)) + 1 ...
  • BY2 INT (PMV / 2) ⁇ ⁇ ⁇ (4)
  • BX3 (INT (PSH / 4)) + 1 ...
  • BY3 (INT (PMV / 2)) + 1 ... (6)
  • step ST50 the memory control unit sets the address in the second block pattern.
  • the memory control unit 12 sets the addresses (BY1, BX1) (BY2, BX2) (BY3, BX3) of the three blocks, using the pattern of the three blocks to be read as the second block pattern.
  • the memory control unit 12 performs the operations of the equations (7) to (12) and sets the addresses (BY1, BX1) (BY2, BX2) (BY3, BX3) of the three blocks shown in (b) of FIG. To step ST56.
  • BX1 (INT (PSH / 4)) + 1 ... (7)
  • BY1 INT (PMV / 2) ⁇ ⁇ ⁇ (8)
  • BX2 INT (PSH / 4) ⁇ ⁇ ⁇ (9)
  • BY2 INT (PMV / 2) ⁇ ⁇ ⁇ (10)
  • BX3 INT (PSH / 4) ... (11)
  • BY3 (INT (PMV / 2)) + 1 ... (12)
  • the memory control unit calculates the block address BX.
  • step ST52 the memory control unit sets the flag JBX.
  • step ST54 the memory control unit sets the address in the third block pattern.
  • the memory control unit 12 sets the addresses (BY1, BX1) (BY2, BX2) (BY3, BX3) of the three blocks, using the pattern of the three blocks to be read as the third block pattern.
  • the memory control unit 12 performs the operations of the equations (13) to (18) and sets the addresses (BY1, BX1) (BY2, BX2) (BY3, BX3) of the three blocks shown in (c) of FIG. To step ST56.
  • BX1 (INT (PSH / 4)) + 1 ... (13)
  • BY1 (INT (PMV / 2)) + 1 ... (14)
  • BX2 INT (PSH / 4) ... (15)
  • BY2 INT (PMV / 2) ⁇ ⁇ ⁇ (16)
  • BX3 INT (PSH / 4) ... (17)
  • BY3 (INT (PMV / 2)) + 1 ... (18)
  • step ST55 the memory control unit sets the address in the 4th block pattern.
  • the memory control unit 12 sets the addresses (BY1, BX1) (BY2, BX2) (BY3, BX3) of the three blocks, using the pattern of the three blocks to be read as the fourth block pattern.
  • the memory control unit 12 performs the operations of the equations (19) to (24) and sets the addresses (BY1, BX1) (BY2, BX2) (BY3, BX3) of the three blocks shown in (d) of FIG. To step ST56.
  • the memory control unit performs a data read process of 3 blocks.
  • the memory control unit 12 reads, for example, the pixel data of the first block, which is the address (BY1, BX1), from the first bank of the memory unit 13. Further, the memory control unit 12 reads the pixel data of the second block of the address (BY2, BX2) from the second bank of the memory unit 13, and the pixel data of the third block of the address (BY3, BX3) from the third bank. Is read.
  • FIG. 9 illustrates the relationship between the interpolation position for generating pixel data and the block from which the data is read. In FIG. 9, the blocks are displayed with the line positions aligned.
  • the data of the blocks (0,0) (0,1) (1,1) is used in the first block pattern.
  • the data of the blocks (0,1) (1,1) (0,2) is read in the second block pattern.
  • the pixel data of the interpolation position MP3 is generated, the data of the blocks (0,0) (1,0) (1,1) is used in the third block pattern.
  • the data of the blocks (1,1) (0,2) (1,2) is read in the fourth block pattern.
  • the memory control unit 12 selects pixel data to be used for interpolation processing of pixel data from the data read from the memory unit 13 and outputs the pixel data to the interpolation processing unit 14. For example, when the pixel data of the interpolation position MP1 is generated, the address (0,0,) in the pixel area ARm of the peripheral pixels is obtained from the pixel data of the read block (0,0) (0,1) (1,1). 2) Select the pixel data of (0,3) (0,4) (0,5) (1,2) (1,3) (1,4) (1,5) and output to the interpolation processing unit 14. To do.
  • the address (1) in the pixel area ARm of the peripheral pixels is used from the pixel data of the read blocks (1,1) (0,2) (1,2).
  • Interpolation processing unit 14 by selecting the pixel data of 1,6) (1,7) (1,8) (1,9) (2,6) (2,7) (2,8) (2,9) Output to.
  • the pixel data of 3 blocks is read out with the block pattern corresponding to the pixel position for generating the pixel data, the pixel data used for the interpolation processing is selected from the read pixel data, and the pixel data is output to the interpolation processing unit 14.
  • image processing can be performed more efficiently.
  • the delay time is large when the ROW address is updated and the data is read. Therefore, the data of three blocks is stored in one bank and the ROW address is updated sequentially. When the data of the three blocks is read, it takes time to read the data from the memory unit 13. However, by reading the data of different blocks from the three banks as in the present technology, it becomes possible to read the data from the memory unit 13 at high speed.
  • the memory access bandwidth efficiency of writing and reading can be calculated based on the following formula.
  • the memory clock frequency is “Fmem”
  • the memory data width is “Dmem”
  • the memory write efficiency coefficient is “C (mem (w))”
  • the memory read efficiency coefficient is "C (mem (r))”
  • the image is "Fvid”
  • the image data data width is “Dvid”
  • the image data write efficiency coefficient is "C (vid (w))”
  • the image data read efficiency coefficient is "C (vid (r)”. )) ”.
  • the write bandwidth write bandwidth efficiency "Etri (w)” is calculated based on the equation (25), and the read bandwidth efficiency "Etri (r)” is calculated based on the equation (26). Will be done.
  • the write bandwidth efficiency [1 /%]: Esqr (w) of the conventional interpolation point tetragonal extraction method is calculated based on the equation (27), and the read bandwidth efficiency [1 /%]: Esqr (r). Is calculated based on the equation (28).
  • the read band efficiency is better than that of the interpolation point four-sided extraction method, so that image processing can be performed efficiently. ..
  • the interpolation position is a position in which the pixel data of the peripheral pixels is included in the two blocks in the first, second, and third blocks
  • the pixel data of the two blocks including the pixel data of the peripheral pixels is stored in the memory unit. Read from. Interpolation processing is possible by reading out the pixel data in this way.
  • FIG. 10 illustrates a case where interpolation processing is possible by reading 1 block or 2 blocks of data.
  • the addresses (0,8), (0,9), (0,10), (0,11), (1,8), ( The pixel data of 1,9), (1,10), and (1,11) are stored as the data of one block (0,2).
  • the addresses (1,0), (1,1), (1,2), (1,3), (2,0) which are used for the interpolation processing,
  • the pixel data of (2,1), (2,2), and (2,3) are stored in two blocks (0,0) and (1,0).
  • the memory unit 13 can further be used. It becomes possible to read out the data of the above more efficiently.
  • FIGS. 4 and 5 exemplify the operation when the image data is stored in the memory unit 13 as shown in FIG. 6, and the processing is performed according to the number of pixels or the block size of the peripheral pixels used for the interpolation processing. May be changed.
  • FIG. 7 illustrates an operation when reading out the stored image data as shown in FIG. 8, and the block size of the image data stored in the memory unit 13 and peripheral pixels used for interpolation processing. The processing may be changed according to the number of pixels of.
  • the memory unit 13 is configured by using the DRAM
  • the memory used in the memory unit 13 is not limited to the DRAM, and for example, the SRAM may be used.
  • the memory access band can be reduced, the pixel data of the interpolation points to be read can be increased, so that the number of interpolation points in the image transformation processing can be increased to improve the image quality. Further, since the memory access band can be reduced, the number of used memories can be reduced and the memory having low performance can be used, so that the cost can be reduced. Also, regarding devices such as CPUs, GPUs, FPGAs, and ASICs that implement the algorithms of this technology, the number and performance of the devices can be reduced depending on the number and performance of the connected memory, so cost reduction is possible. Become.
  • DME Digital Multi Effects
  • the series of processes described in the specification can be executed by hardware, software, or a composite configuration of both.
  • the program that records the processing sequence is installed in the memory in the computer embedded in the dedicated hardware and executed.
  • the program can be installed and executed on a general-purpose computer capable of executing various processes.
  • the program can be recorded in advance on a hard disk as a recording medium, an SSD (Solid State Drive), or a ROM (Read Only Memory).
  • the program is a flexible disk, CD-ROM (Compact Disc Read Only Memory), MO (Magneto optical) disk, DVD (Digital Versatile Disc), BD (Blu-Ray Disc (registered trademark)), magnetic disk, semiconductor memory card. It can be temporarily or permanently stored (recorded) on a removable recording medium such as an optical disc.
  • a removable recording medium can be provided as so-called package software.
  • the program may be transferred from the download site to the computer wirelessly or by wire via a network such as LAN (Local Area Network) or the Internet.
  • the computer can receive the program transferred in this way and install it on a recording medium such as a built-in hard disk.
  • the image processing device of the present technology can have the following configurations.
  • the memory unit stores the input image data divided into the blocks in three areas.
  • the memory control unit is A read address generation unit that generates a read address for reading pixel data of peripheral pixels used for generating pixel data at the interpolation position, and a read address generation unit. It has a read address conversion processing unit that converts the read address generated by the read address generation unit into an address in block units.
  • the memory control unit reads the pixel data of the first, second, and third blocks including the pixel data of the peripheral pixels from the memory unit using the address obtained by the read address conversion processing unit (the memory control unit reads the pixel data of the first, second, and third blocks including the pixel data of the peripheral pixels from the memory unit.
  • the image processing apparatus according to any one of 1) to (3).
  • the memory control unit is (1) to (4) include a read image data processing unit that selects pixel data of the peripheral pixels from the pixel data of the first, second, and third blocks read from the memory unit and outputs the pixel data to the interpolation processing unit.
  • the image processing apparatus according to any one of. (6)
  • the memory control unit is A writing image data processing unit that divides the input image data into data of the first block, the second block, and the third block, and Any of (1) to (5) having a write address generation unit for generating a write address for writing the input image data, which is set as a block unit in the write image data processing unit, to the memory unit in block units.
  • the memory control unit includes the pixel data of the peripheral pixels when the interpolation position is a position that includes the pixel data of the peripheral pixels only in any of the first, second, and third blocks.
  • the pixel data of the block is read from the memory unit, and when the interpolation position is a position where the pixel data of the peripheral pixels is included in the two blocks in the first, second and third blocks, the pixel data of the peripheral pixels is included.
  • the image processing apparatus according to any one of (1) to (6), which reads pixel data of two blocks from the memory unit.
  • An arithmetic processing unit that calculates the interpolation position, which is the pixel position before image conversion corresponding to the pixel position after image conversion.
  • an interpolation processing unit that performs interpolation processing using pixel data of peripheral pixels read from the memory unit by the memory control unit and generates pixel data of the interpolation position calculated by the arithmetic processing unit.
  • the image processing apparatus according to any one of 1) to (7).
  • the predetermined number of pixels in the line direction is equal to or greater than the number of pixels in the line direction of peripheral pixels used in the interpolation process, and the first block includes all lines of peripheral pixels used in the interpolation process (8).
  • Image processing device (10) The image processing apparatus according to any one of (1) to (9), wherein the amount of data in the first, second and third blocks is equal to the data width of the memory unit.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Processing (AREA)

Abstract

メモリ制御部12は、ライン方向に所定画素数の画素データを複数ライン分有する第1ブロックと、第1ブロックに対してライン方向に続く所定画素数の画素データを第1ブロックの一部のラインを含む複数ライン分有する第2ブロックと、ライン方向に続く所定画素数の画素データを第1ブロックにおける第2ブロックに含まれたラインと異なるラインを含む複数ライン分有する第3ブロックに、入力画像データを分割してメモリ部13に記憶させる。演算処理部15は、画像変換後の画素位置に対応する画像変換前の位置である補間位置を算出して、メモリ制御部12は、補間位置の周辺画素の画素データを含む第1乃至第3ブロックの画素データをメモリ部13から読み出して、補間処理部14は、読み出した周辺画素を用いた補間処理により、補間位置の画素データを生成する。画像処理の処理速度を向上できる。

Description

画像処理装置と画像処理方法およびプログラム
 この技術は、画像処理装置と画像処理方法およびプログラムに関し、画像処理の処理速度を向上できるようにする。
 従来の画像処理では、例えば画像の拡大縮小処理や回転処理、変形処理等が行われており、特許文献1ではキャッシュ技術を用いて処理速度を向上させる提案がなされている。
特開2012-238118号公報
 ところで、キャッシュ技術を用いる場合、例えばメモリにキャッシュされている画像データから必要な画像データの読み出しに時間を要すると、処理速度を十分に向上させることができない。
 そこで、この技術では画像処理の処理速度を向上できる画像処理装置と画像処理方法およびプログラムを提供することを目的とする。
 この技術の第1の側面は、
 ライン方向に所定画素数の画素データを複数ライン分有する第1ブロックと、前記第1ブロックに対してライン方向に続く所定画素数の画素データを前記第1ブロックの一部のラインを含む複数ライン分有する第2ブロックと、前記第1ブロックに対してライン方向に続く所定画素数の画素データを前記第1ブロックにおける前記第2ブロックに含まれたラインと異なるラインを含む複数ライン分有する第3ブロックに、入力画像データを分割して記憶したメモリ部と、
 補間位置の画素データの生成に用いる周辺画素の画素データを含む第1と第2および第3ブロックの画素データを前記メモリ部から読み出すメモリ制御部と
を備える画像処理装置にある。
 この技術において、メモリ部には、ライン方向に所定画素数の画素データを複数ライン分有する第1ブロックと、第1ブロックに対してライン方向に続く所定画素数の画素データを第1ブロックの一部のラインを含む複数ライン分有する第2ブロックと、第1ブロックに対してライン方向に続く所定画素数の画素データを第1ブロックにおける第2ブロックに含まれたラインと異なるラインを含む複数ライン分有する第3ブロックに、入力画像データが分割して記憶されている。ライン方向の所定画素数は、例えば補間処理に用いる周辺画素のライン方向の画素数以上であり、第1ブロックは補間処理に用いる周辺画素の全ラインを含む。また、メモリ部は3つの領域が設けられており、ブロックに分割された入力画像データが各領域に記憶されている。
 メモリ制御部は、補間位置の画素データの生成に用いる周辺画素の画素データを読み出すための読出アドレスを生成する読出アドレス生成部と、読出アドレス生成部で生成された読出アドレスを、ブロック単位のアドレスに変換する読出アドレス変換処理部とを有している。また、メモリ制御部は、メモリ部から読み出した第1と第2および第3ブロックの画素データから、周辺画素の画素データを選択して補間処理部へ出力する読出画像データ処理部を有してもよい。
 メモリ制御部は、読出アドレス変換処理部で得られたアドレスを用いて、メモリ部から周辺画素の画素データを含む第1と第2および第3ブロックの画素データの読み出しを行う。ここで、3つのバンクに第1ブロックと第2ブロックと第3ブロックが記憶されている場合、各ブロックの画素データを異なるバンクからバースト転送で読み出す。また、メモリ制御部は、補間位置が第1と第2および第3ブロックのいずれかのブロックのみに周辺画素の画素データを含む位置である場合に該周辺画素の画素データを含むブロックの画素データをメモリ部から読み出し、補間位置が第1と第2および第3ブロックにおける2つのブロックに周辺画素の画素データを含む位置である場合に該周辺画素の画素データを含む2つのブロックの画素データをメモリ部から読み出してもよい。
 さらに、メモリ制御部は、入力画像データを、第1ブロックと第2ブロックと第3ブロックのデータに分割する書込画像データ処理部と、書込画像処理部でブロック単位とされた入力画像データをメモリ部にブロック単位で書き込むための書込アドレスを生成する書込アドレス生成部を有する構成としてもよい。
 また、画像処理装置は、画像変換後の画素位置に対応する画像変換前の画素位置である補間位置を算出する演算処理部と、メモリ制御部によってメモリ部から読み出された周辺画素の画素データを用いて補間処理を行い、補間位置の画素データを生成する補間処理部をさらに備えてもよい。また、第1と第2および第3ブロックのデータ量とメモリ部のデータ幅を等しくしてもよい。
 この技術の第2の側面は、
 ライン方向に所定画素数の画素データを複数ライン分有する第1ブロックと、前記第1ブロックに対してライン方向に続く所定画素数の画素データを前記第1ブロックの一部のラインを含む複数ライン分有する第2ブロックと、前記第1ブロックに対してライン方向に続く所定画素数の画素データを前記第1ブロックにおける前記第2ブロックに含まれたラインと異なるラインを含む複数ライン分有する第3ブロックに、入力画像データを分割して記憶したメモリ部から、補間位置の画素データの生成に用いる周辺画素の画素データを含む第1と第2および第3ブロックの画素データをメモリ制御部で読み出すこと
を含む画像処理方法にある。
 この技術の第3の側面は、
 画像変換をコンピュータで実行させるプログラムであって、
 画像変換後の画素位置に対応する画像変換前の画素位置である補間位置を算出する手順と、
 ライン方向に所定画素数の画素データを複数ライン分有する第1ブロックと、前記第1ブロックに対してライン方向に続く所定画素数の画素データを前記第1ブロックの一部のラインを含む複数ライン分有する第2ブロックと、前記第1ブロックに対してライン方向に続く所定画素数の画素データを前記第1ブロックにおける前記第2ブロックに含まれたラインと異なるラインを含む複数ライン分有する第3ブロックに、入力画像データを分割して記憶したメモリ部から、前記補間位置の画素データの生成に用いる周辺画素の画素データを含む第1と第2および第3ブロックの画素データを読み出す手順と、
 前記メモリ部から読み出された周辺画素の画素データを用いて補間処理を行い、前記補間位置の画素データを生成する手順と
を前記コンピュータで実行させるプログラムにある。
 なお、本技術のプログラムは、例えば、様々なプログラム・コードを実行可能な汎用コンピュータに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、光ディスクや磁気ディスク、半導体メモリなどの記憶媒体、あるいは、ネットワークなどの通信媒体によって提供可能なプログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ上でプログラムに応じた処理が実現される。
画像処理装置の構成を例示した図である。 補間位置に対する周辺画素と入力画像データが分割されたブロックの関係を例示した図である。 画像処理装置の動作を例示したフローチャートである。 画像データ書込処理を例示したフローチャートである。 画像データ書込処理を例示したフローチャートである。 入力画像データとブロックの具体例を示す図である。 画像データ読出処理を例示したフローチャートである。 3つのブロックのアドレスを示した図である。 画素データを生成する補間位置とデータが読み出されるブロックとの関係を例示した図である。 1ブロックまたは2ブロックのデータを読み出すことで補間処理が可能となる場合を例示した図である。
 以下、本技術を実施するための形態について説明する。なお、説明は以下の順序で行う。
 1.実施の形態の構成
 2.実施の形態の動作
  2-1.画像データ書込動作
  2-2.画像データ読出動作
 3.変形例
 <1.実施の形態の構成>
 本技術の画像処理装置は、画像処理前の画像データを順にフレームメモリに記憶させて、フレームメモリに記憶されている画像データの読み出しを画像変換、例えば画像の拡大や縮小,移動,変形等に応じて行い、画像変換後の画像データを生成する。
 図1は、画像処理装置の構成を例示している。画像処理装置10は、メモリバッファ部11、メモリ制御部12、メモリ部13、補間処理部14、演算処理部15を有している。なお、画像処理装置10を構成する各部は一体に設けられてもよく、補間処理部14や演算処理部15は、メモリ制御部12やメモリ部13と別個に設けられてもよい。
 メモリバッファ部11は、ラインメモリあるいはフレームメモリを用いて構成されている。メモリバッファ部11は、入力画像データDVinをラインメモリあるいはフレームメモリに一時的に蓄積する。また、メモリバッファ部11に一時的に蓄積された入力画像データDVinは、メモリ制御部12によって読み出されてメモリ部13に記憶される。
 メモリ制御部12は、メモリバッファ部11から画像データを取得してメモリ部13に記憶させる。また、メモリ制御部12は、演算処理部15から通知された補間位置の画素データを生成するために必要な周辺画素の画素データをメモリ部13から読み出して補間処理部14へ出力する。
 メモリ制御部12は、書込画像データ処理部121、書込アドレス生成部122、読出アドレス生成部123、読出アドレス変換処理部124、読出画像データ処理部125、アクセス制御部126を有している。
 書込画像データ処理部121は、メモリバッファ部11の画像データをメモリ部13に記憶する処理単位のデータに変換する。書込画像データ処理部121は、ライン方向に所定画素数の画素データを複数ライン分有する第1ブロックと、第1ブロックに対してライン方向に続く所定画素数の画素データを第1ブロックの一部のラインを含む複数ライン分有する第2ブロックと、第1ブロックに対してライン方向に続く所定画素数の画素データを第1ブロックにおける第2ブロックに含まれたラインと異なるラインを含む複数ライン分有する第3ブロックに分割して、ブロック単位のデータに変換する。
 書込アドレス生成部122は、書込画像データ処理部121から出力される処理単位のデータをメモリ部13に書き込むための書込アドレスを生成する。書込アドレス生成部122は、書込画像データ処理部121から出力されるブロック単位のデータをメモリ部13にブロック単位で書き込むための書込アドレスを生成する。
 読出アドレス生成部123は、補間位置の画素データの生成に用いる周辺画素の画素データを読み出すための読出アドレスを生成する。
 読出アドレス変換処理部124は、読出アドレス生成部123で生成された読出アドレスを処理単位のデータのアドレス、すなわち読出アドレスで示された周辺画素の画素データを含むブロックのアドレスに変換する。
 読出画像データ処理部125は、メモリ部13から読み出した画像データから、補間処理に用いる周辺画素の画素データを選択して補間処理部14へ出力する。
 アクセス制御部126は、メモリ部13に対するアクセス時に、画像データやアドレスデータなどのバッファリングやアクセスの調停/制御を行う。
 メモリ部13は、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)を用いて構成する。例えば、低価格で大容量のDRAMを用いた場合、遅延の少ないランダムアクセスを可能とするため複数のバンクに同じデータを記憶させて、所望のデータを読み出す場合にバンクの切り替えを行う。すなわち、ブロック単位のデータに変換された入力画像データを3つのバンクに記憶して、第1と第2および第3ブロックの画素データをブロック単位で異なるバンクから読み出す。また、SRAMを用いる場合、複数の領域に同じデータを記憶させて、所望のデータを読み出す場合に領域の切り替えを行う。
 補間処理部14は、メモリ部13から読み出された周辺画素の画素データと演算処理部15から通知された補間位置に基づき補間処理を行い、補間位置の画素データを生成する。
 演算処理部15は、画像変換後の画素位置が画像変換前のいずれの位置であるか算出して、算出した画素位置である補間位置をメモリ制御部12へ出力することで、補間位置の周辺画素の画素データ含むブロックのデータをメモリ部13から読み出すようにする。また、演算処理部15は、補間位置を補間処理部14へ出力して、補間位置の画素データを生成させる。さらに、演算処理部15は、画像変換後の画素位置毎に補間位置を算出してメモリ制御部12と補間処理部14へ出力する。したがって、画像変換後の画素位置毎に画素データが生成されて補間処理部14から画像変換後の画像データDVoutが出力される。
 <2.実施の形態の動作>
 次に、実施の形態の動作について説明する。なお、実施の形態の動作では、DRAMを用いた場合について例示する。図2は、補間位置に対する周辺画素と入力画像データが分割されたブロックの関係を例示している。例えば、補間位置MP(白丸印で示す画素位置)を基準とした「2ライン×4画素」の画素領域ARmに含まれる画素を周辺画素とする。また、ブロックサイズはライン方向画素数が周辺画素のライン方向の画素数以上であり、第1ブロックは補間処理に用いる周辺画素の全ラインを含むように設定して、例えば第1ブロックのブロックサイズは「2ライン×4画素」する。また、第1ブロックに対してライン方向に続く所定画素数の画素データを第1ブロックの一部のラインを含む複数ライン分有する第2ブロックのブロックサイズは、例えば「2ライン×4画素」とする。さらに、第1ブロックに対してライン方向に続く所定画素数の画素データを第1ブロックにおける第2ブロックに含まれたラインと異なるラインを含む複数ライン分有する第3ブロックのブロックサイズは、例えば「2ライン×4画素」とする。
 この場合、図2の(a)に示すように、第1ブロックBLK1は、ライン方向が4画素且つ2ライン分の画素データ「(y,x-4)、(y,x-3)、(y,x-2)、(y,x-1)、(y+1,x-4)、(y+1,x-3)、(y+1,x-2)、(y+1,x-1)」で構成される。
 また、第2ブロックBLK2は、ライン方向が第1ブロックBLK1に続く4画素、且つ第1ブロックBLK1の1ラインを含めた2ライン分の画素データ「(y-1,x)、(y-1,x+1)、(y-1,x+2)、(y-1,x+3)、(y,x)、(y,x+1)、(y,x+2)、(y,x+3)」で構成される。
 また、第3ブロックBLK3は、ライン方向が第1ブロックBLK1に続く4画素、且つ第1ブロックBLK1における第2ブロックBLK2に含まれたラインと異なるラインを含む2ライン分の画素データ「(y+1,x)、(y+1,x+1)、(y+1,x+2)、(y+1,x+3)、(y+2,x)、(y+2,x+1)、(y+2,x+2)、(y+2,x+3)」で構成される。
 また、図2の(b)に示すように、第1ブロックBLK1は、ライン方向が4画素且つ2ライン分の画素データ「(y,x+4)、(y,x+5)、(y,x+6)、(y,x+7)、(y+1,x+4)、(y+1,x+5)、(y+1,x+6)、(y+1,x+7)」で構成される。
 また、第2ブロックBLK2は、ライン方向が第1ブロックBLK1に続く4画素、且つ第1ブロックBLK1の1ラインを含めた2ライン分の画素データ「(y-1,x)、(y-1,x+1)、(y-1,x+2)、(y-1,x+3)、(y,x)、(y,x+1)、(y,x+2)、(y,x+3)」で構成される。
 また、第3ブロックBLK3は、ライン方向が第1ブロックBLK1に続く4画素、且つ第1ブロックBLK1における第2ブロックBLK2に含まれたラインと異なるラインを含む2ライン分の画素データ「(y+1,x)、(y+1,x+1)、(y+1,x+2)、(y+1,x+3)、(y+2,x)、(y+2,x+1)、(y+2,x+2)、(y+2,x+3)」で構成される。
 このように、入力画像データをブロック単位のデータに変換してメモリ部に記憶させれば、3つのブロックBLK1,BLK2,BLK3のデータを読み出すことで、補間位置MPの画素データの生成に用いる周辺画素の画素領域ARmの画素データを取得できる。
 なお、入力画像を順次所定のブロックサイズ(例えば「2ライン×4画素」)のデータに変換する従来の方法(以下「補間点4角抽出方式」という)では、図2の(c)に示すように、ブロックBLKaが画素データ「(y-1,x-4)、(y-1,x-3)、(y-1,x-2)、(y-1,x-1)、(y,x-4)、(y,x-3)、(y,x-2)、(y,x-1)」で構成される。また、ブロックBLKbが画素データ「(y-1,x)、(y-1,x+1)、(y-1,x+2)、(y-1,x+3)、(y,x)、(y,x+1)、(y,x+2)、(y,x+3)」で構成される。さらに、ブロックBLKcが画素データ「(y+1,x-4)、(y+1,x-3)、(y+1,x-2)、(y+1,x-1)、(y+2,x-4)、(y+2,x-3)、(y+2,x-2)、(y+2,x-1)」で構成されて、ブロックBLKdが画素「(y+1,x)、(y+1,x+1)、(y+1,x+2)、(y+1,x+3)、(y+2,x)、(y+2,x+1)、(y+2,x+2)、(y+2,x+3)」で構成される。したがって、4つのブロックBLKa,BLKb,BLKc,BLKdのデータを読み出すことで、補間位置MPの画素データの生成に用いる周辺画素の画素領域ARmの画素データを取得できる。
 メモリ制御部12では、メモリバッファ部11に記憶されている入力画像データを、図2の(a)あるいは図2の(b)に示すように第1ブロックと第2ブロックと第3ブロックに分割してメモリ部13に記憶する。
 また、メモリ制御部12は、演算処理部15で算出された補間位置を基準として3つのブロックのデータをメモリ部13から読み出して、読み出したデータを用いた補間処理によって補間位置の画素データを生成する。
 また、メモリ制御部12は、メモリ部13に対してブロック単位で画像データの書き込みと読み出しを行う際に、バースト転送を用いる。
 さらに、メモリ制御部12は、ブロック毎のデータをメモリ部13の3つのバンクに記憶させて、3つのバンクから異なるブロックの画素データを読み出すことで、データの読み出しを高速に行えるようにする。
 なお、入力画像データのデータ幅を32ビット、メモリ部13のデータ書き込みやデータ読み出しのデータ幅を256ビットとすると、メモリ部13の1アドレスに8つの画素データが格納できる。すなわち、1ブロックのデータ量とメモリ部13のデータ幅を等しくすれば、メモリ部13の1アドレスがブロックの1アドレスに相当することになり、ブロック単位のデータの書き込みや読み出しを容易に行うことができる。
 図3は、本技術の画像処理装置の動作を例示したフローチャートであり、
 ステップST1で画像処理装置は画像データ書き込み処理を行う。画像処理装置10のメモリ制御部12は、入力画像データを、ライン方向に所定画素数の画素データを複数ライン分有する第1ブロックと、第1ブロックに対してライン方向に続く所定画素数の画素データを第1ブロックの一部のラインを含む複数ライン分有する第2ブロックと、第1ブロックに対してライン方向に続く所定画素数の画素データを第1ブロックにおける第2ブロックに含まれたラインと異なるラインを含む複数ライン分有する第3ブロックに分割してメモリ部13に記憶させてステップST2に進む。
 ステップST2で画像処理装置は、処理対象画素を設定する。画像処理装置10の演算処理部15は、画素データを生成する画像変換後の画素を処理対象画素として設定してステップST3に進む。
 ステップST3で画像処理装置は補間位置算出処理を行う。画像処理装置10の演算処理部15は、ステップST2で設定した処理対象画素に対応する画像変換前の画素位置を補間位置として算出してステップST4に進む。
 ステップST4で画像処理装置はブロック読出処理を行う。画像処理装置10のメモリ制御部12は、ステップST3で算出された補間位置の画素データの生成に用いる周辺画素の画素データを含むブロックのデータをメモリ部13から読み出してステップST5に進む。
 ステップST5で画像処理装置は補間処理を行う。画像処理装置10の補間処理部14は、ステップST4で読み出したブロックのデータから、補間位置の画素データの生成に用いる周辺画素の画素データを用いて補間処理を行うことで、処理対象画素の画素データを生成してステップST6に進む。
 ステップST6で画像処理装置は処理対象画素の設定を完了したか判別する。画像処理装置10の演算処理部15は、画像変換後の画像で処理対象画素に設定されていない画像がある場合はステップST7に進み、画像変換後の各画素が処理対象画素に設定されて画素データが生成されている場合は処理を終了する。
 ステップST7で画像処理装置は処理対象画素を更新する。画像処理装置10の演算処理部15は、処理対象画素に設定されていない画素を新たな処理対象画素に設定してステップST3に戻る。
 <2-1.画像データ書込処理>
 次にメモリ部13への画像データの書込処理について説明する。図4,図5は、画像データ書込処理を例示したフローチャートである。また、図6は、入力画像データとブロックの具体例を示している。なお、ブロックサイズは「2ライン×4画素」である。
 図4のステップST11でメモリ制御部はアドレス初期化を行う。メモリ制御部12は、入力画像の画素位置を示すアドレス(PV,PH)と、ブロックのアドレス(BY,BX)の初期化を行い「PV=0,PH=0,BY=0,BX=0」としてステップST12に進む。
 ステップST12でメモリ制御部はフラグJPVを設定する。メモリ制御部12は、アドレスPVが奇数または偶数のいずれであるかを示すフラグJPVを設定する。具体的には、「JPV=(PV%2)」の演算を行い、奇数である場合はJPV=1、偶数である場合はJPV=0としてステップST13に進む。なお、「%」は剰余演算子である。
 ステップST13でメモリ制御部はアドレスPVにおけるアドレスPH~PH+3の画素データを取得する。メモリ制御部12はメモリバッファ部11からアドレス(PV,PH),(PV,PH+1),・・・,(PV,PH+3)の4画素の画素データを取得してステップST14に進む。
 ステップST14でメモリ制御部はアドレスBXを算出する。メモリ制御部12はアドレスPHとブロックの水平方向の画素数に基づきアドレスBXを算出する。具体的には、「BX=INT(PH/4)」の演算を行い、アドレスPHをブロックの水平方向の画素数4で除算した結果の整数部分をアドレスBXとしてステップST15に進む。なお、「INT」は除算結果の整数部分を示す。
 ステップST15でメモリ制御部はフラグJBXを設定する。メモリ制御部12は、アドレスBXが奇数または偶数のいずれであるかを示すフラグJBXを設定する。具体的には、「JBX=(BX%2)」の演算を行い、アドレスBXが奇数である場合はJBX=1、偶数である場合はJBX=0としてステップST16に進む。
 ステップST16でメモリ制御部はフラグJBX=0であるか判別する。メモリ制御部12は、アドレスBXが偶数でありフラグJBX=0である場合にステップST17に進み、アドレスBXが奇数でありフラグJBX=1である場合にステップST18に進む。
 ステップST17でメモリ制御部はフラグJPV=1であるか判別する。メモリ制御部12は、アドレスPVが奇数でありフラグJPV=1である場合にステップST19に進み、アドレスPVが偶数でありフラグJPV=0である場合にステップST21に進む。
 ステップST16からステップST18に進むと、メモリ制御部12はフラグJPV=0であるか判別する。メモリ制御部は、アドレスPVが偶数でありフラグJPV=0である場合にステップST19に進み、アドレスPVが奇数でありフラグJPV=1である場合にステップST21に進む。
 ステップST19でメモリ制御部12はブロックのデータを決定する。メモリ制御部12は「(PV,PH),(PV,PH+1),・・・,(PV,PH+3)」、および既に取得されている「(PV-1,PH),(PV-1,PH+1),・・・,(PV-1,PH+3)」を、ブロック(BY,BX)の画像データとしてステップST20に進む。
 ステップST20でメモリ制御部はブロック(BY,BX)の書込処理を行う。メモリ制御部12はブロック(BY,BX)の画像データをバースト転送でメモリ部13の3つのバンクに記録してステップST21に進む。
 ステップST21でメモリ制御部はアドレスPVの画素データの取得が全て完了しているか判別する。メモリ制御部は、アドレスPVの画素データの取得が完了していない場合はステップST22に進み、取得が全て完了している場合はステップST23に進む。
 ステップST22でメモリ制御部はアドレスPHを更新する。メモリ制御部12は「PH=PH+4」の処理を行い、ブロック内における水平方向の最初の画素位置を示すアドレスPHを更新してステップST13に戻る。
 ステップST23でメモリ制御部は1フレームの書込完了であるか判別する。メモリ制御部は、アドレスPVが垂直方向の最後の位置(最終ライン)を示していない場合は図5のステップST24に進み、アドレスPVが垂直方向の最後の位置(最終ライン)を示している場合は、1フレームの画像の書込処理を終了する。
 ステップST24でメモリ制御部はアドレスBXを初期化する。メモリ制御部12は、アドレスPVの画素データの読み出しが完了していることからアドレスBXを「BX=0」としてステップST25に進む。
 ステップST25でメモリ制御部はアドレスPVを更新する。メモリ制御部12は「PV=PV+1」の処理を行い、アドレスPVを更新してステップST26に進む。
 ステップST26でメモリ制御部はフラグJPVを設定する。メモリ制御部12は、アドレスPVが奇数または偶数のいずれであるかを示すフラグJPVを設定する。具体的には、「JPV=(PV%2)」の演算を行い、奇数である場合はJPV=1、偶数である場合はJPV=0としてステップST27に進む。
 ステップST27でメモリ制御部はフラグJPV=0であるか判別する。メモリ制御部12は、アドレスPVが偶数でありフラグJPV=0である場合にステップST28に進み、アドレスPVが奇数であるフラグJPV=1である場合に図4のステップST13に戻る。
 ステップST28でメモリ制御部はアドレスBYを更新する。メモリ制御部12は「BY=BY+1」の処理を行い、アドレスBYを更新して図4のステップST13に戻る。
 このような処理を行うと、図6の(a)に示すように、アドレスPV=0に関しては、アドレス(0,4)(0,5)(0,6)(0,7)の画素データがブロック(0、1)のデータとしてメモリ部13に記憶される。また、アドレス(0,12)(0,13)(0,14)(0,15)の画素データがブロック(0,3)のデータとしてメモリ部13に記憶される。以下同様に、アドレスPV=0における4画素置きの4画素分の画素データが、アドレスBY=0,BX=奇数のブロックのデータとしてメモリ部13に記憶される。
 また、図6の(b)に示すように、アドレスPV=1に関しては、アドレス(1,0)(1,1)(1,2)(1,3)の画素データがアドレス(0,0)(0,1)(0,2)(0,3)の画素データと共にブロック(0,0)のデータとしてメモリ部13に記憶される。また、アドレス(1,8)(1,9)(1,10)(1,11)の画素データがアドレス(0,8)(0,9)(0,10)(0,11)の画素データと共にブロック(0,2)のデータとしてメモリ部13に記憶される。以下同様に、アドレスPV=1における4画素置きの4画素分の画素データがアドレスPV=0における4画素置きの4画素分の画素データと共に、アドレスBY=0,BX=偶数のブロックのデータとしてメモリ部13に記憶される。
 また、図6の(c)に示すように、アドレスPV=2に関しては、アドレス(2,4)(2,5)(2,6)(2,7)の画素データがアドレス(1,4)(1,5)(1,6)(1,7)の画素データと共にブロック(1,1)のデータとしてメモリ部13に記憶される。また、アドレス(2,8)(2,9)(2,10)(2,11)の画素データがアドレス(1,8)(1,9)(1,10)(1,11)の画素データと共にブロック(1,3)のデータとしてメモリ部13に記憶される。以下同様に、アドレスPV=2における4画素置きの4画素分の画素データがアドレスPV=1における4画素置きの4画素分の画素データと共に、アドレスBY=1,BX=奇数のブロックのデータとしてメモリ部13に記憶される。
 さらに、アドレスPV=3やアドレスPV=4に関しても同様に、図6の(d)や図6の(e)に示すようにブロックのデータとしてメモリ部13に記憶される。以下同様に処理が行われて1フレームの画像データをブロック単位でメモリ部に記録することができる。
 このように、入力画像データをブロック単位のデータに変換すれば、3つのブロックの画素データを読み出すことで、補間位置の画素データの生成に用いる周辺画素の画素データを取得できる。
 また、ブロックのデータをメモリ部13のバンクにバースト転送して記憶することで、入力画像データの書込処理を高速に行うことができる。また、ブロックのデータを3つのバンクに記憶することで、後述するように画素データの補間処理に用いる画素データを含むブロックの読み出しを効率よく行うことが可能となる。
 <2-2.画像データ読出処理>
 次に、メモリ部13からの画像データの読出処理について説明する。画像データの読出処理では、補間位置算出処理で算出された補間位置の画素データを生成するために必要とされる周辺画素の画素データが含まれているブロックのデータをメモリ部13から読み出す。
 図7は、画像データ読出処理を例示したフローチャートである。なお、ブロックサイズは「2ライン×4画素」であり、周辺画素の画素領域ARmのサイズも「2ライン×4画素」である。
 ステップST41でメモリ制御部は補間位置(my,mx)を取得する。メモリ制御部12は、演算処理部15で算出された補間位置(my,mx)を取得してステップST42に進む。
 ステップST42でメモリ制御部は補間対象アドレス(PMV,PMH)を設定する。メモリ制御部12は、「PMV=INT(my)」「PMH=INT(mx)」の演算を行い、ステップST41で取得した補間位置に対応する補間対象アドレス(PMV,PMH)を設定してステップST43に進む。
 ステップST43でメモリ制御部は補間処理に必要な周辺画素の開始アドレスPSHを設定する。メモリ制御部12は、例えば補間位置mxを基準とした水平方向に4画素の画素データを用いて補間処理を行う場合、「PSH=PMH-(4画素/2)」の演算を行い、周辺画素の開始アドレスPSHを設定してステップST44に進む。なお、アドレスPMHが「2」よりも小さい場合には「PSH=0」とすれば、開始アドレスPSHが初期値以下となることを防止できる。また、入力画像データの水平方向の最大アドレスを「PHmax」とした場合は、アドレスPMH=PHmaxであっても、周辺画素として「2ライン×4画素」の画素データを得ることができる。よって、水平方向最大アドレスに対する特殊処理は不要である。
 ステップST44でメモリ制御部はフラグJPMVを設定する。メモリ制御部12は、アドレスPMVが奇数または偶数のいずれであるかを示すフラグJPMVを設定する。具体的には、メモリ制御部12は「JPMV=(PMV%2)」の演算を行い、奇数である場合はJPMV=1、偶数である場合はJPMV=0としてステップST45に進む。
 ステップST45でメモリ制御部はフラグJPMV=0であるか判別する。メモリ制御部12は、フラグJPMV=0でありアドレスPMVが偶数である場合にステップST46に進み、フラグJBX=0でなくアドレスPMVが奇数である場合にステップST51に進む。
 ステップST46でメモリ制御部はブロックのアドレスBXを算出する。メモリ制御部12は「BX=INT(PSH/4)」の演算を行い、開始アドレスPSHの画素データが含まれるブロックのアドレスBXを算出してステップST47に進む。
 ステップST47でメモリ制御部はフラグJBXを設定する。メモリ制御部12は、アドレスBXが奇数または偶数のいずれであるかを示すフラグJBXを設定する。具体的には、メモリ制御部12は、「JBX=(BX%2)」の演算を行い、アドレスBXが奇数である場合はJBX=1、偶数である場合はJBX=0としてステップST48に進む。
 ステップST48でメモリ制御部はフラグJBX=0であるか判別する。メモリ制御部は、フラグJBX=0でありアドレスBXが偶数である場合にステップST49に進み、フラグJBX=0でなくアドレスPMVが奇数である場合にステップST50に進む。
 ステップST49でメモリ制御部は第1ブロックパターンでアドレス設定を行う。メモリ制御部12は、読み出す3ブロックのパターンを第1ブロックパターンとして、3つのブロックのアドレス(BY1,BX1)(BY2,BX2)(BY3,BX3)を設定する。なお、図8は、3つのブロックのアドレスを示している。メモリ制御部12は、式(1)乃至(6)の演算を行い、図8の(a)に示す3つのブロックのアドレス(BY1,BX1)(BY2,BX2)(BY3,BX3)を設定してステップST56に進む。
 BX1=INT(PSH/4)        ・・・(1)
 BY1=INT(PMV/2)        ・・・(2)
 BX2=(INT(PSH/4))+1 ・・・(3)
 BY2=INT(PMV/2)        ・・・(4)
 BX3=(INT(PSH/4))+1 ・・・(5)
 BY3=(INT(PMV/2))+1  ・・・(6)
 ステップST50でメモリ制御部は第2ブロックパターンでアドレス設定を行う。メモリ制御部12は、読み出す3ブロックのパターンを第2ブロックパターンとして、3つのブロックのアドレス(BY1,BX1)(BY2,BX2)(BY3,BX3)を設定する。メモリ制御部12は、式(7)乃至(12)の演算を行い、図8の(b)に示す3つのブロックのアドレス(BY1,BX1)(BY2,BX2)(BY3,BX3)を設定してステップST56に進む。
 BX1=(INT(PSH/4))+1 ・・・(7)
 BY1=INT(PMV/2)        ・・・(8)
 BX2=INT(PSH/4)        ・・・(9)
 BY2=INT(PMV/2)        ・・・(10)
 BX3=INT(PSH/4)     ・・・(11)
 BY3=(INT(PMV/2))+1  ・・・(12)
 ステップST45からステップST51に進むとメモリ制御部はブロックのアドレスBXを算出する。メモリ制御部12は「BX=INT(PSH/4)」の演算を行い、開始アドレスPSHの画素データが含まれるブロックのアドレスBXを算出してステップST52に進む。
 ステップST52でメモリ制御部はフラグJBXを設定する。メモリ制御部12は、アドレスBXが奇数または偶数のいずれであるかを示すフラグJBXを設定する。具体的には、メモリ制御部12は、「JBX=(BX%2)」の演算を行い、アドレスBXが奇数である場合はJBX=1、偶数である場合はJBX=0としてステップST53に進む。
 ステップST53でメモリ制御部はフラグJBX=0であるか判別する。メモリ制御部は、フラグJBX=0でありアドレスBXが偶数である場合にステップST54に進み、フラグJBX=0でなくアドレスPMVが奇数である場合にステップST55に進む。
 ステップST54でメモリ制御部は第3ブロックパターンでアドレス設定を行う。メモリ制御部12は、読み出す3ブロックのパターンを第3ブロックパターンとして、3つのブロックのアドレス(BY1,BX1)(BY2,BX2)(BY3,BX3)を設定する。メモリ制御部12は、式(13)乃至(18)の演算を行い、図8の(c)に示す3つのブロックのアドレス(BY1,BX1)(BY2,BX2)(BY3,BX3)を設定してステップST56に進む。
 BX1=(INT(PSH/4))+1 ・・・(13)
 BY1=(INT(PMV/2))+1  ・・・(14)
 BX2=INT(PSH/4)        ・・・(15)
 BY2=INT(PMV/2)        ・・・(16)
 BX3=INT(PSH/4)     ・・・(17)
 BY3=(INT(PMV/2))+1  ・・・(18)
 ステップST55でメモリ制御部は第4ブロックパターンでアドレス設定を行う。メモリ制御部12は、読み出す3ブロックのパターンを第4ブロックパターンとして、3つのブロックのアドレス(BY1,BX1)(BY2,BX2)(BY3,BX3)を設定する。メモリ制御部12は、式(19)乃至(24)の演算を行い、図8の(d)に示す3つのブロックのアドレス(BY1,BX1)(BY2,BX2)(BY3,BX3)を設定してステップST56に進む。
 BX1=INT(PSH/4)        ・・・(19)
 BY1=(INT(PMV/2))+1 ・・・(20)
 BX2=(INT(PSH/4))+1 ・・・(21)
 BY2=INT(PMV/2)        ・・・(22)
 BX3=(INT(PSH/4))+1 ・・・(23)
 BY3=(INT(PMV/2))+1  ・・・(24
 ステップST56でメモリ制御部は3ブロックのデータ読出処理を行う。メモリ制御部12は、例えばメモリ部13の第1バンクからアドレス(BY1,BX1)である第1ブロックの画素データを読み出す。また、メモリ制御部12は、メモリ部13の第2バンクからアドレス(BY2,BX2)の第2ブロックの画素データを読み出し、第3バンクからアドレス(BY3,BX3)である第3ブロックの画素データを読み出す。
 このように画像データの読出処理を行えば、補間位置算出処理で算出された補間位置の画素データを生成するために必要とされる周辺画素の画素データが含まれているブロックのデータを読み出すことができる。図9は画素データを生成する補間位置とデータが読み出されるブロックとの関係を例示している。なお、図9では、ライン位置を揃えてブロックを表示している。
 例えば、図9の(a)に示すように、補間位置MP1の画素データを生成する場合には、第1ブロックパターンでブロック(0,0)(0,1)(1,1)のデータが読み出されて、補間位置MP2の画素データを生成する場合には、第2ブロックパターンでブロック(0,1)(1,1)(0,2)のデータが読み出される。また、図9の(b)に示すように、補間位置MP3の画素データを生成する場合には、第3ブロックパターンでブロック(0,0)(1,0)(1,1)のデータが読み出されて、補間位置MP4の画素データを生成する場合には、第4ブロックパターンでブロック(1,1)(0,2)(1,2)のデータが読み出される。
 また、メモリ制御部12は、メモリ部13から読み出したデータから、画素データの補間処理に用いる画素データを選択して補間処理部14へ出力する。例えば、補間位置MP1の画素データを生成する場合には、読み出したブロック(0,0)(0,1)(1,1)の画素データから、周辺画素の画素領域ARmにあるアドレス(0,2)(0,3)(0,4)(0,5)(1,2)(1,3)(1,4)(1,5)の画素データを選択して補間処理部14へ出力する。また、例えば、補間位置MP4の画素データを生成する場合には、読み出したブロック(1,1)(0,2)(1,2)の画素データから、周辺画素の画素領域ARmにあるアドレス(1,6)(1,7)(1,8)(1,9)(2,6)(2,7)(2,8)(2,9)の画素データを選択して補間処理部14へ出力する。
 このように、画素データを生成する画素位置に応じたブロックパターンで3ブロックの画素データを読み出して、読み出した画素データから補間処理に用いる画素データを選択して補間処理部14へ出力することで、従来の補間点4角抽出方式に比べて、効率よく画像処理を行えるようになる。
 また、メモリ部13としてDRAMを用いた場合、ROWアドレスを更新してデータを読み出す場合には遅延時間が大きいことから、1つのバンクに3つのブロックのデータを記憶して、順次ROWアドレスを更新して3つのブロックのデータを読み出す場合、メモリ部13からのデータの読み出しに時間を要してしまう。しかし、本技術のように3つのバンクからそれぞれ異なるブロックのデータを読み出すことで、メモリ部13からのデータの読み出しを高速に行うことができるようになる。
 ここで、書き込み及び読み出しのメモリアクセス帯域効率は、以下の式に基づき算出できる。なお、メモリクロック周波数を「Fmem」、メモリデータ幅を「Dmem」、メモリ書込効率係数を「C(mem(w))」、メモリ読出効率係数を「C(mem(r))」、画像データのクロック周波数を「Fvid」、画像データのデータ幅を「Dvid」、画像データの書込効率係数を「C(vid(w))」、画像データの読出効率係数を「C(vid(r))」とする。
 この場合、本技術によれば書込帯域書込帯域効率「Etri(w)」は式(25)に基づき算出されて、読出帯域効率「Etri(r)」は式(26)に基づいて算出される。
 また、従来の補間点4角抽出方式の書込帯域効率[1/%]:Esqr(w)は式(27)に基づいて算出されて、読出帯域効率[1/%]:Esqr(r)は式(28)に基づいて算出される。
Figure JPOXMLDOC01-appb-M000001
 
 このように、式(26)と式(28)から明らかなように、本技術によれば、補間点4角抽出方式に比べて読出帯域効率が良好であることから、効率よく画像処理を行える。
 <3.変形例>
 上述の実施の形態では、メモリ部13から3ブロックのデータを読み出す場合について説明したが、1ブロックのライン方向のサイズが補間処理に用いる周辺画素の画素領域のライン方向のサイズ以上であり、ブロック内に周辺画素の画素領域が含まれる場合、1ブロックまたは2ブロックのデータを読み出す。すなわち、補間位置が第1と第2および第3ブロックのいずれかのブロックのみに周辺画素の画素データを含む位置である場合には、この周辺画素の画素データを含むブロックの画素データをメモリ部から読み出す。また、補間位置が第1と第2および第3ブロックにおける2つのブロックに周辺画素の画素データを含む位置である場合には、この周辺画素の画素データを含む2つのブロックの画素データをメモリ部から読み出す。このように画素データを読み出すことで補間処理が可能となる。
 図10は、1ブロックまたは2ブロックのデータを読み出すことで補間処理が可能となる場合を例示している。例えば図10の(a)に示す補間位置MPuでは、補間処理に用いるアドレス(0,8)、(0,9)、(0,10)、(0,11)、(1,8)、(1,9)、(1,10)、(1,11)の画素データが1つのブロック(0,2)のデータとして記憶されている。また、図10の(b)に示す補間位置MPWでは、補間処理に用いるアドレス(1,0)、(1,1)、(1,2)、(1,3)、(2,0)、(2,1)、(2,2)、(2,3)の画素データが、2つのブロック(0,0)(1,0)に記憶されている。したがって、補間位置が、1ブロックあるいは2ブロックの画素データで補間処理が可能な位置であるかを判別して、判別結果に基づき読み出すブロックを1ブロックあるいは2ブロックとすれば、さらにメモリ部13からのデータの読み出しをさらに効率よく行うことが可能となる。
 なお、図4,5のフローチャートは、図6に示すように画像データをメモリ部13に記憶させる場合の動作を例示しており、補間処理に用いる周辺画素の画素数あるいはブロックサイズに応じて処理を変更してもよい。また、図7フローチャートは、図8に示すように記憶されている画像データを読み出す場合の動作を例示しており、メモリ部13に記憶されている画像データのブロックサイズや補間処理に用いる周辺画素の画素数等に応じて処理を変更してもよい。
 また、上述の実施の形態ではDRAMを用いてメモリ部13を構成した場合を例示しているが、メモリ部13で使用するメモリはDRAMに限らず、例えばSRAMを用いてもよい。
 また、メモリアクセス帯域の低減が可能になることで、読み出す補間点の画素データを増加させることができるため、画像変形処理における補間点数を増加させて画質を向上させることも可能となる。また、メモリアクセス帯域の低減が可能になることで、使用するメモリの数を減少させることや性能の低いメモリを利用することが可能となるので、コストを削減することができる。また、本技術のアルゴリズムを実装するCPUあるいはGPUまたはFPGA、ASICなどのデバイスに関しても接続先のメモリの数や性能によって、デバイスの数や性能を低下させることができるので、コストの削減が可能となる。
 さらに、メモリアクセス帯域の低減が可能になることで、使用するメモリの数を減少させることやメモリの周波数を落とすことが可能となるので消費電力を低減することができるようになる。
 なお、画像処理を高速化してハードウェアで行う例としては、放送番組制作に使用される画像を任意の形への変更処理や、移動させる際に用いるDME(Digital Multi Effects)等を挙げることができる。
 明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させる。または、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
 例えば、プログラムは記録媒体としてのハードディスクやSSD(Solid State Drive)、ROM(Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、CD-ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、BD(Blu-Ray Disc(登録商標))、磁気ディスク、半導体メモリカード等のリムーバブル記録媒体に、一時的または永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウェアとして提供することができる。
 また、プログラムは、リムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトからLAN(Local Area Network)やインターネット等のネットワークを介して、コンピュータに無線または有線で転送してもよい。コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
 なお、本明細書に記載した効果はあくまで例示であって限定されるものではなく、記載されていない付加的な効果があってもよい。また、本技術は、上述した技術の実施の形態に限定して解釈されるべきではない。この技術の実施の形態は、例示という形態で本技術を開示しており、本技術の要旨を逸脱しない範囲で当業者が実施の形態の修正や代用をなし得ることは自明である。すなわち、本技術の要旨を判断するためには、請求の範囲を参酌すべきである。
 また、本技術の画像処理装置は以下のような構成も取ることができる。
 (1) ライン方向に所定画素数の画素データを複数ライン分有する第1ブロックと、前記第1ブロックに対してライン方向に続く所定画素数の画素データを前記第1ブロックの一部のラインを含む複数ライン分有する第2ブロックと、前記第1ブロックに対してライン方向に続く所定画素数の画素データを前記第1ブロックにおける前記第2ブロックに含まれたラインと異なるラインを含む複数ライン分有する第3ブロックに、入力画像データを分割して記憶したメモリ部と、
 補間位置の画素データの生成に用いる周辺画素の画素データを含む第1と第2および第3ブロックの画素データを前記メモリ部から読み出すメモリ制御部と
を備える画像処理装置。
 (2) 前記メモリ部は前記ブロックに分割された前記入力画像データを3つの領域に記憶しており、
 前記メモリ制御部は、第1と第2および第3ブロックの画素データをブロック単位で異なる領域から読み出す(1)に記載の画像処理装置。
 (3) 前記メモリ制御部は、第1と第2および第3ブロックからの画素データの読み出しにバースト転送を用いる(1)または(2)に記載の画像処理装置。
 (4) 前記メモリ制御部は、
 前記補間位置の画素データの生成に用いる周辺画素の画素データを読み出すための読出アドレスを生成する読出アドレス生成部と、
 前記読出アドレス生成部で生成された読出アドレスを、ブロック単位のアドレスに変換する読出アドレス変換処理部とを有し、
 前記メモリ制御部は、前記読出アドレス変換処理部で得られたアドレスを用いて、前記メモリ部から前記周辺画素の画素データを含む第1と第2および第3ブロックの画素データの読み出しを行う(1)乃至(3)のいずれかに記載の画像処理装置。
 (5) 前記メモリ制御部は、
 前記メモリ部から読み出した第1と第2および第3ブロックの画素データから、前記周辺画素の画素データを選択して補間処理部へ出力する読出画像データ処理部を有する(1)乃至(4)のいずれかに記載の画像処理装置。
 (6) 前記メモリ制御部は、
 前記入力画像データを、前記第1ブロックと前記第2ブロックと前記第3ブロックのデータに分割する書込画像データ処理部と、
 前記書込画像データ処理部でブロック単位とされた前記入力画像データを前記メモリ部にブロック単位で書き込むための書込アドレスを生成する書込アドレス生成部を有する(1)乃至(5)のいずれかに記載の画像処理装置。
 (7) 前記メモリ制御部は、前記補間位置が前記第1と第2および第3ブロックのいずれかのブロックのみに周辺画素の画素データを含む位置である場合に該周辺画素の画素データを含むブロックの画素データを前記メモリ部から読み出し、前記補間位置が前記第1と第2および第3ブロックにおける2つのブロックに周辺画素の画素データを含む位置である場合に該周辺画素の画素データを含む2つのブロックの画素データを前記メモリ部から読み出す(1)乃至(6)のいずれかに記載の画像処理装置。
 (8) 画像変換後の画素位置に対応する画像変換前の画素位置である前記補間位置を算出する演算処理部と、
 前記メモリ制御部によって前記メモリ部から読み出された周辺画素の画素データを用いて補間処理を行い、前記演算処理部で算出された前記補間位置の画素データを生成する補間処理部をさらに備える(1)乃至(7)のいずれかに記載の画像処理装置。
 (9) 前記ライン方向の所定画素数は前記補間処理に用いる周辺画素のライン方向の画素数以上であり、前記第1ブロックは前記補間処理に用いる周辺画素の全ラインを含む(8)に記載の画像処理装置。
 (10) 前記第1と第2および第3ブロックのデータ量と前記メモリ部のデータ幅を等しくした(1)乃至(9)のいずれかに記載の画像処理装置。
 10・・・画像処理装置
 11・・・メモリバッファ部
 12・・・メモリ制御部
 13・・・メモリ部
 14・・・補間処理部
 15・・・演算処理部
 121・・・書込画像データ処理部
 122・・・書込アドレス生成部
 123・・・読出アドレス生成部
 124・・・読出アドレス変換処理部
 125・・・読出画像データ処理部
 126・・・アクセス制御部

Claims (12)

  1.  ライン方向に所定画素数の画素データを複数ライン分有する第1ブロックと、前記第1ブロックに対してライン方向に続く所定画素数の画素データを前記第1ブロックの一部のラインを含む複数ライン分有する第2ブロックと、前記第1ブロックに対してライン方向に続く所定画素数の画素データを前記第1ブロックにおける前記第2ブロックに含まれたラインと異なるラインを含む複数ライン分有する第3ブロックに、入力画像データを分割して記憶したメモリ部と、
     補間位置の画素データの生成に用いる周辺画素の画素データを含む第1と第2および第3ブロックの画素データを前記メモリ部から読み出すメモリ制御部と
    を備える画像処理装置。
  2.  前記メモリ部は前記ブロックに分割された前記入力画像データを3つの領域に記憶しており、
     前記メモリ制御部は、第1と第2および第3ブロックの画素データをブロック単位で異なる領域から読み出す
    請求項1に記載の画像処理装置。
  3.  前記メモリ制御部は、第1と第2および第3ブロックからの画素データの読み出しにバースト転送を用いる
    請求項1に記載の画像処理装置。
  4.  前記メモリ制御部は、
     前記補間位置の画素データの生成に用いる周辺画素の画素データを読み出すための読出アドレスを生成する読出アドレス生成部と、
     前記読出アドレス生成部で生成された読出アドレスを、ブロック単位のアドレスに変換する読出アドレス変換処理部とを有し、
     前記メモリ制御部は、前記読出アドレス変換処理部で得られたアドレスを用いて、前記メモリ部から前記周辺画素の画素データを含む第1と第2および第3ブロックの画素データの読み出しを行う
    請求項1に記載の画像処理装置。
  5.  前記メモリ制御部は、
     前記メモリ部から読み出した第1と第2および第3ブロックの画素データから、前記周辺画素の画素データを選択して補間処理部へ出力する読出画像データ処理部を有する
    請求項1に記載の画像処理装置。
  6.  前記メモリ制御部は、
     前記入力画像データを、前記第1ブロックと前記第2ブロックと前記第3ブロックのデータに分割する書込画像データ処理部と、
     前記書込画像データ処理部でブロック単位とされた前記入力画像データを前記メモリ部にブロック単位で書き込むための書込アドレスを生成する書込アドレス生成部を有する
    請求項1に記載の画像処理装置。
  7.  前記メモリ制御部は、前記補間位置が前記第1と第2および第3ブロックのいずれかのブロックのみに周辺画素の画素データを含む位置である場合に該周辺画素の画素データを含むブロックの画素データを前記メモリ部から読み出し、前記補間位置が前記第1と第2および第3ブロックにおける2つのブロックに周辺画素の画素データを含む位置である場合に該周辺画素の画素データを含む2つのブロックの画素データを前記メモリ部から読み出す請求項1に記載の画像処理装置。
  8.  画像変換後の画素位置に対応する画像変換前の画素位置である前記補間位置を算出する演算処理部と、
     前記メモリ制御部によって前記メモリ部から読み出された周辺画素の画素データを用いて補間処理を行い、前記演算処理部で算出された前記補間位置の画素データを生成する補間処理部をさらに備える
    請求項1に記載の画像処理装置。
  9.  前記ライン方向の所定画素数は前記補間処理に用いる周辺画素のライン方向の画素数以上であり、前記第1ブロックは前記補間処理に用いる周辺画素の全ラインを含む
    請求項8に記載の画像処理装置。
  10.  前記第1と第2および第3ブロックのデータ量と前記メモリ部のデータ幅を等しくした請求項1に記載の画像処理装置。
  11.  ライン方向に所定画素数の画素データを複数ライン分有する第1ブロックと、前記第1ブロックに対してライン方向に続く所定画素数の画素データを前記第1ブロックの一部のラインを含む複数ライン分有する第2ブロックと、前記第1ブロックに対してライン方向に続く所定画素数の画素データを前記第1ブロックにおける前記第2ブロックに含まれたラインと異なるラインを含む複数ライン分有する第3ブロックに、入力画像データを分割して記憶したメモリ部から、補間位置の画素データの生成に用いる周辺画素の画素データを含む第1と第2および第3ブロックの画素データをメモリ制御部で読み出すこと
    を含む画像処理方法。
  12.  画像変換をコンピュータで実行させるプログラムであって、
     画像変換後の画素位置に対応する画像変換前の画素位置である補間位置を算出する手順と、
     ライン方向に所定画素数の画素データを複数ライン分有する第1ブロックと、前記第1ブロックに対してライン方向に続く所定画素数の画素データを前記第1ブロックの一部のラインを含む複数ライン分有する第2ブロックと、前記第1ブロックに対してライン方向に続く所定画素数の画素データを前記第1ブロックにおける前記第2ブロックに含まれたラインと異なるラインを含む複数ライン分有する第3ブロックに、入力画像データを分割して記憶したメモリ部から、前記補間位置の画素データの生成に用いる周辺画素の画素データを含む第1と第2および第3ブロックの画素データを読み出す手順と、
     前記メモリ部から読み出された周辺画素の画素データを用いて補間処理を行い、前記補間位置の画素データを生成する手順と
    を前記コンピュータで実行させるプログラム。
PCT/JP2020/027460 2019-09-20 2020-07-15 画像処理装置と画像処理方法およびプログラム WO2021053948A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021546524A JPWO2021053948A1 (ja) 2019-09-20 2020-07-15
US17/753,780 US20220377271A1 (en) 2019-09-20 2020-07-15 Image processing device, image processing method, and program

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019171405 2019-09-20
JP2019-171405 2019-09-20

Publications (1)

Publication Number Publication Date
WO2021053948A1 true WO2021053948A1 (ja) 2021-03-25

Family

ID=74884164

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/027460 WO2021053948A1 (ja) 2019-09-20 2020-07-15 画像処理装置と画像処理方法およびプログラム

Country Status (4)

Country Link
US (1) US20220377271A1 (ja)
JP (1) JPWO2021053948A1 (ja)
TW (1) TW202129591A (ja)
WO (1) WO2021053948A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011199804A (ja) * 2010-03-24 2011-10-06 Seiko Epson Corp 画像表示装置、プロジェクター、および、画像表示装置におけるデータの取得方法
JP2012518831A (ja) * 2009-02-20 2012-08-16 シリコン・ハイヴ・ベー・フェー マルチモードアクセス可能な記憶装置
JP2013186624A (ja) * 2012-03-07 2013-09-19 Mega Chips Corp 画像処理装置、および画像処理装置の動作方法
JP2015534169A (ja) * 2012-09-07 2015-11-26 日本テキサス・インスツルメンツ株式会社 マルチメディアデータ処理のための方法及びシステム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6157676A (en) * 1997-07-31 2000-12-05 Victor Company Of Japan Digital video signal inter-block interpolative predictive encoding/decoding apparatus and method providing high efficiency of encoding

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012518831A (ja) * 2009-02-20 2012-08-16 シリコン・ハイヴ・ベー・フェー マルチモードアクセス可能な記憶装置
JP2011199804A (ja) * 2010-03-24 2011-10-06 Seiko Epson Corp 画像表示装置、プロジェクター、および、画像表示装置におけるデータの取得方法
JP2013186624A (ja) * 2012-03-07 2013-09-19 Mega Chips Corp 画像処理装置、および画像処理装置の動作方法
JP2015534169A (ja) * 2012-09-07 2015-11-26 日本テキサス・インスツルメンツ株式会社 マルチメディアデータ処理のための方法及びシステム

Also Published As

Publication number Publication date
US20220377271A1 (en) 2022-11-24
TW202129591A (zh) 2021-08-01
JPWO2021053948A1 (ja) 2021-03-25

Similar Documents

Publication Publication Date Title
JP5663009B2 (ja) 原画像をワープまたは回転させて表示する装置、その方法、そのコンピュータプログラムおよびそれを記録した記録媒体
CN101866476B (zh) 生成和解析图形处理流水线内的像素值
US5548709A (en) Apparatus and method for integrating texture memory and interpolation logic in a computer system
US10388033B2 (en) Texture processing apparatus and method
US7580042B2 (en) Systems and methods for storing and fetching texture data using bank interleaving
CN101490708B (zh) 图像处理设备、图像处理方法和程序
JP2002529867A (ja) 3次元イメージングシステムで用いるためのテクスチャリングシステム
JP2012507923A (ja) 補間強化シーム操作に基づく画像サイズ変更方法及びシステム
US20080055309A1 (en) Image Generation Device and Image Generation Method
JPWO2008146406A1 (ja) ピクセルデータ変換のための画像処理装置及び方法
US7542046B1 (en) Programmable clipping engine for clipping graphics primitives
WO2013021525A1 (ja) 画像処理装置、画像処理方法、プログラム、及び集積回路
WO2021053948A1 (ja) 画像処理装置と画像処理方法およびプログラム
JP2011090663A (ja) 画像処理装置及びプログラム
US8134557B2 (en) Image processing apparatus and image processing method
US7768521B2 (en) Image processing apparatus and image processing method
KR102526750B1 (ko) 푸리에 변환을 수행하는 방법 및 장치
US9007389B1 (en) Texture map component optimization
US20080218527A1 (en) Method and Apparatus for Improving Hit Rates of a Cache Memory for Storing Texture Data During Graphics Rendering
JP2005513655A (ja) 表示用画像を表現するコンピュータグラフィックシステムおよび方法
KR20190059054A (ko) 영상 데이터를 처리하는 방법 및 장치
JP5597175B2 (ja) 画像圧縮装置及び画像処理システム
JP5678295B2 (ja) 画像表示処理方法及び画像表示処理装置
JP2002083316A (ja) 画像変形装置及びその画像変形方法
JP4465844B2 (ja) 画像処理装置および方法、並びに記録媒体

Legal Events

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

Ref document number: 20864900

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021546524

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20864900

Country of ref document: EP

Kind code of ref document: A1