Image processing apparatus
AssigneeFotoNation Limited
InventorDan Nicula
Life of this patent
Estimating the term…
Abstract
The present invention relates to an image processing apparatus which determines an order for calculating output image pixels that maximally reuses data in a local memory for computing all relevant output image pixels. Thus, the same set of data is re-used until it is no longer necessary. Output image pixel locations are browsed to determine pixel values in an order imposed by available input data, rather than in an order imposed by pixel positions in the output image. Consequently, the amount of storage required for local memory as well as the number of input image read requests and data read from memory containing the input image is minimized.
Claims19
An image processing apparatus for sampling and rotating a region of interest (ROI) of an input image to provide an output image of fixed dimensions, the ROI having a scale relative to the dimensions of the output image, the image processing apparatus configured to:
- successively read stripes of pixel values from the input image stored in a first memory into a second memory of said image processing apparatus, each stripe comprising an area extending across the region of interest in said input image, each stripe comprising pixel values for a number of rows of said input image, said number of rows being proportional to said scale;
- process said stripes by:
- determining an initial pixel location in said output image corresponding to an intersection between a boundary of said ROI and said area associated with one of said stripes in said second memory;
- browsing at least one path from said initial pixel location across output image pixel locations to locate one or more output image pixel locations lying within said area associated with one of said stripes in said second memory, said browsing comprising testing at least one output image pixel location adjacent to a browsed output image pixel location and outside said area associated with one of said stripes in said second memory;
- determining a subsequent path for at least one of said stripes, wherein determining said subsequent path for at least one of said stripes comprises determining a path from said at least one path associated with said initial pixel location to a pixel location within said area corresponding to said at least one of said stripes;
- for one or more output image pixel locations lying within the area of said input image provided by said stripes in said second memory:
- calculating a pixel value for said output image pixel location by interpolating a plurality of pixel values from said input image in said second memory surrounding said output image pixel location;
- and
- writing said pixel value to said first memory for storing said output image;
- and
- responsive to said browsing for said stripes in said second memory, replacing a stripe of input image information within said stripes with a subsequent stripe of input image information.
A method comprising:
- reading a first stripe of pixel values from an input image stored in a first memory, the first stripe comprising a first area extending across a portion in said input image, said first area comprising a row of pixel values;
- reading a second stripe of pixel values from the input image stored in the first memory, the second stripe comprising a second area extending across said portion in said input image, said second area comprising two or more rows of pixel values;
- and
- processing the first stripe and the second stripe by:
- determining an initial pixel location in an output image corresponding to an intersection between a boundary of a region of interest of said input image and at least one of said first stripe or said second stripe in a second memory;
- browsing at least one path from said initial pixel location across output image pixel locations to locate one or more output image pixel locations lying within said first area or said second area in said second memory, said browsing comprising testing at least one output image pixel location adjacent to a browsed output image pixel location and said first area or said second area to determine a subsequent path for said browsing;
- for one or more output image pixels within said first area or said second area of said input image:
- calculating a pixel value for said output image pixel location by interpolating a plurality of pixel values from said input image in said second memory surrounding said output image pixel location;
- and
- writing said pixel value to said first memory for storing said output image;
- and
- responsive to said browsing, replacing at least one of said first stripe or said second stripe with a subsequent stripe of input image information.
A non-transitory computer program product comprising a computer readable medium storing computer executable instructions that, when executed, configure a computing device to perform operations comprising:
- reading a first stripe of pixel values from an input image stored in a first memory, the first stripe comprising a first area extending across a portion in said input image, said first area comprising a row of pixel values;
- reading a second stripe of pixel values from the input image stored in the first memory, the second stripe comprising a second area extending across said portion in said input image, said second area comprising two or more rows of pixel values;
- and
- processing the first stripe and the second stripe by:
- determining an initial pixel location in an output image corresponding to an intersection between a boundary of a region of interest of said input image and at least one of said first stripe or said second stripe in a second memory;
- browsing at least one path from said initial pixel location across output image pixel locations to locate one or more output image pixel locations lying within said first area or said second area in said second memory, said browsing comprising testing at least one output image pixel location adjacent to a browsed output image pixel location and said first area or said second area to determine a subsequent path for said browsing;
- for one or more output image pixels within said first area or said second area of said input image:
- calculating a pixel value for said output image pixel location by interpolating a plurality of pixel values from said input image in said second memory surrounding said output image pixel location;
- and
- writing said pixel value to said first memory for storing said output image;
- and
- responsive to said browsing, replacing at least one of said first stripe or said second stripe with a subsequent stripe of input image information.
Dependencies are inferred from the claim text.