An image production device, such as a printer, computer, and so forth, can produce an image for output, such as printing, displaying, storing, communicating, and so forth. To produce an image for output, input image data can be retrieved. Processing can be applied to the input image data to create an image in a form that is appropriate for output.
Some implementations are described with respect to the following figures.
An image production device can produce an image for output, such as printing, displaying, storing, communicating, and so forth. As examples, the image production device can be a printer, such as a multi-function printer or other type of printer. A multi-function printer (or more generally a “multi-function device”) can include a scanner to scan an object, and a printing unit to print an output image based on a scanned version of the object.
In other examples, the image production device can be a computer, a handheld device, a storage device, or any other type of electronic device that is capable of producing an image for output. More generally, a “device” can refer to any arrangement that includes processing circuitry for performing specified tasks.
To produce an image for output, input image data can be received by the image production device. For example, the input image data can be generated by the image production device, such as by using an image capture device such as a camera or scanner of the image production device. The image capture device can be used to capture an image of an object. The object can be a document, a person, or any other type of object. In other examples, input image data can be received from a remote electronic device, such as over a network or by use of a removable storage media.
For improved efficiency when processing an image, input image data can be divided into multiple tiles (which can be non-overlapping), where each tile can have a specified size (e.g. a tile can be M pixels by N pixels, M>1, N>1). Each tile contains a corresponding portion of the input image data. The tiles can be stored in a memory of the image production device. In some cases, the input image data in the tiles can be compressed.
Subsequently, to produce an output image (an image for output such as printing, displaying, storing, communicating, etc.), the image production device can retrieve the input image data tiles, and can decompress each input image data tile to produce an output image. A benefit of dividing an image into tiles is that any manipulation or processing can be applied on a specific subset of the tiles, rather than on the entire image. As a result, for input image data stored in compressed form, just the subset of tiles have to be decompressed for manipulation or other processing, while the remainder of the tiles can remain in compressed form. Not having to decompress the entirety of the input image data for processing can reduce storage and processing resource demands.
Certain tiles of image data can correspond to relatively simple image elements, such as a border, a line, a bitmap font, a barcode, and so forth. Traditionally, even for a tile that corresponds to a simple image element, the respective portion of the input image data (which can be a high resolution input image data that includes a relatively large amount of content) is still employed to produce the tile. For example, the input image data portion is processed (e.g. compressed) and stored as a respective tile in compressed form—this consumes both processing and storage resources of the image production device.
In accordance with some implementations, to improve efficiency, at least some selected image tiles can be created without using a respective input image data portion. In this way, a relatively low resolution representation of each such selected image tile can be used, such that compressing of a high resolution image data portion can be avoided.
Although depicted as a single block in
The memory 104 can store a table of contents (ToC) 108. The ToC 108 is an example of a data structure that links tiles of an image together, in a specified order. For example, the ToC 108 can link tiles 113 of an image 112 shown in
In some implementations, high resolution input image data portions do not have to be compressed and stored for certain selected tiles 113 of the image 112. The selected tiles 113 can correspond to relatively simple image elements, such as a border, a line, a bitmap font, a barcode. Instead, the controller 102 is able to use color information 114 that is included in a respective ToC entry 110 to generate image data for each such selected tile 113. As shown in
The color information 114 in a ToC entry 110 can specify a color (or multiple colors) for a respective tile 113. Color information 114 in different ToC entries 110 can specify different colors or the same color.
The controller 102 can use the color information 114 of a respective ToC entry 110 to produce image data in a selected tile 113 of the image 112, without having to use any respective input image data portion. The generated tiles 113 can then be stored in the memory 104 for later retrieval for producing an output image for output, such as for printing, displaying, storing, communicating, and so forth.
Although reference is made to using the color information 114 of a respective ToC entry 110 to produce a tile that corresponds to a relatively simple image element, it is noted that techniques or mechanisms according to some implementations can be used to produce a tile that corresponds to a more complex image element.
Note also that while some selected tiles 113 of the image 112 are produced using the color information 114 of respective ToC entries 110 (without using the respective input image data portions), other tiles 113 of the image 112 can be produced using respective input image data portions 106. Such other tiles 113 containing the respective input image data portions 106 can be compressed and stored in the memory 104 in compressed form. However, note that compression does not have to be applied on selected tiles 113 produced from the respective color information 114 without using respective input image data portions.
The color information 114 can have a specific bit length, such as a long word (64 bits) or some other length. It is noted that the color information 114 is usually much shorter in bit length than a respective high resolution input image data portion that would traditionally be used to produce the image tile 202.
In an example according to
In some implementations, an image tile (113, 202, 304, or 404) created from respective color information 114 and possibly mask data (302 or 402) can be a full resolution decompressed image portion. In some examples, a full resolution decompressed image portion can be represented by an P-bit per pixel per color representation, where P is a specified number (such as 8 or another number).
The controller 102 creates (at 504) image data in the given tile using the color information of the given entry of the data structure as part of producing the image. The creating of the image data in the given tile using the color information of the given entry is performed without using any input image data portion for the given tile.
An indicator (which in the example of
Another element of the ToC entry 10 is a tile size element 606, which specifies the size of the respective tile (which can be a compressed tile). An alpha value element 608 in the ToC entry 110 specifies whether or not alpha blending is to be applied. An example of alpha blending is depicted in
A placement information element 610 in the ToC entry 110 specifies a placement of the respective tile in an image. For example, the placement information 610 can be expressed in the form of an offset from a base address for the image or a portion of the image.
The ToC entry 110 also includes a next ToC entry pointer element 612 that stores a pointer to the next ToC entry. The next ToC entry pointer element 612 identifies the ToC entry for the next tile. The next ToC entry pointers in respective ToC entries 110 allow linking of tiles of an image.
As noted above, in some implementations, machine-readable instructions can be executable on the controller 102 to perform the foregoing tasks. Such machine-readable instructions are loaded for execution on a processing circuit, in the form of the controller 102.
The machine-readable instructions can be stored in one or multiple non-transitory computer-readable or machine-readable storage media. The storage media can include different forms of memory including semiconductor memory devices such as dynamic or static random access memories (DRAMs or SRAMs), erasable and programmable read-only memories (EPROMs), electrically erasable and programmable read-only memories (EEPROMs) and flash memories; magnetic disks such as fixed, floppy and removable disks; other magnetic media including tape; optical media such as compact disks (CDs) or digital video disks (DVDs); or other types of storage devices. Note that the instructions discussed above can be provided on one computer-readable or machine-readable storage medium, or can be provided on multiple computer-readable or machine-readable storage media distributed in a large system having possibly plural nodes. Such computer-readable or machine-readable storage medium or media is (are) considered to be part of an article (or article of manufacture). An article or article of manufacture can refer to any manufactured single component or multiple components. The storage medium or media can be located either in the machine running the machine-readable instructions, or located at a remote site from which machine-readable instructions can be downloaded over a network for execution.
In the foregoing description, numerous details are set forth to provide an understanding of the subject disclosed herein. However, implementations may be practiced without some of these details. Other implementations may include modifications and variations from the details discussed above. It is intended that the appended claims cover such modifications and variations.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2014/047990 | 7/24/2014 | WO | 00 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2016/014060 | 1/28/2016 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
6038339 | Hubel | Mar 2000 | A |
6471332 | Vilanova et al. | Oct 2002 | B1 |
6714196 | McCormack | Mar 2004 | B2 |
6829063 | Allebach | Dec 2004 | B1 |
6912664 | Ranganathan | Jun 2005 | B2 |
7212217 | Feather et al. | May 2007 | B1 |
7813588 | Bradburn | Oct 2010 | B2 |
20010041014 | Kaneda | Nov 2001 | A1 |
20030123093 | Hattori | Jul 2003 | A1 |
20050036701 | Miyazawa et al. | Feb 2005 | A1 |
20060170986 | Iriyama | Aug 2006 | A1 |
20070025627 | Hasegawa et al. | Feb 2007 | A1 |
20080144952 | Chen | Jun 2008 | A1 |
20110001994 | Matsuda | Jan 2011 | A1 |
20110157619 | Nelson et al. | Jun 2011 | A1 |
20110216969 | Chu et al. | Sep 2011 | A1 |
20130058571 | Jang et al. | Mar 2013 | A1 |
20130308875 | Jacobson et al. | Nov 2013 | A1 |
20140079297 | Tadayon | Mar 2014 | A1 |
20140093186 | Sample et al. | Apr 2014 | A1 |
20140195921 | Grosz | Jul 2014 | A1 |
20140320928 | Kashti | Oct 2014 | A1 |
20160366036 | Gupta | Dec 2016 | A1 |
20170019487 | Maheshwari | Jan 2017 | A1 |
20170054871 | Prenn | Feb 2017 | A1 |
20180024901 | Tankersley | Jan 2018 | A1 |
Number | Date | Country |
---|---|---|
101517575 | Aug 2009 | CN |
101930461 | Dec 2010 | CN |
102985906 | Mar 2013 | CN |
0527097 | Feb 1993 | EP |
Entry |
---|
International Searching Authority. International Search Report. Dated Mar. 15, 2015. Application No. PCT/US2014/047990. Filing date Jul. 24, 2014. |
Paint Shop Pro User Guide, (Research Paper), Apr. 11, 2003, 446 Pages. |
Number | Date | Country | |
---|---|---|---|
20170054871 A1 | Feb 2017 | US |