Image scaling techniques
Abstract
A procedure with: Receiving (702) blocks of pixel data of an image; Receiving (704) an image scaling factor; directionally interpolating (710) the blocks of pixel data if the image scale factor is greater than 1.0 and less than 2.0; Downsampling (714) the directionally interpolated blocks of pixel data when the image scale factor is greater than 1.0 and less than 2.0; Color enhancing (716) the down-sampled directionally interpolated blocks of pixel data when the image scale factor is greater than 1.0 and less than 2.0; Setting (718) the color enhanced, down-sampled, directionally interpolated blocks of pixel data to a luminosity when the image scale factor is greater than 1.0 and less than 2.0; and Outputting (756) the luminance-enhanced, color-enhanced, down-sampled, directionally interpolated blocks of pixel data as a scaled image when the image scaling factor is greater than 1.0 and less than 2.0.

Term
8.9 yearsleft in the term
Expires 2 September 2035.
- Priority
- Filed
- Granted
- Today
- Expires
12 claims: 2 independent, 10 dependent
- 1A procedure with:Ein Verfahren mit: Empfangen (702) von Blöcken an Pixeldaten eines Bildes;Receiving (702) blocks of pixel data of an image;Empfangen (704) eines Bildskalierungsfaktors;Receiving (704) an image scaling factor;directionally interpolating (710) the blocks of pixel data if the image scale factor is greater than 1.0 and less than 2.0;richtungsabhängiges Interpolieren (710) der Blöcke an Pixeldaten, wenn der Bildskalierungsfaktor größer ist als 1,0 und kleiner ist als 2,0;Abwärts-abtasten (714) der richtungsabhängig interpolierten Blöcke an Pixeldaten, wenn der Bildskalierungsfaktor größer ist als 1,0 und kleiner ist als 2,0;Downsampling (714) the directionally interpolated blocks of pixel data when the image scale factor is greater than 1.0 and less than 2.0;Color enhancing (716) the down-sampled directionally interpolated blocks of pixel data when the image scale factor is greater than 1.0 and less than 2.0;Farbverstärken (716) der abwärts-abgetasteten, richtungsabhängig interpolierten Blöcke an Pixeldaten, wenn der Bildskalierungsfaktor größer ist als 1,0 und kleiner ist als 2,0;Festlegen (718) der farbverstärkten, abwärts-abgetasteten, richtungsabhängig interpolierten Blöcke an Pixeldaten auf eine Leuchtstärke, wenn der Bildskalierungsfaktor größer ist als 1,0 und kleiner ist als 2,0;und Setting (718) the color enhanced, down-sampled, directionally interpolated blocks of pixel data to a luminosity when the image scale factor is greater than 1.0 and less than 2.0;and Ausgeben (756) der auf eine Leuchtstärke festgelegten, farbverstärkten, abwärts-abgetasteten, richtungsabhängig interpolierten Blöcke an Pixeldaten als ein skaliertes Bild, wenn der Bildskalierungsfaktor größer ist als 1,0 und kleiner ist als 2,0. Outputting (756) the luminance-enhanced, color-enhanced, down-sampled, directionally interpolated blocks of pixel data as a scaled image when the image scaling factor is greater than 1.0 and less than 2.0.
- 9A procedure with:Ein Verfahren mit: Empfangen mehrerer Blöcke an Pixeldaten eines Bildes;Receiving a plurality of blocks of pixel data of an image;direction-dependent interpolation of the plurality of blocks of pixel data, wherein direction-dependent interpolation of the plurality of blocks of pixel data is the sum of metrics from absolute differencesM.45=∑45° Couples i,j|lumi−lumj|M.135=∑135° Couples i,j|lumi−lumj|the pixel luminance for diagonally adjacent pixels for each block includes;richtungsabhängiges Interpolieren der mehreren Blöcke an Pixeldaten, wobei richtungsabhängiges Interpolieren der mehreren Blöcke an Pixeldaten die Summe von Metriken aus Absolutdifferenzen M45=∑45° Paare i,j|lumi−lumj|M135=∑135° Paare i,j|lumi−lumj|der Pixel-Leuchtstärke für diagonal benachbarte Pixel für jeden Block umfasst;Color enhancement of the directionally interpolated blocks of pixel data;Farbverstärken der richtungsabhängig interpolierten Blöcke an Pixeldaten;iteratively repeating the combination of directional interpolation and color enhancement until the predetermined scaling is reached;and iteratives Wiederholen der Kombination aus richtungsabhängiger Interpolation und Farbverstärkung, bis die vorbestimmte Skalierung erreicht ist;und Ausgeben der farbverstärkten, richtungsabhängig interpolierten Blöcke an Pixeldaten als ein skaliertes Bild, wenn die vorbestimmte Skalierung erreicht ist. Outputting the color-enhanced, directionally interpolated blocks of pixel data as a scaled image when the predetermined scaling is reached.
Independent claims2
40 paragraphs in 3 sections, as filed
BACKGROUND OF THE INVENTION
Computing systems, displays, and other similar electronic devices have made major contributions to the development of modern society and are used in a number of applications to achieve beneficial effects. Numerous devices, such as desktop personal computers (PC), portable PCs, tablet PCs, network book computers, intelligent telephones, service provider computers or Servers, televisions, and the like have enabled increased productivity and reduced costs in communicating and analyzing data in most entertainment, educational, business, and scientific fields. A common aspect of computing systems is the display of images and the ability to scale (e.g. enlarge) images on them.
There are numerous techniques for upscaling images on electronic devices. However, there is a shortcoming in the current state of the art in terms of the speed of the techniques for scaling the images and / or the resulting quality of the scaled images. Hence, there is a constant pursuit of image scaling techniques that provide image scaling with very good quality and faster speed. the<de-docref CY="US" DNUM="7236191" KI="B2">US 7236 191 B2</de-docref> describes a method for image processing in which an interpolation between 2 color components is used to create a new image.
OVERVIEW OF THE INVENTION
The present technique can be best understood by referring to the following description and accompanying drawings, which are used to illustrate embodiments of the present technique directed to image scaling techniques.
In one embodiment, a method according to claim 1 for image scaling is provided with direction-dependent interpolation of a plurality of blocks of pixel data of a received image. The direction-dependent interpolated blocks of pixel data are color-enhanced or color-sharpened. The color-enhanced directional interpolated blocks of pixel data are set to a luminosity to produce a scaled image.
In a further embodiment, a method for image scaling according to claim 9 is provided with direction-dependent interpolation of a plurality of blocks of pixel data of a received image. The directionally interpolated blocks of pixel data are color enhanced to produce a scaled image.
This overview is provided to introduce in simplified form a selection of concepts that are further described below in the detailed description. This overview is not intended to indicate key or essential features of the claimed subject matter, nor is it intended that the overview be used to limit the scope of the claimed subject matter.
Figure list
Embodiments of the present technology are shown by way of example and not of limitation in the figures of the accompanying drawings, in which like reference characters designate similar elements, and in which:<ul list-style="none" id="ul_0001"><li id="ul_0001_0001"><figref>1</figref> Figure 3 shows a flow diagram of a method for image scaling according to an embodiment of the present technique.</li><li id="ul_0001_0002"><figref>2A</figref>, <figref>2 B</figref>, <figref>2C</figref>, <figref>2D</figref>, <figref>2E</figref> and <figref>2F</figref> Figure 10 shows views of blocks of pixels depicting aspects of directional interpolation in accordance with embodiments of the present technique.</li><li id="ul_0001_0003"><figref>3A</figref> and <figref>3B</figref> Figure 10 shows views of blocks of pixels depicting aspects of directional interpolation in accordance with embodiments of the present technique.</li><li id="ul_0001_0004"><figref>4A</figref> and <figref>4B</figref> Figures show views illustrating aspects of possible interpolation directions in accordance with embodiments of the present technique.</li><li id="ul_0001_0005"><figref>5A</figref>, <figref>5B</figref> and <figref>5C</figref> Figure 10 shows views of blocks of pixels depicting aspects of directional interpolation in accordance with embodiments of the present technique.</li><li id="ul_0001_0006"><figref>6</figref> FIG. 3 shows a flow diagram of a method for image scaling according to a further embodiment of the present technique.</li><li id="ul_0001_0007"><figref>7A</figref>, <figref>7B</figref>, <figref>7C</figref> and <figref>7D</figref> FIG. 3 shows a flow diagram of a method for image scaling according to a further embodiment of the present technique.</li></ul>
DETAILED DESCRIPTION OF THE INVENTION
Reference will now be made in detail to the embodiments of the present technique, examples of which are illustrated in the accompanying drawings. Although the present technique has been described in connection with these embodiments, it should be noted that it is not intended to limit the invention to these embodiments. Rather, the invention is intended to cover alternatives, modifications, and equivalents that come within the scope of the invention as defined by the appended claims. Furthermore, in the following detailed description of the present technique, numerous specific details are set forth in order to provide a more thorough understanding of the present technique. However, it should be noted that the present technique can be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits are not described in detail in order not to unnecessarily obscure aspects of the present technique.
Some of the following embodiments of the present technique are presented in terms of routines, modules, blocks of logic, and other symbolic representations of operations on data within one or more electronic devices. The descriptions and illustrations are those means which are used by a person skilled in the art to convey his work to other persons skilled in the art in the most efficient manner. A routine, a module, a logic block and / or the like is to be understood here and also generally as a self-consistent sequence of processes or commands which leads to a desired result. The processes are those that involve physical manipulations of physical quantities. Usually, but not necessarily, these physical manipulations take the form of electrical or magnetic signals capable of being stored, transmitted, compared, or otherwise processed in an electronic device. For convenience in terms of common usage, these signals are referred to as data, bits, values, elements, symbols, characters, terms, numbers, strings, and / or the like with reference to embodiments of the present technique.
It should be noted, however, that all of these terms are to be understood as relating to physical manipulations and quantities and are merely convenient names that continue to be interpreted in terms of terms commonly used in this field. Unless otherwise indicated in the following discussion, it should be noted that in the explanations of the present technology, explanations using terms such as “receive” and / or the like denote actions and processes of an electronic device, such as an electronic device Computing device that manipulates and transforms data. The data is represented as physical (e.g. electronic) quantities within the logic circuits, registers, memories and / or the like of the electronic device and is converted into other data which are similarly represented as physical quantities in the electronic device.
In this application, the use of a disjoint link is also intended to include the connecting link. The use of a definite or indefinite article is not intended to indicate an order. In particular, a reference to “the” object or “a” object should also designate one of a number of possible such objects. It should also be noted that the terms and terminology as used herein are for purposes of description and are not intended to be limiting.
According to <figref>1</figref> Shown is a method of image scaling in accordance with an embodiment of the present technique. The method can be implemented as instructions (for example computer program) that can be executed by a computing device, which are stored in one or more media readable by a computing device (for example computer memory) and are executed by one or more computing devices (for example graphics processing unit).
The method begins at 110 by receiving multiple blocks of pixel data from an image. The blocks of pixel data contain a given number of pixel values per block. In one implementation, the blocks of pixel data contain values of a 4x4 array of pixels. at<b>120</b> directional interpolation is performed on each block of pixel data. Directional interpolation, in one implementation, includes applying a directional nonlinear filter D (image, m) that scales up by a factor of 2 to the block of pixel values.
For each original 4x 4 block of pixel values, values from the 4x 4 grid are interpolated, as in <figref>2A</figref> and <figref>2 B</figref> is shown. The same algorithm is also applied to interpolate values after the grid is rotated 45 degrees to the left, as in<figref>2C</figref> and <figref>2D</figref> is shown. The same algorithm is also applied to interpolate values after the grid is rotated 45 degrees to the right, as in<figref>2 B</figref> and <figref>2F</figref> is shown. The squares represent the original pixel values, the circles represent interpolated values on the original grid, the triangle represents the interpolated value for the grid rotated 45 degrees to the left, and the octagon represents the interpolated value for the grid rotated 45 degrees to the left Degrees to the right. If data is required from outside the original image, any standard texture function (e.g., clamp, mirror, wrap, constrain, etc.) can be used. Each original pixel (for example, a square) creates three additional pixels (a circle, a triangle, and an octagon).
For each interpolation, the sum of the absolute difference of the pixel luminosities from the original pixel values to the left and right of the diagonal is calculated according to the metric equations 1 and 2, as shown in FIG <figref>3A</figref> and <figref>3B</figref> is shown.<maths id="MATH-00001" num="(1)"><math display="block"><mrow><msub><mtext>M.</mtext><mrow><mn>45</mn></mrow></msub><mo>=</mo><mstyle displaystyle="true"><munder><mo>∑</mo><mrow><mn>45</mn><mo>°</mo><mtext> pairs i</mtext><mo>,</mo><mtext>j</mtext></mrow></munder><mrow><mrow><mo>|</mo><mrow><mi>l</mi><mi>u</mi><msub><mi>m</mi><mi>i</mi></msub><mo>−</mo><mi>l</mi><mi>u</mi><msub><mi>m</mi><mi>j</mi></msub></mrow><mo>|</mo></mrow></mrow></mstyle></mrow></math><img file="DE102015114651B4_D0001.tif" /></maths><maths id="MATH-00002" num="(2)"><math display="block"><mrow><msub><mtext>M.</mtext><mrow><mn>135</mn></mrow></msub><mo>=</mo><mstyle displaystyle="true"><munder><mo>∑</mo><mrow><mn>135</mn><mo>°</mo><mtext> pairs i</mtext><mo>,</mo><mtext>j</mtext></mrow></munder><mrow><mrow><mo>|</mo><mrow><mi>l</mi><mi>u</mi><msub><mi>m</mi><mi>i</mi></msub><mo>−</mo><mi>l</mi><mi>u</mi><msub><mi>m</mi><mi>j</mi></msub></mrow><mo>|</mo></mrow></mrow></mstyle></mrow></math><img file="DE102015114651B4_D0002.tif" /></maths>The metrics or measures are the sum of seven absolute differences in the pixel luminosities of the original pixel values that are adjacent to the diagonal.
In one implementation, the metric equations 1 and 2 can also be calculated by convolving the image with the kernels according to 3 and 4,<maths id="MATH-00003" num="(3)"><math display="block"><mrow><mtext>Section</mtext><mo>⊗</mo><mrow><mo>(</mo><mrow><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><mo>−</mo><mn>1</mn></mrow></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow><mo>)</mo></mrow></mrow></math><img file="DE102015114651B4_D0003.tif" /></maths><maths id="MATH-00004" num="(4)"><math display="block"><mrow><mtext>Section</mtext><mo>⊗</mo><mrow><mo>(</mo><mrow><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mrow><mo>−</mo><mn>1</mn></mrow></mtd><mtd><mn>0</mn></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow><mo>)</mo></mrow></mrow></math><img file="DE102015114651B4_D0004.tif" /></maths>and by applying a box or cube filter according to FIG.<maths id="MATH-00005" num="(5)"><math display="block"><mrow><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow></math><img file="DE102015114651B4_D0005.tif" /></maths>The box filter 5 is used to smooth the response of kernels 3 and 4.
For example, if a 4x 4 block of pixel values goes through<maths id="MATH-00006" num="(6)"><math display="block"><mrow><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mrow><mn>03</mn></mrow></mtd><mtd><mrow><mn>13</mn></mrow></mtd><mtd><mrow><mn>23</mn></mrow></mtd><mtd><mrow><mn>33</mn></mrow></mtd></mtr><mtr><mtd><mrow><mn>02</mn></mrow></mtd><mtd><mrow><mn>12</mn></mrow></mtd><mtd><mrow><mn>22</mn></mrow></mtd><mtd><mrow><mn>32</mn></mrow></mtd></mtr><mtr><mtd><mrow><mn>01</mn></mrow></mtd><mtd><mrow><mn>11</mn></mrow></mtd><mtd><mrow><mn>21</mn></mrow></mtd><mtd><mrow><mn>31</mn></mrow></mtd></mtr><mtr><mtd><mrow><mn>00</mn></mrow></mtd><mtd><mrow><mn>10</mn></mrow></mtd><mtd><mrow><mn>20</mn></mrow></mtd><mtd><mrow><mn>30</mn></mrow></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow></math><img file="DE102015114651B4_D0006.tif" /></maths>is specified,<br />the convolution can be calculated as 102 - 131 + 101 - 121 + 112 - 231 + 100 - 11 | + | 11-221 + | 22-33 | + | 10 - 21 | + | 21 - 32 | + | 20 - 31 | for the left diagonals, and as | 01 - 10 | + | 20 - 11 | + | 11 - 02 | + | 30 - 21 | + | 21 - 12 | + | 12 - 03 | + | 31 - 22 | + | 22 - 13 | + | 32 - 23 |. The sum of the absolute differences can be made larger than 4x4. Different weights for each difference, say<maths id="MATH-00007" num="(7)"><math display="block"><mrow><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mn>3</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow></math><img file="DE102015114651B4_D0007.tif" /></maths>can be used instead of the box filter 5.
Another approach is to calculate the metric for the entire image (e.g. M45 and M135, calculated for the entire image), and then a max, mean, or min filter over a 3 × 3, 5 × 5 each -or similar array of pixel values and replace the original values with the result. A categorization and selection of the interpolation direction can then be applied.
When a given metric is small, the image is isophotic in that corresponding direction. The given block of pixels is interpolated in the direction of its dominant isophotes. If no direction is dominant, a standard linear filter is used to interpolate the given block of pixels depending on the direction. Thus, given the two metrics in the range [0.9], the graph can be off<figref>4A</figref> can be used to classify the metric in three possible interpolation directions 8, 9 and 10,<maths id="MATH-00008" num="(8)"><math display="block"><mrow><msub><mtext>F.</mtext><mrow><mn>45</mn></mrow></msub><mo>:</mo><mtext> f</mtext><mover accent="true"><mtext>u</mtext><mo>¨</mo></mover><mtext>r</mtext><mrow><mo>(</mo><mrow><msub><mrow><mtext>at the</mtext></mrow><mrow><mn>45</mn></mrow></msub><mo>+</mo><msub><mrow><mtext>bM</mtext></mrow><mrow><mn>135</mn></mrow></msub><mo>+</mo><mtext>c</mtext><mo><</mo><mn>0</mn></mrow><mo>)</mo></mrow></mrow></math><img file="DE102015114651B4_D0008.tif" /></maths><maths id="MATH-00009" num="(9)"><math display="block"><mrow><msub><mtext>F.</mtext><mrow><mn>135</mn></mrow></msub><mo>:</mo><mtext> f</mtext><mover accent="true"><mtext>u</mtext><mo>¨</mo></mover><mtext>r</mtext><mrow><mo>(</mo><mrow><msub><mrow><mtext>bM</mtext></mrow><mrow><mn>45</mn></mrow></msub><mo>+</mo><msub><mrow><mtext>at the</mtext></mrow><mrow><mn>135</mn></mrow></msub><mo>+</mo><mtext>c</mtext><mo><</mo><mn>0</mn></mrow><mo>)</mo></mrow></mrow></math><img file="DE102015114651B4_D0009.tif" /></maths><maths id="MATH-00010" num="(10)"><math display="block"><mrow><mtext>Otherwise</mtext><mo>:</mo><msub><mrow><mtext> F.</mtext></mrow><mrow><mn>4</mn><mo>×</mo><mn>4</mn></mrow></msub></mrow></math><img file="DE102015114651B4_D0010.tif" /></maths>and how to do this accordingly in <figref>5A</figref>, <figref>5B</figref> and <figref>5C</figref> is shown. The interpolation direction can use Lanczos window-subdivided sinc weights [-199 - 1] / 16. The same weighting can be used for the 4x4 array as for the separate filter. The constants a, b and c can be calculated from the parameters tx and ty according to equations 11, 12 and 13.<maths id="MATH-00011" num="(11)"><math display="block"><mrow><mtext>a</mtext><mo>=</mo><mrow><mo>(</mo><mrow><mn>9</mn><mo>−</mo><mtext>ty</mtext></mrow><mo>)</mo></mrow></mrow></math><img file="DE102015114651B4_D0011.tif" /></maths><maths id="MATH-00012" num="(12)"><math display="block"><mrow><mtext>b</mtext><mo>=</mo><mo>−</mo><mtext>tx</mtext></mrow></math><img file="DE102015114651B4_D0012.tif" /></maths><maths id="MATH-00013" num="(13)"><math display="block"><mrow><mtext>c</mtext><mo>=</mo><mtext>txty</mtext></mrow></math><img file="DE102015114651B4_D0013.tif" /></maths>
The parameters tx and ty, both in [0.9], are adjustable parameters. Reasonable values are tx = 8.1 and ty = 0.1.
In a second implementation, the metric equations 1 and 2 can also be calculated by convolving the image with the kernels corresponding to 3 and 4, and then using a mean value filter 14<maths id="MATH-00014" num="(14)"><math display="block"><mrow><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow></math><img file="DE102015114651B4_D0014.tif" /></maths>is applied to the results.
Again, if a given metric is small, then the image is isophotic in that corresponding direction. The given block of pixels can be interpolated in the direction of the dominant isophotes. If no direction is dominant, a standard linear filter can be used to interpolate the given block of pixels depending on the direction. The dominant direction can be determined by comparing relative sizes of the metric. Thus, the two given metrics can count from <figref>4B</figref> can be used to divide the metric into three possible interpolation directions 15, 16 and 17,<maths id="MATH-00015" num="(15)"><math display="block"><mrow><msub><mtext>F.</mtext><mrow><mn>45</mn></mrow></msub><mo>:</mo><msub><mrow><mtext> f</mtext><mover accent="true"><mtext>u</mtext><mo>¨</mo></mover><mtext>r M</mtext></mrow><mrow><mn>135</mn></mrow></msub><mo>></mo><msub><mrow><mtext>mM</mtext></mrow><mrow><mn>45</mn></mrow></msub></mrow></math><img file="DE102015114651B4_D0015.tif" /></maths><maths id="MATH-00016" num="(16)"><math display="block"><mrow><msub><mtext>F.</mtext><mrow><mn>135</mn></mrow></msub><mo>:</mo><msub><mrow><mtext> f</mtext><mover accent="true"><mtext>u</mtext><mo>¨</mo></mover><mtext>r M</mtext></mrow><mrow><mn>45</mn></mrow></msub><mo>></mo><msub><mrow><mtext>mM</mtext></mrow><mrow><mn>135</mn></mrow></msub></mrow></math><img file="DE102015114651B4_D0016.tif" /></maths><maths id="MATH-00017" num="(17),"><math display="block"><mrow><mtext>Otherwise</mtext><mo>:</mo><msub><mrow><mtext> F.</mtext></mrow><mrow><mn>4</mn><mo>×</mo><mn>4</mn></mrow></msub></mrow></math><img file="DE102015114651B4_D0017.tif" /></maths>and like this also in the <figref>5A</figref>, <figref>5B</figref> and <figref>5C</figref> is shown accordingly. The weights for the F<sub>45</sub>-and F<sub>135</sub>-Interpolation can be<maths id="MATH-00018" num=""><math display="inline"><mrow><mo>−</mo><mfrac><mn>1</mn><mrow><mn>16</mn></mrow></mfrac><mo>,</mo><mtext> </mtext><mfrac><mn>9</mn><mrow><mn>16</mn></mrow></mfrac><mo>,</mo><mtext> </mtext><mfrac><mn>9</mn><mrow><mn>16</mn></mrow></mfrac><mo>,</mo><mtext> </mtext><mo>−</mo><mfrac><mn>1</mn><mrow><mn>16</mn></mrow></mfrac><mo>.</mo></mrow></math><img file="DE102015114651B4_D0018.tif" /></maths>The same weights can be used for F4X4 as for the separate horizontal and vertical weights. Other weights that can be used are the approximate range<maths id="MATH-00019" num=""><math display="inline"><mrow><mo>−</mo><mfrac><mn>1</mn><mn>8</mn></mfrac><mo>,</mo><mtext> </mtext><mfrac><mn>5</mn><mn>8</mn></mfrac><mo>,</mo><mtext> </mtext><mfrac><mn>5</mn><mn>8</mn></mfrac><mo>,</mo><mtext> </mtext><mo>−</mo><mfrac><mn>1</mn><mn>8</mn></mfrac><mtext> until </mtext><mo>−</mo><mfrac><mn>1</mn><mrow><mn>32</mn></mrow></mfrac><mo>,</mo><mtext> </mtext><mfrac><mrow><mn>17</mn></mrow><mrow><mn>32</mn></mrow></mfrac><mo>,</mo><mtext> </mtext><mfrac><mrow><mn>17</mn></mrow><mrow><mn>32</mn></mrow></mfrac><mo>,</mo><mtext> </mtext><mo>−</mo><mfrac><mn>1</mn><mrow><mn>32</mn></mrow></mfrac><mo>.</mo></mrow></math><img file="DE102015114651B4_D0019.tif" /></maths>
When editing YUV (luminance / luminance + chrominance) images, one can select the scale of the Y channel according to the method previously described and use any suitable linear scaling for the UV channels. In general, this can be done when required for performance reasons, as detail about the color is lost. D (I, m) for a single channel I is the same as above except that the channel value is used directly as the luminosity.
at <b>130</b> a color enhancement or color sharpening is carried out on each block of direction-dependent interpolated pixel values. The gain filter can<br />p '= p +2 (p -blur (p)), whereby the blur filter or blurriness filter can be any low-pass filter. In one implementation, color enhancement includes the use of a non-linear enhancing or sharpening filter. In one implementation, the reinforcing filter<b>18</b><maths id="MATH-00020" num="(18)"><math display="block"><mrow><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mrow><mo>−</mo><mn>1</mn></mrow></mtd><mtd><mrow><mo>−</mo><mn>2</mn></mrow></mtd><mtd><mrow><mo>−</mo><mn>1</mn></mrow></mtd></mtr><mtr><mtd><mrow><mo>−</mo><mn>2</mn></mrow></mtd><mtd><mrow><mn>12</mn></mrow></mtd><mtd><mrow><mo>−</mo><mn>2</mn></mrow></mtd></mtr><mtr><mtd><mrow><mo>−</mo><mn>1</mn></mrow></mtd><mtd><mrow><mo>−</mo><mn>2</mn></mrow></mtd><mtd><mrow><mo>−</mo><mn>1</mn></mrow></mtd></mtr></mtable></mrow><mo>]</mo></mrow><mo>+</mo><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow></math><img file="DE102015114651B4_D0020.tif" /></maths>being. In one implementation, the YPbPr color space is used. In one implementation, the gain filter appears to be best in the range of 0.10 to 0.16. Note that the gain filter can be calculated as a separate filter, followed by a multiply addition.
In a second implementation, the gain filter<maths id="MATH-00021" num="(19)"><math display="block"><mrow><mi>p</mi><mo>'</mo><mo>=</mo><mi>p</mi><mo>+</mo><mi>s</mi><mrow><mo>(</mo><mrow><mtable><mtr><mtd><mi>p</mi></mtd><mtd><mrow><msub><mrow><mtext>blur</mtext></mrow><mrow><mi>N</mi><mo>×</mo><mi>N</mi></mrow></msub><mrow><mo>(</mo><mi>p</mi><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mrow><mo>)</mo></mrow></mrow></math><img file="DE102015114651B4_D0021.tif" /></maths>applied to all channels of the pixel p, s can vary if the interpolation step is carried out iteratively. The blur filter is applied to the NxN neighborhood around p, where N is odd. A useful filter for the application is<maths id="MATH-00022" num="(20)"><math display="block"><mrow><mfrac><mn>1</mn><mrow><mn>16</mn></mrow></mfrac><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>4</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow></math><img file="DE102015114651B4_D0022.tif" /></maths>but almost anything that acts like a low pass filter can be used. It has been found that m ∈ {~ 1.1, ~ 1.9} and s ≈2.0 work well with the previous filter for images.
at <b>140</b> Luminosity is determined on each block of color-enhanced, direction-dependent interpolated pixel values. In one implementation, the luminosity can be set to the volume range of the original 3x3 neighborhood. In a second implementation
at <b>150</b> Several blocks of color-enhanced, direction-dependent interpolated pixel values that are set to a luminosity (if possible) are output as an enlarged image. In one implementation, the multiple blocks of color-enhanced, direction-dependent interpolated values that are fixed to a luminosity are output to a display for a visual representation for a user. For example, embodiments may be used to advantage to increase back buffers to improve performance of GPUs while running real-time games or video scaling running on 4K or larger displays. In a further implementation, the multiple blocks of color-enhanced, direction-dependent interpolated values that are fixed to a luminosity are stored in media (for example computer memory) that can be read by a computing unit.
Let it be up now <figref>6</figref> which shows a method for image scaling according to another embodiment of the present technique. The process begins by receiving multiple blocks of pixel data from an image<b>610</b>. at<b>620</b> directional interpolation is performed on each block of pixel data. The pixel blocks can be interpolated depending on the direction, as was previously done with reference to the process<b>120</b> is described. at<b>630</b> a sharpening or amplification is carried out on each block of direction-dependent interpolated pixel values. Linear sharpening can be performed as previously with respect to the process<b>130</b> is described. at<b>640</b> it is determined whether a predetermined scaling has been reached. If the predetermined scaling is not reached, the process can stop<b>620</b> and <b>630</b> repeated iteratively. As soon as the desired scaling is achieved, the linearly sharpened or amplified, directionally interpolated pixel data for the multiple blocks of pixel data are output as the scaled image.
The method of image scaling using directional interpolation and gain without luminance fixation advantageously produces a scaled image that looks better at four times (4x) and higher scaling compared to when a fixation on luminosity is used.
Other scales can be achieved by means of a linear filter step. For example, bi-linear scaling down can be used for improved detail, or tri-linear scaling can be used when continuity between magnifications is important. In the tri-linear interpolation, log<sub>2</sub>(Z) = int.fac calculated. The method for direction-dependent interpolation and amplification without setting a luminosity is used to generate two images as enlargement images A = 2int and B = 2<sup>(int + 1)</sup> to get, these are linearly mixed with each other using A * (1-frac) + B * frac ..
Let it be up now <figref>7A</figref> - <figref>7D</figref> referring to which a method of image scaling in accordance with yet another embodiment of the present technique is shown. The process begins with receiving multiple blocks of pixel data from an image at<b>702</b>. at<b>704</b> an image scaling factor is also received. In one implementation, let Z = max (x<sub>scale</sub>, y<sub>scale</sub>) the image scaling factor.
If the image scale factor Z at 706 is less than 1.0, the multiple blocks of pixel data at <b>708</b> down-sampled. In one implementation, bi-linear sampling can be used. In another implementation, a Gaussian downsampling is used as a 6x6 filter with the kernel<maths id="MATH-00023" num="(21)"><math display="block"><mrow><msup><mtext>e</mtext><mrow><mo>−</mo><msup><mtext>x</mtext><mn>2</mn></msup><mo>/</mo><mn>2</mn><msup><mi mathvariant="normal">σ</mi><mn>2</mn></msup></mrow></msup></mrow></math><img file="DE102015114651B4_D0023.tif" /></maths>applied<br />It is<maths id="MATH-00024" num="(22)"><math display="block"><mrow><msup><mi mathvariant="normal">σ</mi><mn>2</mn></msup><mo>−</mo><mtext>Max</mtext><mrow><mo>(</mo><mrow><mn>0.01,</mn><mtext> </mtext><msub><mi mathvariant="normal">σ</mi><mrow><mtext>adj</mtext></mrow></msub><msup><mrow /><mn>2</mn></msup><mo>−</mo><msub><mi mathvariant="normal">σ</mi><mrow><mtext>in</mtext></mrow></msub><msup><mrow /><mn>2</mn></msup></mrow><mo>)</mo></mrow></mrow></math><img file="DE102015114651B4_D0024.tif" /></maths>in which<maths id="MATH-00025" num="(23)"><math display="block"><mrow><msub><mi mathvariant="normal">σ</mi><mrow><mtext>adj</mtext></mrow></msub><mo>=</mo><msub><mi mathvariant="normal">σ</mi><mrow><mtext>out</mtext></mrow></msub><mo>/</mo><msub><mtext>Z</mtext><mrow><mtext>downscale</mtext></mrow></msub></mrow></math><img file="DE102015114651B4_D0025.tif" /></maths>and<maths id="MATH-00026" num="(24)"><math display="block"><mrow><msub><mi mathvariant="normal">σ</mi><mrow><mtext>out</mtext></mrow></msub><mo>,</mo><mtext> </mtext><msub><mi mathvariant="normal">σ</mi><mrow><mtext>in</mtext></mrow></msub></mrow></math><img file="DE102015114651B4_D0026.tif" /></maths>are the desired output confusion and the estimated input confusion. Generally<maths id="MATH-00027" num="(25)"><math display="block"><mrow><msub><mi mathvariant="normal">σ</mi><mrow><mtext>out</mtext></mrow></msub><mo>=</mo><msub><mi mathvariant="normal">σ</mi><mrow><mtext>in</mtext></mrow></msub><mo>=</mo><mn>0.5</mn></mrow></math><img file="DE102015114651B4_D0027.tif" /></maths>and<maths id="MATH-00028" num="(26)"><math display="block"><mrow><mn>0.5</mn><mo><</mo><msub><mtext>Z</mtext><mrow><mtext>downscale</mtext></mrow></msub><mo><</mo><mn>1.0</mn></mrow></math><img file="DE102015114651B4_D0028.tif" /></maths>The downsampled multiple blocks of pixel data are at <b>756</b> output as the scaled image.
If the image scaling factor Z is greater than 1.0 and less than 2.0 at <b>710</b> is, the multiple blocks of pixels are at <b>712</b> interpolated depending on the direction. The pixel blocks can be interpolated depending on the direction in the manner as described above with regard to the process<b>120</b> is described. at<b>714</b> the directionally interpolated blocks are downsampled at pixels. In one implementation, the downsampling is done in the previous manner with reference to the process<b>708</b> described way. at<b>716</b> the downward-scanned, direction-dependent interpolated pixel blocks are amplified or sharpened in color. Color enhancement can be done as was previously related to the process<b>130</b> is described. at<b>718</b> the color-enhanced, downward-scanned, direction-dependent interpolated blocks of pixel data are set to a luminosity. The definition of a luminosity can be carried out as before with reference to the processes<b>140</b> is described. The multiple blocks of pixel data, which are defined in terms of luminosity, are color-enhanced, down-scanned and interpolated in a direction-dependent manner are used in<b>756</b> output as the scaled image.
When the image scaling factor Z is <b>720</b> is 2.0 will be at <b>722</b> which interpolates several blocks of pixels depending on the direction. Again, the pixel blocks can be interpolated depending on the direction, as was previously done with reference to the process<b>120</b> is described. at<b>724</b> the direction-dependent interpolated pixel blocks are color-enhanced. Again, the color enhancement can be performed as was previously related to the process<b>130</b> is described. at<b>726</b> the color-enhanced, direction-dependent interpolated blocks of pixel data are set to a luminosity. Again, the definition of a luminosity can be carried out, as was done above with reference to the processes<b>140</b> is described. The color-enhanced, direction-dependent interpolated blocks of pixel data are set to a specific luminosity and are used in<b>756</b> output as the scaled image.
When the image scaling factor Z is <b>728</b> is greater than 2.0, will be at <b>730</b> which interpolates several blocks of pixels depending on the direction. Again, the pixel blocks can be interpolated depending on the direction, as was previously done with reference to the process<b>120</b> is described. at<b>732</b> the direction-dependent interpolated pixel blocks are color-enhanced. Again, the color enhancement can be carried out as previously with respect to the process<b>130</b> is described. at<b>734</b> the color-enhanced, direction-dependent interpolated blocks of pixel data are set to a luminosity. Again, a definition of a luminosity can be carried out as before with reference to the processes<b>140</b> is described. at<b>736</b> it is determined whether the intermediate image scaling, which according to the processes <b>730-734</b> is within a factor of 2.0 or less of the image scaling factor. If an intermediate image scale is not within a factor of 2.0 or less of the image scale factor, then the processes will<b>730-734</b> iteratively repeated until the intermediate image scale is within a factor of 2.0 or less of the image scale factor.
If the intermediate image scale is greater than 1.0 and less than 2.0 of the image scale factor at 738, the intermediate scaled block of pixels is directionally interpolated at 740. The pixel blocks can be interpolated depending on the direction, as was previously done with reference to the process<b>120</b> is described. at<b>742</b> the directionally interpolated blocks are downsampled at pixels. The downsampling can be performed as previously with respect to the process<b>708</b> is described. at<b>744</b> the down-sampled, direction-dependent interpolated pixel blocks are color-enhanced. The color enhancement can be done as was previously related to the process<b>130</b> is described. at<b>746</b> the color-enhanced, downward-scanned, direction-dependent interpolated blocks of pixel data are set to a luminosity. The definition of a luminosity can be carried out as before with reference to the processes<b>140</b> is described. The multiple blocks of pixel data, which are set to a luminosity, are color-enhanced, down-scanned and interpolated in a direction-dependent manner are<b>756</b> output as the scaled image.
If the intermediate image scale equals 2.0 the image scale factor at 748, the intermediate scaled blocks of pixels are interpolated in 750 directionally. The pixel blocks can be interpolated depending on the direction, as was previously done with reference to the process<b>120</b> is described. at<b>752</b> the direction-dependent interpolated pixel blocks are color-enhanced. The color enhancement can be done as previously related to the process<b>130</b> is described. at<b>754</b> the color-enhanced, direction-dependent interpolated blocks of pixel data are set to a luminosity. The definition of a luminosity can be carried out as before with reference to the processes<b>140</b> is described. The color-enhanced, direction-dependent interpolated blocks of pixel data are set to a specific luminosity and are used in<b>756</b> output as the scaled image.
Operations in the previously described scaling techniques are performed in linear color space. The coordinate system of the previously described scaling techniques is not exactly the same as that of linearly scaled images. If you are working with YUV images, with the previously described methods scaling the Y channel and any suitable linear filter scaling the UV channels, the inverse mapping in the linear filter must have two different maps for the magnification factor Z = 2<sup>n-δ</sup> (where 0 ≤ δ <1 and n is an integer) to ensure that the UV channels are correctly aligned with the Y channel:<maths id="MATH-00029" num="(27)"><math display="block"><mrow><msub><mtext>u</mtext><mn>0</mn></msub><mo>=</mo><msup><mn>2</mn><mrow><mo>−</mo><mtext>n</mtext><mo>+</mo><mtext> </mtext><mi mathvariant="normal">δ</mi></mrow></msup><mtext> to</mtext><mrow><mo>(</mo><mrow><mtext>unmodified reverse image</mtext></mrow><mo>)</mo></mrow></mrow></math><img file="DE102015114651B4_D0029.tif" /></maths><maths id="MATH-00030" num="(28)"><math display="block"><mrow><mtable><mtr><mtd><mrow><msub><mtext>u</mtext><mn>0</mn></msub><mo>=</mo><msup><mn>2</mn><mrow><mo>−</mo><mtext>n</mtext><mo>+</mo><mtext> </mtext><mi mathvariant="normal">δ</mi></mrow></msup><msub><mrow><mtext> u</mtext></mrow><mtext>z</mtext></msub><mo>−</mo><msup><mn>2</mn><mrow><mo>−</mo><mtext>n</mtext><mo>−</mo><mn>1</mn></mrow></msup><mo>+</mo><mn>0,5</mn></mrow></mtd><mtd><mrow><mtext>UV</mtext></mrow></mtd></mtr></mtable></mrow></math><img file="DE102015114651B4_D0030.tif" /></maths><maths id="MATH-00031" num="(29)"><math display="block"><mrow><mtable><mtr><mtd><mrow><msub><mtext>u</mtext><mn>0</mn></msub><mo>=</mo><msup><mn>2</mn><mrow><mo>−</mo><mtext>n</mtext><mo>+</mo><mtext> </mtext><mi mathvariant="normal">δ</mi></mrow></msup><msub><mrow><mtext> u</mtext></mrow><mtext>z</mtext></msub><mo>−</mo><msup><mn>2</mn><mrow><mo>−</mo><mtext>n</mtext><mo>−</mo><mn>2</mn></mrow></msup><mo>+</mo><mn>0,25</mn></mrow></mtd><mtd><mrow><msub><mrow><mtext>UV</mtext></mrow><mrow><mn>420</mn></mrow></msub></mrow></mtd></mtr></mtable></mrow></math><img file="DE102015114651B4_D0031.tif" /></maths>where u<sub>0</sub> is the sample position in the original image that corresponds to the sample position u<sub>Z</sub> in the original image. The same equation applies to the v coordinate.
Embodiments of the present technique can advantageously increase the speed for scaling images in a given rendering quality compared to conventional techniques. Furthermore, by enhancing the color before setting a luminosity, embodiments of the present technique can advantageously reduce edge-related artifacts in the enlarged image. Embodiments of the present technology typically achieve a performance in the range of giga-pixels per second and offer a quality that is visibly better compared to a purely linear scaling in conventional processing units. Embodiments of the present technique can advantageously continue to generate details of interest at any level of magnification.
Contents3
46 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22 Sheet 23 Sheet 24 Sheet 25 Sheet 26 Sheet 27 Sheet 28 Sheet 29 Sheet 30 Sheet 31 Sheet 32 Sheet 33 Sheet 34 Sheet 35 Sheet 36 Sheet 37 Sheet 38 Sheet 39 Sheet 40 Sheet 41 Sheet 42 Sheet 43 Sheet 44 Sheet 45 Sheet 46
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US7236191B2 | Cites | United States of America | Applicant |
| US7876979B2 | Cites | United States of America | – |
| US8144977B2 | Cites | United States of America | – |
| EP2491528B1 | Cites | European Patent Office (EPO) | – |
4 priority claims, no other members on record
Priority claims4
| Document | Office | Kind | Date |
|---|---|---|---|
| 201462044548 | United States of America | P | |
| 62044548 | United States of America | – | |
| 62044548 | – | – | – |
| US201462044548P | – | – | – |
7 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Patent grant now finalGrantedR020 | R020 | |
| Grant decision by examination section/examining divisionR018 | R018 | |
| Response to examination communicationR016 | R016 | |
| Response to examination communicationR016 | R016 | |
| Change of representativeR082 | R082 | |
| Change of representativeR082 | R082 | |
| Request for examination validly filedR012 | R012 |
Numbers
- Publication
- 102015114651
- Publication, DOCDB
- 102015114651
- Publication, EPODOC
- DE102015114651
- Application
- 10114651
- Application, DOCDB
- 102015114651
- Application, EPODOC
- DE201510114651
Titles2
- German
- Bildskalierungstechniken
- English
- Image scaling techniques
Classification
- CPC, 2
- G06T3/4023
- G06T3/4007
- IPC, 2
- G09G5 00
- G09G5 02