IP Library Granted Patent US 9,477,996
Granted Patent B2
US 9,477,996 · App. 14/710,163 · Granted Oct 25, 2016

Method and system of processing a viewport within large format imagery

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 9,477,996
App. No.
14/710,163
Granted
Oct 25, 2016
Kind
B2
Abstract

A computer system for processing a viewport within an image arranged as a matrix of tiles from a container file is disclosed herein. The computer system includes one or more processors configured to: (a) receive a request to read data of the viewport starting from a point of origin of the viewport, the viewport having a pixel width and a pixel height, the viewport being a portion of an image that is stored in a record within the file container; (b) compute column numbers or row numbers, or both, of the tiles containing the viewport; and (c) read in parallel or asynchronously each row or each column of tiles containing the viewport.

Claims (77)

1. A computer system for processing a viewport within an image arranged as a matrix of tiles from a container file, the computer system comprising:

one or more processors configured to:

receive a request to read data of the viewport starting from a point of origin of the viewport, the viewport having a pixel width and a pixel height, the viewport being a portion of an image that is stored in a record within the file container;

compute column numbers or row numbers, or both, of the tiles containing the viewport; and

read in parallel or asynchronously each row or each column of tiles containing the viewport.

2. The computer system according to claim 1 , wherein the one or more processors are configured to reading record metadata of the record containing the image that includes the viewport, the record metadata includes a record metadata section at absolute container file offset O rm , where O rm =S fcm +(S r ×N), where S fcm corresponds to a size of the record metadata section and S r corresponds to a size of the record, and N is a record number.

3. The computer system according to claim 1 , wherein the one or more processors are configured to determine whether the image containing the viewport is stored:

uncompressed, tiled arranged in a column major order, or

compressed, tiled and arranged in column major order, or

compressed, tiled and arranged in a row-major order, or

in a third party file format.

4. The computer system according to claim 3 , wherein if the image is uncompressed, tiled arranged in a column major order, the one or more processors are configured to:

compute top left and bottom right column numbers of the tiles containing the viewport, the viewport having a top left corner at X 0 ,Y 0 , and having a pixel width V w and pixel height V h ,

for each column between the top left column number and the bottom right column number, compute an absolute aligned offset from a start of the container file, and an aligned size of a strip starting from line Y 0 to and including line Y 0 +V h −1, and

collect and process only pixels that reside within bounds of the viewport to generate the output viewport in a single raster.

5. The computer system according to claim 3 , wherein if the record contains an image compressed, tiled, with the tiles arranged in row-major order, the one or more processors are configured to:

compute top left and bottom right column and row numbers of the tiles containing the viewport, the viewport having a top left corner at X 0 ,Y 0 , and having a pixel width V w and pixel height V h ,

for each row between the top left row number and the bottom right row number, launch parallel or asynchronous operations to read tiles for each row.

6. The computer system according to claim 5 , wherein the one or more processors are configured to read an entire tile strip for each row in a single read operation or reading one or more individual tiles in parallel or in asynchronous operation.

7. The computer system according to claim 6 , wherein the one or more processors are configured to read starting from a storage device block size (SDBS) aligned location prior to or equal to a start of an initial tile in the tile strip and ending at a storage device block size (SDBS) aligned location after or equal to an end of a last tile in the tile strip.

8. The computer system according to claim 6 , wherein the one or more processors are configured to read multiple individual tiles in parallel or asynchronously, wherein each tile read starts from a storage device block size (SDBS) aligned location prior to or equal to the start of a tile and ends at a storage device block size (SDBS) aligned location after or equal to the end of the same tile.

9. The computer system according to claim 8 , wherein the one or more processors are configured to collect and process only pixels that reside within viewport bounds to generate an output viewport in a single raster.

10. The computer system according to claim 3 , wherein if the record contains an image stored compressed, tiled, with the tiles arranged in column-major order, the one or more processors are configured to:

compute top left and bottom right column and row numbers of the tiles containing the viewport, the viewport having a top left corner at X 0 ,Y 0 , and having a pixel width V w and pixel height V h , and

for each column, launch parallel or asynchronous operations to read tiles for each column between the top left column number and the bottom right column number.

11. The computer system according to claim 10 , wherein the one or more processors are configured to read an entire tile strip for the column in a single read operation or read one or more individual tiles in parallel or in asynchronous operation.

12. The computer system according to claim 11 , wherein the one or more processors are configured to read starting from a storage device block size (SDBS) aligned location prior to or equal to a start of an initial tile and ending at a storage device block size (SDBS) aligned location after or equal to an end of a last tile.

13. The computer system according to claim 11 , wherein the one or more processors are configured to read multiple individual tiles in parallel or asynchronously, wherein each tile read starts from a storage device block size (SDBS) aligned location prior to or equal to a start of a tile and ends at a storage device block size (SDBS) aligned location after or equal to the end of the same tile.

14. The computer system according to claim 13 , wherein the one or more processors are configured to collect and process only pixels that reside within the viewport bounds to generate the output viewport in a single raster.

