IP Library › Granted Patent US 10,255,659
Granted Patent B2
US 10,255,659 · App. 15/238,873 · Granted Apr 9, 2019

Method of and apparatus for scaling data arrays

Inventors: Michal Bogusz (Cambridge, GB); Erik Persson (Lund, SE)
Assignee: Arm Limited
G06T3/40G06T1/60
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,255,659
App. No.
15/238,873
Granted
Apr 9, 2019
Kind
B2
Abstract

A scaling apparatus for scaling data arrays, such as images, comprises first horizontal scaling stage circuitry operable to scale a data array input to the scaling apparatus in the horizontal direction, one or more line memories for storing horizontal lines for a data array, wherein the or each line memory is for storing a horizontal line of data for the data array, vertical scaling stage circuitry operable to read data stored in the one or more line memories and to scale the read data in the vertical direction, and second horizontal scaling stage circuitry operable to scale a data array in the horizontal direction.

Claims (48)

1. A method of scaling a data array using a scaling apparatus that comprises one or more line memories, wherein the or each line memory is for storing a horizontal line of data for a data array, the method comprising:

determining whether a horizontal size of an input data array is larger than the size of a line memory of the one or more line memories;

performing a first horizontal scaling to downscale the input data array in the horizontal direction when it is determined that the horizontal size of the input data array is larger than the size of a line memory of the one or more line memories, thereby forming a horizontally scaled data array;

storing horizontal lines of data for the horizontally scaled data array in the one or more line memories;

reading stored data corresponding to the horizontally scaled data array from the one or more line memories and performing vertical scaling on the read data to scale the horizontally scaled data array in the vertical direction to form a vertically scaled data array; and

selectively performing second horizontal scaling on the vertically scaled data array to scale the vertically scaled data array in the horizontal direction to form an output data array; and

outputting the output data array.

2. A method according to claim 1 , comprising

performing the second horizontal scaling to upscale the vertically scaled data array in the horizontal direction when the horizontal size of the data array to be output is larger than the size of a line memory.

3. A method according to claim 1 , comprising

omitting the first horizontal scaling when the horizontal size of the input data array is smaller than or equal to the size of a line memory.

4. A method according to claim 1 , comprising

omitting the second horizontal scaling when the horizontal size of the data array to be output is smaller than or equal to the size of a line memory.

5. A method according to claim 1 , comprising:

performing first horizontal scaling on an input data array to scale the data array in the horizontal direction;

storing horizontal lines of the horizontally scaled data array in one or more line memories, wherein the or each line memory is for storing a horizontal line of data for the data array;

reading data from the one or more line memories and performing vertical scaling on the read data to scale the data array in the vertical direction; and

performing second horizontal scaling on the vertically scaled data array to scale the data array in the horizontal direction; and outputting an output data array.

6. A method according to claim 5 , further comprising at least one of:

when the horizontal size of the input data array is larger than the size of a line memory, performing the first horizontal scaling to downscale the input data array in the horizontal direction; and

when the horizontal size of the output data array is larger than the size of a line memory, performing the second horizontal scaling to upscale the output data array in the horizontal direction.

7. A method according to claim 1 , wherein the each line memory is capable of storing data entries for a number of data positions that corresponds to a fraction of the maximum number of data positions in the horizontal direction that can be handled by the first and second horizontal scaling.

8. A method according to claim 7 , wherein the fraction is half.

9. A method according to claim 1 , wherein the data array is an image.

10. A scaling apparatus for scaling data arrays comprising:

first horizontal scaling stage circuitry operable to scale a data array input to the scaling apparatus in the horizontal direction;

one or more line memories for storing horizontal lines for a data array received from the first horizontal scaling stage circuitry, wherein the or each line memory is for storing a horizontal line of data for the data array;

vertical scaling stage circuitry operable to read data stored in the one or more line memories and to scale the read data in the vertical direction; and

second horizontal scaling stage circuitry operable to scale in the horizontal direction a data array received from the vertical scaling stage circuitry;

wherein the scaling apparatus comprises determination circuitry operable to determine whether the horizontal size of the input data array is larger than the size of a line memory, and wherein the first horizontal scaling stage circuitry is operable to downscale the input data array in the horizontal direction when it is determined that the horizontal size of the input data array is larger than the size of a line memory.

11. A scaling apparatus according to claim 10 , wherein

the second horizontal scaling stage circuitry is operable to upscale the vertically scaled data array in the horizontal direction when the horizontal size of the data array to be output is larger than the size of a line memory.

12. A scaling apparatus according to claim 10 , wherein

the first horizontal scaling stage circuitry is operable to pass an input data array without scaling when the horizontal size of the input data array is smaller than or equal to the size of a line memory.

13. A scaling apparatus according to claim 10 , wherein

the second horizontal scaling stage circuitry is operable to pass the vertically scaled data array without scaling when the horizontal size of the data array to be output is smaller than or equal to the size of a line memory.

14. A scaling apparatus according to claim 10 , wherein each line memory is capable of storing data entries for a number of data positions that corresponds to a fraction of the maximum number of data positions in the horizontal direction that can be handled by the first horizontal scaling stage circuitry and the second horizontal scaling stage circuitry.

15. A scaling apparatus according to claim 14 , wherein the fraction is half.

16. A scaling apparatus according to claim 10 , wherein the data array is an image.

17. A scaling apparatus according to claim 10 , further comprising one or more further horizontal and/or vertical scaling stage circuitries operable to scale a data array before outputting an output data array.

18. A scaling apparatus according to claim 10 , wherein the vertical scaling is performed by polyphase filtering, and wherein the number of line memories corresponds to the number of taps used by the polyphase filter.

19. A non-transitory computer readable storage medium storing computer software code which when executing on a processor performs a method of scaling a data array using a scaling apparatus that comprises one or more line memories, wherein the or each line memory is for storing a horizontal line of data for a data array comprising:

determining whether a horizontal size of an input data array is larger than the size of a line memory of the one or more line memories;

performing a first horizontal scaling to downscale the input data array in the horizontal direction when it is determined that the horizontal size of the input data array is larger than the size of a line memory of the one or more line memories, thereby forming a horizontally scaled data array;

storing horizontal lines of data for the horizontally scaled data array in the one or more line memories;

reading stored data corresponding to the horizontally scaled data array from the one or more line memories and performing vertical scaling on the read data to scale the horizontally scaled data array in the vertical direction to form a vertically scaled data array; and

selectively performing second horizontal scaling on the vertically scaled data array to scale the vertically scaled data array in the horizontal direction to form an output data array; and

outputting the output data array.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 17, 2016
From: BOGUSZ, MICHAL KAROL; PERSSON, ERIK
To: ARM LTD
Reel/Frame 039709/0546 →
Priority Claims (1)
GB 1515366.1 · Aug 28, 2015 · national
Continuity (1)
Related Publication 20170061577A1 · Mar 2, 2017