A method for interpolation includes receiving an input image having a plurality of pixels and estimating an edge direction proximate a first pixel of the input image using a first technique from a plurality of discrete potential directions. Interpolating pixels using a substantially arbitrary scaling factor proximate the first pixel based upon the estimated edge direction and interpolating pixels using substantially arbitrary scaling factor proximate the first pixel based upon another technique not based upon the estimated edge direction. The interpolated pixels are determined for an output image having more pixels than the input image based upon the interpolated pixels of step (c) and step (d).
|
1. A method for interpolation comprising:
(a) receiving an input image having a plurality of pixels;
(b) estimating an edge direction proximate a first pixel of said input image using a first technique from a plurality of discrete potential directions;
(c) interpolating pixels using a substantially arbitrary scaling factor proximate said first pixel based upon said estimated edge direction;
(d) another interpolating pixels using substantially arbitrary scaling factor proximate said first pixel based upon another technique not based upon said estimated edge direction;
(e) determining interpolated pixels for an output image having more pixels than said input image based upon said interpolated pixels of step (c) and step (d).
2. The method of
3. The method of
4. The method of
6. The method of
7. The method of
8. The method of
9. The method of
11. The method of
13. The method of
14. The method of
15. The method of
16. The method of
|
None
The present invention relates to image upscaling based upon directional interpolation.
Digital video is typically represented as a series of images or frames, each of which contains an array of pixels. Each pixel includes information, such as intensity and/or color information. In many cases, each pixel is represented as a set of three colors, each of which is defined by eight bit color values.
Pixel information within a frame may be missing such as boundary conditions that may result when executing a video conversion process, such as the conversion between interlaced television field signals and progressive frame signals. In other cases, a frame may be at a first resolution, such as standard definition, which is desirable to convert to a second resolution, such as high definition.
Standard techniques for pixel interpolation are based on the application of classical linear filters. However, such techniques introduce various visual artifacts such as blurring of sharp edge patterns and detailed texture patterns in the image, ringing along edge contours, as well jaggedness along edge contours. Such artifacts generally cannot be avoided when standard linear filtering techniques are used for interpolation. Therefore, there is a need for improved techniques for pixel interpolation, such as techniques that are adaptive to local image patterns.
An improved technique for pixel interpolation is generally referred to as an edge-directed interpolation which seeks to generate a value for a missing pixel by extending the patterns in selected directions, expressed as edges which exist in the surrounding pixels of an image frame. Unfortunately, it is difficult to determine the existence of an edge in an image and the direction of such an edge in an image. Erroneous estimates of the direction can lead to new visual artifacts in the image after interpolation. Therefore, there is a need for a robust technique for estimating the direction of a local edge pattern in an image. Furthermore, there is a need for an image upscaling technique with low computational complexity that can outperform standard linear filtering techniques in terms of visual quality.
The foregoing and other objectives, features, and advantages of the invention will be more readily understood upon consideration of the following detailed description of the invention, taken in conjunction with the accompanying drawings.
Referring to
The 5 by 5 window may be used to estimate an orientation 110 (direction) of an edge at or near the central pixel. The orientation estimation 110 of the edges may use any suitable technique, such as using a gradient technique, to determine an orientation 125.
For example, the gradient estimation for a M×N block of pixels may be based upon:
where Gx(M,N) and Gy(M,N) are the x- and y-gradients at (M,N).
One technique to calculate the gradients is based upon a Sobel operator, namely:
where p(M−1,N−1) is pixel's intensity at (M−1,N−1), etc.
A reliability measure 120 may be determined which estimates the likelihood that the orientation estimation 110 has determined an actual edge. The reliability score may be based on checking the agreement between an estimated angle and its 8 neighbors in a 3×3 window, i.e.,
The above equation illustrates that the reliability score may be a non-binary scaler between 0 and 1, with 8 quantization levels. Any other reliability measure may likewise be used.
Optionally, the output of the orientation estimation 110 may be refined by an orientation refinement technique. The orientation refinement may use a different technique from the orientation estimation 110 to select from among the best candidate(s) from the orientation estimation 110. The orientation refinement reduces the likelihood of the orientation estimation 110 being in error as a result of local minimums in the estimation process.
A set of orientations 125 for a group of pixels may be stored in a line buffer 130. In this manner, a plurality of orientations 125 will be available, as needed, for further image analysis without having to recalculate the orientations for a previously processed pixel. Likewise, a set of reliability measures 120 may be stored in a line buffer 140. In this manner, a plurality of reliability measures 120 will be available, as needed, for further image analysis without having to recalculate the orientations for a previously processed pixel.
A location determination process 150 may be used to determine, based upon the desired location of the output pixel position 160, the orientation 125 of which pixel 170 of the input image should be used to determine the value of the output pixel position 160. Preferably, the selected pixel 170 is the one closest to a pixel location in the input image. The location determination process 150 may further, based upon the desired location of the output pixel position 160, obtain a selected set of pixels 180 of the input image that may be used to determine the pixel value of the output pixel position 160. By using a technique that includes a flexible set of locations to select an orientation and the appropriate set of input image pixel values, a near continuous set of output positions may be selected, such as those that are not merely a multiple of 2.
A direction based interpolation technique 180 uses the pixel data 190 from the line buffer 105 together with the orientation of the selected pixel 200 from the line buffer 130 in combination with the output pixel position 160. Based upon the input information to the directional interpolation 180, a set multiple input image pixels 210 are selected from which to determine the value at the output pixel position 160. The set of multiple input pixels 210 is preferably 4 forming an enclosed loop, preferably in the shape of a parallelogram. In addition to selecting the set of multiple input pixels, the process further selects appropriate weights for the set of multiple input pixels 210 suitable to provide a value at the output pixel position 160. By using a larger set of pixel data 190, such as a 9×9 set of pixel data, the angular interpolation can be performed on a finer basis. By using a technique that includes a flexible set of locations used to select the value for the desired output pixel position, further based upon the orientation, a near continuous set of output positions may be selected, such as those that are not merely a multiple of 2.
The directional based interpolation technique 180 uses the pixel locations and the corresponding weights 210 together with the input pixel data 190 to determine an appropriate weighted average 220 for the desired output pixel position 160. The result of the directional based interpolation technique 180 is a value 230 for the output pixel position 160.
In some cases, the directional interpolation 180 does not provide accurate results, such as in the case that there is no defined edge within the 5 by 5 window or the pixel is near the edge of an image. The upscaling technique may provide a fallback interpolation 240 that is not based to such a degree upon the determination of edges. For those are not on the edge, non-directional interpolation approach is preferred. There are many such interpolation techniques, which may or may not be content adaptive. As one of the many embodiments, Lanczos linear filter may be used:
ONDI(x,y)=ΣΣ(wi,jP(floor(x)+i,floor(y)+j))
where P is the input pixel.
Thus every output pixel position 160 may be interpolated twice, namely, a directional technique 180 and a fallback technique 240. A blending mixes 250 together the two techniques based on the respective reliability_score 260:
Ofinal(x,y)=reliability_score*ODI+(1−reliability_score)*ONDI
Using the reliability measure 260 as a basis for determining an appropriate output 270, the fallback interpolation 240 may be multiplied by 1 minus the reliability measure which is added to the directional interpolation multiplied by the reliability measure. In this manner, the output 270 is a combination of the directional interpolation and the fallback interpolation. This process is repeated for all the desired output pixel positions. The result of the technique is the ability of selecting any desired output image resolution, and being capable of scaling substantially any input image resolution to that desired output image resolution.
The implementation of the system may use any suitable technique. In one implementation, the rate at which the orientation estimation is performed may be at a slower rate than the interpolation technique which is performed at a higher rate. This difference in rates facilitates more efficient data throughput for the upscaling of the image.
Referring to
The plurality of different directions may include, for example, 12 different directions defined as, −45 degrees (
As previously described, the directional interpolation process 180 includes three steps to determine the intensity value of a desired output position:
(1) determine the proper interpolation direction;
(2) determine the proper pixels to form a parallelogram for interpolation; and
(3) interpolating in the parallelogram along the interpolation direction.
With an arbitrary scaling factor previously described, the output pixels can be anywhere. As the first step, the directional interpolation module should determine the interpolation direction for any given output position. This may be simplified by using the edge orientation of the nearest input pixel estimated in the last phase as the interpolation direction. More specifically, for the position of T at (x,y), the nearest input pixel is at (M,N). Using math terms,
M=round(x)
N=round(y)
All the output pixels in the ±0.5 range of (M,N) share the same interpolation direction.
In the second step, the direction interpolation module determines its 4 nearest pixels along the interpolation direction for any given output position. These 4 nearest input pixels form a parallelogram skewing along the interpolation direction. Illustrated in
There are two sides of parallelograms:
Different interpolation directions have different preferable window size requirement, and the preferred maximal window requirement is a 9×9 window at the input resolution.
Determining the 4 pixels P1 P2 P3 P4 along an interpolation direction for a given arbitrary output position T at (x,y) is illustrated in
It may be observed that AC=AD*CT/BD. In x-parallelograms, AD is the same as the x-coordinate difference between P1 and P3; in y-parallelograms, AD is the same as the y-coordinate difference between P1 and P3. Specifically,
0
1
2
3
4
5
6
7
8
9
10
11
AD
1
2
3
0
−3
−2
−1
−2
−3
0
3
2
In X-parallelograms, CT=y−floor(y); in Y-parallelograms, CT=x−floor(x). In both x- and y-parallelograms, BD=1. Therefore,
X-parallelogram:AC=AD*(y−floor(y))
Y-parallelogram:AC=AD*(x−floor(x))
Calculate the coordinates of A,
From coordinates of A to determine coordinates of P1, P2, P3, P4
X-parallelogram:P1=(floor(x+AC),floor(y))
P2=(floor(x+AC)+1,floor(y))
P3=(floor(x+AC)+AD,floor(y)+1)
P4=(floor(x+AC)+AD+1,floor(y)+1)
Y-parallelogram: P1=(floor(x),floor(y+AC))
P2=(floor(x),floor(y+AC)+1)
P3=(floor(x)+1,floor(y+AC)+AD)
P4=(floor(x)+1,floor(y+AC)+AD+1)
In the third step, the directional interpolation technique interpolates the intensity value of T from intensity values of P1, P2, P3, and P4. To interpolate the pixel along the direction, as illustrated in
ODI(x,y)=w1P1+w2P2+w3P3+w4P4
where w1, w2, w3, w4 are
w1=areaTBFP4
w2=areaTBEP3
w3=areaTAFP2
w4=areaTAEP1=1−w1−w2−w3
X- and Y-parallelograms are different in calculation of these weights:
X-parallelogram:
w1=(1−x−AC+floor(x+AC))*(1−y+floor(y))
w2=(x+AC−floor(x+AC))*(1−y+floor(y))
w3=(1−x−AC+floor(x+AC))*(y−floor(y))
Y-parallelogram:
w1=(1−x+floor(x))*(1−y−AC+floor(y+AC))
w2=(1−x+floor(x))*(y+AC−floor(y+AC))
w3=(x−floor(x))*(1−y−AC+floor(y+AC))
The terms and expressions which have been employed in the foregoing specification are used therein as terms of description and not of limitation, and there is no intention, in the use of such terms and expressions, of excluding equivalents of the features shown and described or portions thereof, it being recognized that the scope of the invention is defined and limited only by the claims which follow.
Patent | Priority | Assignee | Title |
10719916, | Aug 02 2018 | Apple Inc. | Statistical noise estimation systems and methods |
10762604, | Aug 02 2018 | Apple Inc. | Chrominance and luminance enhancing systems and methods |
11024012, | Aug 02 2018 | Apple Inc. | Directional scaling systems and methods |
11252300, | Oct 18 2018 | Sony Corporation; Sony Pictures Entertainment Inc | Training and upscaling of large size image |
11321813, | Aug 02 2018 | Apple Inc. | Angular detection using sum of absolute difference statistics systems and methods |
11551336, | Aug 02 2018 | Apple Inc. | Chrominance and luminance enhancing systems and methods |
11941785, | Aug 02 2018 | Apple Inc. | Directional scaling systems and methods |
Patent | Priority | Assignee | Title |
5666164, | Dec 10 1992 | Sony Corporation | Image signal converting apparatus |
6323905, | Dec 25 1997 | Sony Corporation | Picture conversion apparatus picture conversion method learning apparatus and learning method |
6434280, | Nov 10 1997 | SODIMENSION CORP | System and method for generating super-resolution-enhanced mosaic images |
6466702, | Apr 21 1997 | Purdue Research Foundation | Apparatus and method of building an electronic database for resolution synthesis |
6766067, | Apr 20 2001 | Mitsubishi Electric Research Laboratories, Inc. | One-pass super-resolution images |
7106914, | Feb 27 2003 | Microsoft Technology Licensing, LLC | Bayesian image super resolution |
7215831, | Apr 26 2001 | Georgia Tech Research Corp.; Georgia Tech Research Corporation | Video enhancement using multiple frame techniques |
7218796, | Apr 30 2003 | Microsoft Technology Licensing, LLC | Patch-based video super-resolution |
7239428, | Jun 10 2002 | Solectronics, LLC | Method of super image resolution |
7433545, | Mar 03 2004 | NORITSU KOKI CO , LTD | Image processing apparatus and image processing method for correcting image data |
8023561, | May 28 2003 | VIDEO 264 INNOVATIONS, LLC | Predictive interpolation of a video signal |
20040160439, | |||
20050105830, | |||
20060033936, | |||
20060290950, | |||
20080123998, | |||
20080291332, | |||
JP2005341337, | |||
JP2010039672, | |||
JP5233794, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 09 2011 | PAN, HAO | Sharp Laboratories of America, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 025936 | /0250 | |
Mar 10 2011 | Sharp Laboratories of America, Inc. | (assignment on the face of the patent) | / | |||
Oct 18 2013 | SHARP LABORATORIES OF AMERICA INC | Sharp Kabushiki Kaisha | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 031446 | /0186 |
Date | Maintenance Fee Events |
Oct 27 2014 | ASPN: Payor Number Assigned. |
Jan 16 2017 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Mar 15 2021 | REM: Maintenance Fee Reminder Mailed. |
Aug 30 2021 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Jul 23 2016 | 4 years fee payment window open |
Jan 23 2017 | 6 months grace period start (w surcharge) |
Jul 23 2017 | patent expiry (for year 4) |
Jul 23 2019 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jul 23 2020 | 8 years fee payment window open |
Jan 23 2021 | 6 months grace period start (w surcharge) |
Jul 23 2021 | patent expiry (for year 8) |
Jul 23 2023 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jul 23 2024 | 12 years fee payment window open |
Jan 23 2025 | 6 months grace period start (w surcharge) |
Jul 23 2025 | patent expiry (for year 12) |
Jul 23 2027 | 2 years to revive unintentionally abandoned end. (for year 12) |