15. The computer system according to claim 1 , wherein if the record contains an image stored in a third party tiled file format, the one or more processors are configured to:

compute a top left and bottom right column and row numbers of the tiles containing the viewport, the viewport having a top left corner at X 0 ,Y 0 , and having a pixel width V w and pixel height V h ,

determine that record metadata of the record containing the image that includes the viewport holds a table of offsets and sizes of each tile in the image that exists in a known third-party file format, and

determine whether data in the image is stored in row-major order or column-major order.

16. The computer system according to claim 15 , wherein if the image data is stored in the column-major order, the one or more processors are configured to:

compute a top left and bottom right column and row numbers of the tiles containing the viewport,

for each column between the top left column number and the bottom right column number, launch parallel or asynchronous operations to read tiles for each column, and

read an entire tile strip for each column in a single read operation or reading one or more individual tiles in parallel or in asynchronous operation.

17. The computer system according to claim 15 , if the image data is stored in row-major order, the one or more processors are configured to:

compute a top left and bottom right column and row numbers of the tiles containing the viewport,

for each row between the top left row number and the bottom right row number, launch parallel or asynchronous operations to read tiles for each row, and

read the entire tile strip for each row in a single read operation or reading one or more individual tiles in parallel or in asynchronous operation.

18. The computer system according to claim 1 , wherein the one or more processors are configured to receiving a hypertext transfer protocol (HTTP) request.

19. The computer system according to claim 1 , wherein the one or more processors are configured to output the data of the viewport.

20. The computer system according to claim 19 , wherein the one or more processors are configured to transmit the data of the viewport using hypertext transfer protocol (HTTP) or display the data of the viewport on a display device.

21. A computer system for processing a plurality of viewports in a plurality of images, each viewport being wholly contained within an image in the plurality of images, each image in the plurality of images being arranged as a matrix of tiles, the plurality of images being stored in a container file, the computer system comprising:

one or more processors configured to:

receive a request to read data of each of the plurality of viewports starting from a point of origin of each of the plurality of viewports, each viewport having a pixel width and a pixel height, and each viewport being a portion of an image in the plurality of images, each image is stored in a record in a plurality of records within the file container;

compute column numbers or row numbers, or both, of the tiles containing each viewport; and

read in parallel or asynchronously each row or each column of tiles containing each viewport.

22. The computer system according to claim 21 , wherein the one or more processors are configured to output each of the plurality of viewports.

23. The computer system according to claim 21 , wherein the point of origin of each of the plurality of viewports is fixed from one viewport contained in one image to another viewport contained in another image.

24. The computer system according to claim 21 , wherein the point of origin of each of the plurality of viewports is different from one viewport to another viewport.

25. The computer system according to claim 21 , wherein the pixel width and the pixel height of each viewport in the plurality of viewports is the same for all the viewports.

26. The computer system according to claim 21 , wherein the one or more processors are configured to read record metadata of each record containing a corresponding image that contains each viewport.

27. A method of processing a plurality of viewports in a plurality of images, each viewport being wholly contained within an image in the plurality of images, each image in the plurality of images being arranged as a matrix of tiles, the plurality of images being stored in a container file, the method being implemented by a computer system that includes one or more processors configured to execute processing operations, the method comprising:

computing, by the one or more processors, column numbers or row numbers, or both, of tiles containing each viewport, starting from a point of origin of each of the plurality of viewports, the point of origin of each of the plurality of viewports is fixed or different from one viewport contained in one image to another viewport contained in another image, each viewport having a pixel width and a pixel height, and each viewport being a portion of an image in the plurality of images, each image is stored in a record in a plurality of records within the file container; and

reading, by the one or more processors, in parallel or asynchronously each row or each column of tiles containing each viewport.

28. The method according to claim 27 , further comprising outputting each of the plurality of viewports.

29. The method according to claim 27 , wherein the pixel width and the pixel height of each viewport in the plurality of viewports is the same for all the viewports.

30. The method according to claim 27 , further comprising reading, by the one or more processors, record metadata of each record containing a corresponding image that contains each viewport.

31. The method according to claim 27 , further comprising reading an entire tile strip for each row or for each column in a single read operation or reading one or more individual tiles in parallel or in asynchronous operation.

32. The method according to claim 31 , wherein reading the tile strip in parallel or in asynchronous operation comprises reading starting from a storage device block size (SDBS) aligned location prior to or equal to a start of an initial tile in the tile strip and ending at a storage device block size (SDBS) aligned location after or equal to an end of a last tile in the tile strip.

33. The method according to claim 31 , further comprising reading multiple individual tiles in parallel or asynchronously, wherein each tile read starts from a storage device block size (SDBS) aligned location prior to or equal to the start of a tile and ends at a storage device block size (SDBS) aligned location after or equal to the end of the same tile.

