This invention relates to the decoding of color components, for example a Bayer-mask or like coded image.
A Bayer mask is typically used to allow color component signals to be derived from any array of CCD or other sensing elements, which do not in themselves discriminate color. A Bayer mask will typically be used to derive red (R), green (G) and blue (B) signals and comprises a rectangular array of R, G and B filters. Since the human eye is more sensitive to brightness than color, and since the green signal contributes most to the perception of brightness, G filters predominate in the Bayer mask and are quincunxially sampled.
A Bayer mask decoder is used to convert a Bayer mask signal (which has for each sensing element—or pixel—only one of the three R, G and B signals) to an image signal which has at each pixel an R signal, a G signal and a B signal.
It is well known that cross-color and “barber's pole” artefacts can result from basic Bayer mask decoders.
Many suggestions have been made for producing more sophisticated Bayer mask decoders and reducing these artefacts. Reference is directed, for example, to GB2426881A which discloses a decoder based on non-adaptive linear filters. This decoder performs well on the G component but exhibits cross-color artefacts on the more sparsely sampled R and B components.
There is here provided a method of decoding a Bayer-mask or like coded image comprising a value for one of a set of colors at each pixel of the image to provide a decoded value for each of the set of colors at each pixel of the image, comprising the steps of deriving from the coded image an array having for a selected color a value at each pixel of the image; calculating a slope at each pixel of the array, expressed as an angle; calculating an activity at each pixel; converting the slope angle and the activity into a complex number for each pixel, of modulus equal to the activity and argument equal to twice the slope angle; expressing said complex numbers in Cartesian coordinates to form a Cartesian slope signal and filtering the Cartesian slope signal with a linear spatial filter to derive a slope measure, preferably quantised to 4, 8, 16 or more possible values; calculating from the array a color difference signal at each of the pixels associated with other colors; and interpolating color difference signals using a slope-adaptive interpolation filter steered by said slope measure.
Typically, the selected color is green and the other colors are red and blue.
The step of calculating an activity at each pixel may comprise measuring a gradient or more specifically forming the absolute value of a gradient at each pixel and applying a spatial filter.
The step of interpolating may comprise combining pairs of opposite one-sided filters. The interpolation output may be taken from the filter pair corresponding to the quantized slope angle. The interpolation output is a cross-fade between the filter pairs corresponding to the two nearest slope angles.
Advantageously, the Cartesian slope signal may be filtered using the one-sided filters to generate a slope consistency signal. A mix can then be formed between a linearly decoded image and the output of the interpolating step, controlled by that slope consistency signal.
The invention will now be described by way of example with reference to the accompanying drawings in which:
Referring to
It should be noted in the following descriptions that compensating delays are not always shown, and where not shown are assumed to have been applied where necessary at the inputs to any circuits where two or more signals are combined.
Referring to
An example filter 104 is shown below (with the quoted values to be divided by 32) with zeros placed at the off-grid input sample locations.
Thus, when this 5 by 5 filter is centred on a B or R pixel, the operating values are:
And when the filter is centred on a G pixel, the operating values are:
It will be noted that this filter example, in addition to providing G values at the R and B sites, also applies some, relatively weak, filtering of the G samples.
Next, the input signal 102 is processed in circuit 108 to form color difference signals R-G and B-G (110). The color difference circuit 108 consists of a subtractor operating at the input R and B sample sites which subtracts the G samples 106 at those sites from the R and B samples, followed by a bilinear interpolator well known in the art to generate a complete grid 110 of R-G and of B-G samples.
The full-resolution green signal 106 is applied to a horizontal gradient circuit 112 to produce a horizontal gradient signal 114, and to a vertical gradient circuit 116 to produce a vertical gradient signal 118. The two gradient signals 114 and 118 are applied to a slope calculation circuit 120 to produce a slope signal 122 and to an activity calculation circuit 124 to produce an activity signal 126.
The operation of circuits 112, 116, 120 and 124 will now be described in greater detail with reference to
An example of the filter circuit 232 is a [1 2 1]/4 aperture applied horizontally and then vertically.
There follows a filtering process on the slope signal. The problem with filtering an angle is that of phase wraparound—the fact that an angle just above −π is very close to an angle just below +π. This can be solved by going back to Cartesian coordinates. However, in handling the slope there is an additional wraparound problem because slopes differing by π should be considered to be equal, that is to say they should be processed modulo π. The solution is to double the original slope angles, then convert back to Cartesian coordinates prior to filtering. The slope values are effectively weighted with the activity prior to filtering, by including the activity in the coordinate conversion process.
Returning to
The activity signal 126 is also filtered in activity filter circuit 140 to produce a filtered activity signal 142. A suitable aperture for this filter is also [1 2 2 2 1]/8 applied first horizontally, then vertically.
A normalization step is then carried out in which the filtered slope signal 138 is divided by the filtered activity signal 142 in a normalization circuit 144 to produce a normalized slope signal 146.
The normalized slope signal 146 is converted in circuit 148 to a slope index signal 150 which is in the range [0, 8). The action of circuit 148 is first to recover an angle from the slope signal using the ATAN2 function, then to take the angle modulo π (effectively undoing the multiplication by 2 carried out in circuit 128), and finally to rescale linearly from the range [0, π) to [0, 8) to obtain the slope index signal 150.
The slope index controls the application of a set of “directional filters” which are based on a one-dimensional low-pass filter rotated at appropriate intervals. There may as examples be 2, 4, 8, 16 or 32 directional filters. With the example of 16 filters, which may be an advantageous compromise between complexity and accuracy, the filters will be spaced by π/8 or 22.5°. The use of one-sided filters enables the creation of a “slope consistency measure” as discussed.
Here is an example of a resulting one-sided directional filter with an angle of 0°:
and another with an angle of +22.5°:
In these examples, the coefficients are expressed as multiples of 1/1024. Moreover, in these examples, the coefficient having a value of “50” (i.e., for the one-side direction filter with an angle of 0°) and a value of “51” (i.e., for the one-side direction filter with an angle of +22.5°) correspond to the current sample location (i.e. is the zero-delay coefficient).
Referring again to
The operation of the selection circuit 156 will now be described in more detail. Referring to
In a simpler version of the selection circuit, the truncation circuit could be replaced by a rounding circuit and the data selector selects a single output based on the rounded slope index.
The steered interpolation function has been described using directional filters applied in parallel. It will be seen that only two or even one filter outputs are ultimately used for each sample. Equivalent implementations, for example those realised in software, may, without departing from the scope of this invention, generate only those filter outputs that are ultimately required.
Note that all the main signal paths of the steered interpolation function are in fact two parallel color difference signals processed identically.
The raw directionally decoded color difference signals 158 are further modified as a function of a slope consistency measure which will now be described.
Referring again to
The two opposing one-sided signals 166 and 168, together with the unfiltered slope signal 146 and the filtered activity signal 142, are passed to a slope consistency measurement circuit 170 to produce a slope consistency signal 172.
The operation of the slope consistency measurement circuit 170 will now be described in more detail. Referring to
Referring again to
Finally, the decoded color difference signals 176 is added to the decoded green signal 106 in adding circuit 178 to produce final decoded red and blue signals 180.
The activity signal 126 is determined by summing the squares of both signals 114 and 188. The sum of these signals is then square rooted and filtered to determine the activity signal 126.
It will be understood that a number of the operations performed by the above described apparatus can be omitted in certain applications and that the filter coefficients and other parameters of the described circuits are given by way of example only.
In a more general sense, a process to be performed by apparatus according to the invention might include the following steps:
In a variation:
Mores detail of some of these processes will be given below. Pixels from the original Bayer coded image are referred to as pd and pixels decoded as above are referred to as p2.
Slope and Activity Measurement
Gradients gx, gy are calculated for each pixel using for example a [−1 0+1] aperture applied horizontally and vertically. From these a slope and an activity value is generated for each pixel. Expressing the gradient as a complex number,
g=gx+igy
then the slope is given by
θ=Arg g, θ ∈[0, 2π)
and the activity measure by
α=|g|
The activity measure is filtered horizontally (with for example a filter [1 2 1]/4) and then vertically (with for example a filter [1 2 1]/4) to make {acute over (α)}.
Slope Filtering
Because of the wraparound issues described above, the original slope angle is doubled, and converted back to Cartesian coordinates prior to filtering. The slope values are weighted with the activity prior to filtering. So the signal to be filtered, considered as a complex number, is
c={acute over (α)}e2iθ
This signal c is filtered horizontally and then vertically with [1 2 2 2 1]/8 and is normalized by dividing by the filtered activity measure {acute over (α)} further filtered horizontally and then vertically, also with [1 2 2 2 1]/8, to obtain a filtered complex slope signal ć. The argument of the result is taken modulo π as the filtered slope ś.
The filtered slope is turned into a “slope index” in the range [0, 7):
The slope index controls the application of the “directional filters” which are based on a one-dimensional low-pass filter rotated at appropriate intervals°. The filter coefficients may be calculated as follows. The use of one-sided filters is optional but enables the creation of a “slope consistency measure” as discussed.
Calculation of Directional Filters
The starting point is a one-sided, one-dimensional low-pass filter with coefficients [1 2 2 2 2 2 2 2 1]/16, where the underlined 1 represents the zero-delay filter tap (the time direction of the other coefficients is arbitrary). Considering this filter as a signal in two-dimensional space (surrounded by zeros), it is upconverted by a factor of 16 using a sharp-cut filter. The resulting matrix of coefficients is rotated by multiples of π/8 from 0 to 7, using bilinear interpolation, and then downconverted by 16 in both dimensions. The resulting filters will be applied on a pixel grid to the horizontally and vertically 2:1 subsampled color difference signals R-G and B-G, so each filter has four subsets of coefficients, each corresponding to an output sample phase with respect to the subsampled input. Each of the four subsets is therefore normalized by dividing by the sum of the coefficients within each subset. In principle, the one-sided filters need not be normalized in four phases because they are not being used for interpolation.
The whole process is repeated (notionally at least—further calculations are not required) using a reflected version of the one-sided filter: [1 2 2 2 2 2 2 2 1]/16. The two sets of one-sided filters are used for slope consistency calculations. The directional filter actually used to interpolate the R-G and B-G color difference signals is the average of the two one-sided filters for each direction.
Steered Interpolation
In general, the appropriate phase of two of the directional filters is applied to the interpolation of each sample of the color difference signals. The two filters are those corresponding to the floor and ceiling (modulo 8) of the slope index {tilde over (s)} for each pixel. The outputs of the two filters are mixed linearly in proportion to the complement of the fractional part of the slope index. It does not cost too much in picture quality to use only one filter corresponding to the nearest slope. But in most implementations it is probably necessary to apply all filters in parallel anyway, so the additional implementation cost of mixing two filter outputs is low. The resulting color difference signals are added to the interpolated green signal to give interpolated red and blue signals. This result is known as the “raw” directionally decoded picture pd and is further controlled as a function of the slope consistency measure which will now be described.
Slope Consistency Measure
To measure slope consistency, the one-sided directional filters are each applied to the filtered complex slope signal ć. The integer and fractional parts of the slope index are handled in the same way as for the steered interpolation. The slope consistency α is defined as follows:
α={acute over (α)}e−6.67min{|F
where Fa and Fb are the one-sided directional filters. The modulus of the slope signal may be set to 1 for this calculation.
Final Output
The final output ps is a linear mix of the output p2 and the raw decoded picture pd according to the slope consistency measure:
ps=αpd+(1−α)p2
It will be understood that a wide variety of modifications are possible without departing from the scope of this invention. Different techniques can be employed for deriving G (or appropriate other color) values at each pixel. Existing sample values can be maintained, with interpolation being used to provide G values at R and B sites. Or, as in the examples above, G values can be interpolated at every pixel. The slope measurement can be made by using the original input, or one color of the original input, rather than the interpolated G values. The slope measurement can take many forms as can the activity measure, using in each case the knowledge of the skilled man. Color difference signals can be interpolated using a variety of slope-adaptive interpolation filters steered in each case by the slope measure.
Number | Date | Country | Kind |
---|---|---|---|
1702627.9 | Feb 2017 | GB | national |
The current application is a continuation of U.S. patent application Ser. No. 15/899,036, filed Feb. 19, 2018, which claims priority to United Kingdom Patent Application No. 1702627.9, filed Feb. 17, 2017, the entire contents of each of which are hereby incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
6781626 | Wang | Aug 2004 | B1 |
6832009 | Shezaf | Dec 2004 | B1 |
6978050 | Hunter | Dec 2005 | B2 |
7088392 | Kakarala | Aug 2006 | B2 |
7142239 | Cho | Nov 2006 | B2 |
7242811 | Fenney | Jul 2007 | B2 |
7305123 | Messina | Dec 2007 | B2 |
7653240 | Otobe et al. | Jan 2010 | B1 |
8111299 | Lukac | Feb 2012 | B2 |
8422771 | Tamburrino et al. | Apr 2013 | B2 |
20080240559 | Malvar | Oct 2008 | A1 |
20090010539 | Guamera et al. | Jan 2009 | A1 |
20090066821 | Achong et al. | Mar 2009 | A1 |
20090252408 | Shi | Oct 2009 | A1 |
20110032396 | Park et al. | Feb 2011 | A1 |
20110090242 | Cote et al. | Apr 2011 | A1 |
Number | Date | Country |
---|---|---|
1050847 | Nov 2000 | EP |
2293238 | Mar 2011 | EP |
Entry |
---|
Search Report from the United Kingdom Intellectual Property Office for Application No. GB1702627 9 dated Aug. 4, 2017 (1 page). |
Freeman, William T et al., “Steerable Filters for Early Vision, Image Analysis, and Wavelet Decomposition”, the Media Laboratory and Dept. of Brain and Cognitive Sciences, 1990, pp. 406-415, Massachusetts Institute of Technology, Cambridge, MA. |
Huang, Yea-Shuan et al., “Effective Color-Difference-Based Interpolation Algorithm for CFA Image Demosaicking”, Department of Computer Science Information Engineering, Part I, 2011, pp. 457-469, Chung Hwa University, Hsinchu, Taiwan. |
Extended European Search Resort from the European Patent Office for Application No. 18157494.8 dated Jun. 29, 2018 (11 pages). |
Number | Date | Country | |
---|---|---|---|
20200234403 A1 | Jul 2020 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 15899036 | Feb 2018 | US |
Child | 16840848 | US |