34. A method of processing a plurality of viewports in a plurality of images, each viewport being wholly contained within an image in the plurality of images, each image in the plurality of images being arranged as a matrix of tiles, the plurality of images being stored in a container file, the method being implemented by a computer system that includes one or more processors configured to execute processing operations, the method comprising:

receiving, by the one or more processors, a request to read data of a first viewport starting from a first point of origin of the first viewport and to read a second viewport starting from a second point of origin of the second viewport, the first viewport having a first pixel width and a first pixel height and the second viewport having a second pixel width and a second pixel height, the first viewport being a portion of a first image in the plurality of images and containing a plurality of tiles and the second viewport being a portion of a second image in the plurality of images and containing a plurality of tiles, the first image is stored in a first record within the file container and the second image is stored in a second record within the file container;

computing, by the one or more processors, column numbers or row numbers, or both, of tiles containing the first viewport;

computing, by the one or more processors, column numbers or row numbers, or both, of tiles containing the second viewport;

reading, by the one or more processors, in parallel or asynchronously each row or each column of tiles containing the first viewport; and

reading, by the one or more processors, in parallel or asynchronously each row or each column of tiles containing the second viewport.

35. The method according to claim 34 , further comprising outputting the first viewport and the second viewport in sequence.

36. The method according to claim 35 , wherein outputting the first viewport and the second viewport comprises displaying the first viewport and the second viewport in sequence on a display device.

37. The method according to claim 34 , wherein the first point of origin and the second point of origin are the same.

38. The method according to claim 34 , wherein the first point of origin and the second point of origin are different.

39. The method according to claim 34 , wherein the first pixel width is the same as the second pixel width and the first pixel height is the same as the second pixel height.

40. The method according to claim 34 , further comprising reading, by the one or more processors, record metadata of the first record and metadata of the second record.

41. The method according to claim 34 , wherein reading each row or each column of tiles containing the first viewport comprises reading each row or each column of tiles starting from a storage device block size (SDBS) aligned location prior to or equal to a start of an initial tile in the plurality of tiles and ending at a storage device block size (SDBS) aligned location after or equal to an end of a last tile in the plurality of tiles.

42. The method according to claim 34 , wherein reading each row or each column of tiles containing the second viewport comprises reading each row or each column of tiles starting from a storage device block size (SDBS) aligned location prior to or equal to a start of an initial tile in the plurality of tiles and ending at a storage device block size (SDBS) aligned location after or equal to an end of a last tile in the plurality of tiles.

Assignments (9)
SUPERPRIORITY PATENT SECURITY AGREEMENT Recorded Oct 6, 2025
From: CUBIC CORPORATION; CUBIC DEFENSE APPLICATIONS INC.; CUBIC DIGITAL INTELLIGENCE INC.; CUBIC ITS, INC.; CUBIC SECURE COMMUNICATIONS, LLC; CUBIC TOTAL LEARNING PLATFORM, LLC; CUBIC TRANSPORTATION SYSTEMS, INC.; GATR TECHNOLOGIES INC.; NUVOTRONICS INC.
To: BARCLAYS BANK PLC
Reel/Frame 073008/0761 →
RELEASE OF SECURITY INTEREST Recorded Jul 30, 2025
From: ALTER DOMUS (US) LLC
To: CUBIC CORPORATION; CUBIC DEFENSE APPLICATIONS, INC.; CUBIC DIGITAL INTELLIGENCE, INC.
Reel/Frame 072278/0272 →
RELEASE OF SECURITY INTEREST Recorded Jul 30, 2025
From: ALTER DOMUS (US) LLC
To: CUBIC CORPORATION; CUBIC DIGITAL SOLUTIONS LLC; NUVOTRONICS, INC.
Reel/Frame 072281/0176 →
RELEASE OF SECURITY INTEREST AT REEL/FRAME 056393/0281 Recorded Jul 28, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: CUBIC CORPORATION; CUBIC DEFENSE APPLICATIONS, INC.; CUBIC DIGITAL SOLUTIONS LLC (FORMERLY PIXIA CORP.)
Reel/Frame 072282/0124 →
SECURITY INTEREST Recorded May 2, 2025
From: CUBIC DEFENSE APPLICATIONS, INC.; CUBIC DIGITAL INTELLIGENCE, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 071161/0299 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 18, 2024
From: PIXIA CORP.
To: CUBIC DIGITAL INTELLIGENCE, INC.
Reel/Frame 066816/0198 →
FIRST LIEN SECURITY AGREEMENT Recorded May 26, 2021
From: CUBIC CORPORATION; PIXIA CORP.; NUVOTRONICS, INC.
To: BARCLAYS BANK PLC
Reel/Frame 056393/0281 →
SECOND LIEN SECURITY AGREEMENT Recorded May 26, 2021
From: CUBIC CORPORATION; PIXIA CORP.; NUVOTRONICS, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 056393/0314 →
RELEASE OF SECURITY INTEREST Recorded Jun 14, 2019
From: SILICON VALLEY BANK
To: PIXIA CORP.
Reel/Frame 049477/0358 →