METHODS AND APPARATUS FOR AUTOMATED NOISE AND TEXTURE OPTIMIZATION OF DIGITAL IMAGE SENSORS
20170318240 · 2017-11-02
Inventors
Cpc classification
H04N23/10
ELECTRICITY
G06T2207/20016
PHYSICS
G06T2207/20182
PHYSICS
H04N25/60
ELECTRICITY
International classification
Abstract
Systems and methods are disclosed for calibrating an image sensor using a source image taken from the image sensor and comparing it to a reference image. In one embodiment, the method may involve determining the luminance and chrominance values of portions of the image at successive frequency levels and calculating a standard deviation at each frequency level for both the source image and the reference image. The standard deviation values may be compared and a difference determined. Using unit vector search vectors, noise values may be calculated to determine sensor calibration values.
Claims
1. A method of tuning a noise level of an image sensor, the method comprising: determining a first set of frequency levels of an image produced by the image sensor using a set of low pass filters, the set of low pass filters comprising at least one bilateral low pass filter; determining a first set of chrominance noise values and luminance noise values corresponding to each frequency level of the first set of frequency levels; calculating a target set of noise values associated with each frequency level of the first set of frequency levels, the target set of noise values calculated based on comparing the first set of chrominance and luminance noise values to a second set of chrominance and luminance noise values of a reference image, the reference image captured using a calibrated image sensor; determining a first set of noise values associated with the image using a coarse search, the coarse search based on a first set of vectors, wherein each noise value of the first set of noise values corresponds to a frequency level of the first set of frequency levels; determining a second set of noise values associated with the image using a fine search, the fine search comprising a second set of vectors, wherein the second set of vectors are determined based on a noise value difference between the target set of noise values and the first set of noise values, wherein each noise value of the second set of noise values corresponds to a frequency level of the first set of frequency levels; updating a coefficient of the at least one bilateral low pass filter based on a difference between the second set of noise values and the first set of noise values; and adjusting the noise level of each pixel of the image sensor via applying the at least one bilateral low pass filter with the updated coefficient according to the target set of noise values.
2. The method of claim 1, wherein updating the at least one bilateral low pass filter is continued until the difference between the second set of noise values and the first set of noise values is within a matching range.
3. The method of claim 2, wherein the matching range is different for each frequency level.
4. The method of claim 1, wherein the first set of vectors and the second set of vectors each comprise a four-dimensional vector for each frequency level.
5. The method of claim 4, wherein the image and the reference image are captured at the same distance from a color calibration target, the color calibration target comprising an arrangement of colored regions.
6. The method of claim 5, wherein the coarse search is based on the following equation:
7. The method of claim 6, wherein the fine search is based on the following equation:
8. The method of claim 4, wherein the four-dimensional vector comprises four constants and each constant is a positive integer, and adjusting the noise level of each pixel of the image sensor comprises updating a noise reduction block of the image sensor.
9. An apparatus for tuning a noise level of an image sensor, the apparatus comprising: an image sensor configured to produce an image; a processor configured to: determine a first set of frequency levels of the image produced by the image sensor using a set of low pass filters, the set of low pass filters comprising at least one bilateral low pass filter; determine a first set of chrominance noise values and luminance noise values corresponding to each frequency level of the first set of frequency levels; calculate a target set of noise values associated with each frequency level of the first set of frequency levels, the target set of noise values calculated based on comparing the first set of chrominance and luminance noise values to a second set of chrominance and luminance noise values of a reference image, the reference image captured using a calibrated image sensor; determine a first set of noise values associated with the image produced by the image sensor using a coarse search, the coarse search based on a first set of vectors, wherein each noise value of the first set of noise values corresponds to a frequency level of the first set of frequency levels; determine a second set of noise values associated with the image produced by the image sensor using a fine search, the fine search comprising a second set of vectors, wherein the second set of vectors are determined based on a noise value difference between the target set of noise values and the first set of noise values, wherein each noise value of the second set of noise values corresponds to a frequency level of the first set of frequency levels; and update a coefficient of the at least one bilateral low pass filter based on a difference between the second set of noise values and the first set of noise values; and adjust the noise level of each pixel of the image sensor via applying the at least one bilateral low pass filter with the updated coefficient.
10. The apparatus of claim 9, wherein the processor is configured to update the at least one bilateral low pass filter until the difference between the second set of noise values and the first set of noise values is within a matching range.
11. The apparatus of claim 10, wherein the matching range is different for each frequency level.
12. The apparatus of claim 9, wherein the first set of vectors and the second set of vectors each comprise a four-dimensional vector for each frequency level.
13. The apparatus of claim 12, wherein the image and the reference image are captured at the same distance from a color calibration target, the color calibration target comprising an arrangement of colored regions.
14. The apparatus of claim 13, wherein the coarse search is based on the following equation:
15. The apparatus of claim 14, wherein the fine search is based on the following equation:
16. The apparatus of claim 15, wherein the four-dimensional vector comprises four constants and each constant is a positive integer, and adjusting the noise level of each pixel of the image sensor comprises updating a noise reduction block of the image sensor.
17. An apparatus, comprising: means for determining a first set of frequency levels of an image produced by an image sensor using a set of low pass filters, the set of low pass filters comprising at least one bilateral low pass filter; means for determining a first set of chrominance noise values and luminance noise values corresponding to each frequency level of the first set of frequency levels; means for calculating a target set of noise values associated with each frequency level of the first set of frequency levels, the target set of noise values calculated based on comparing the first set of chrominance and luminance noise values to a second set of chrominance and luminance noise values of a reference image, the reference image captured using a calibrated image sensor; means for determining a first set of noise values associated with the image produced by the image sensor using a coarse search, the coarse search based on a first set of vectors, wherein each noise value of the first set of noise values corresponds to a frequency level of the first set of frequency levels; means for determining a second set of noise values associated with the image produced by the image sensor using a fine search, the fine search comprising a second set of vectors, wherein the second set of vectors are determined based on a noise value difference between the target set of noise values and the first set of noise values, wherein each noise value of the second set of noise values corresponds to a frequency level of the first set of frequency levels; and means for updating a coefficient of the at least one bilateral low pass filter based on a difference between the second set of noise values and the first set of noise values; and means for adjusting a noise value of each pixel of the image sensor via applying the at least one bilateral low pass filter with the updated coefficient.
18. The apparatus of claim 17, wherein the means for updating the at least one bilateral low pass filter comprises means for updating the at least one bilateral low pass filter until the difference between the second set of noise values and the first set of noise values is within a matching range.
19. The apparatus of claim 18, wherein the matching range is different for each frequency level.
20. The apparatus of claim 17, wherein the first set of vectors and the second set of vectors each comprise a four-dimensional vector for each frequency level.
21. The apparatus of claim 20, wherein the image and the reference image are captured at the same distance from a color calibration target, the color calibration target comprising an arrangement of colored regions.
22. The apparatus of claim 21, wherein the coarse search is based on the following equation:
23. The apparatus of claim 22, wherein the fine search is based on the following equation:
24. The apparatus of claim 23, wherein the four-dimensional vector comprises four constants and each constant is a positive integer, and adjusting the noise level of each pixel of the image sensor comprises updating a noise reduction block of the image sensor.
25. The apparatus of claim 17, wherein: means for determining is a processor; means for calculating is the processor; means for updating is the processor; and means for storing is a memory.
26. A non-transitory, computer-readable medium comprising instructions executable by a processor of an apparatus, that causes the apparatus to: determine a first set of frequency levels of an image produced by an image sensor using a set of low pass filters, the set of low pass filters comprising at least one bilateral low pass filter; determine a first set of chrominance noise values and luminance noise values corresponding to each frequency level of the first set of frequency levels; calculate a target set of noise values associated with each frequency level of the first set of frequency levels, the target set of noise values calculated based on comparing the first set of chrominance and luminance noise values to a second set of chrominance and luminance noise values of a reference image, the reference image captured using a calibrated image sensor; determine a first set of noise values associated with the image produced by the image sensor using a coarse search, the coarse search based on a first set of vectors, wherein each noise value of the first set of noise values corresponds to a frequency level of the first set of frequency levels; determine a second set of noise values associated with the image produced by the image sensor using a fine search, the fine search comprising a second set of vectors, wherein the second set of vectors are determined based on a noise value difference between the target set of noise values and the first set of noise values, wherein each noise value of the second set of noise values corresponds to a frequency level of the first set of frequency levels; update a coefficient of the at least one bilateral low pass filter based on a difference between the second set of noise values and the first set of noise values; and adjust a noise value of each pixel of the image sensor via applying the at least one bilateral low pass filter with the updated coefficient.
27. The non-transitory computer-readable medium of claim 26, wherein the update of the at least one bilateral low pass filter is continued until the difference between the second set of noise values and the first set of noise values is within a matching range.
28. The non-transitory computer-readable medium of claim 27, wherein the matching range is different for each frequency level.
29. The non-transitory computer-readable medium of claim 26, wherein the first set of vectors and the second set of vectors each comprise a four-dimensional vector for each frequency level.
30. The non-transitory computer-readable medium of claim 29, wherein the image and the reference image are captured at the same distance from a color calibration target, the color calibration target comprising an arrangement of colored regions.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
DETAILED DESCRIPTION
[0028] The following detailed description includes certain illustrative embodiments of the subject matter. However, the disclosed subject matter can be embodied in a multitude of different ways. It should be apparent that the aspects herein may be embodied in a wide variety of forms and that any specific structure, function, or both being disclosed herein is merely representative. Based on the teachings herein one skilled in the art should appreciate that an aspect disclosed herein may be implemented independently of any other aspects and that two or more of these aspects may be combined in various ways. For example, an apparatus may be implemented or a method may be practiced using any number of the aspects set forth herein. In addition, such an apparatus may be implemented or such a method may be practiced using other structure, functionality, or structure and functionality in addition to, or other than one or more of the aspects set forth herein Disclosed herein are automatic noise and texture optimization of image sensor.
[0029] The examples, systems, and methods described herein are described with respect to techniques for calibrating image sensors (e.g., for noise and texture). The systems and methods described herein may be implemented on a variety of platforms and operating systems.
Quantitative Metrics for Noise and Texture
[0030] This following solution involves performing automatic noise and texture optimization by using Wavelet decomposition high frequency component sigma (standard deviation) and a specialized search engine for Wavelet denoise. In one embodiment, the noise and texture of an image may be quantified by calculating different levels of frequency in an image, and determining the luminance (or “luma”) and chrominance (or “chroma”) noise values for each level of frequency in the image.
[0031]
[0032] Still referring to
[0033] Still referring to
[0034]
[0035]
[0036] Still referring to
[0037] Still referring to
[0038] Still referring to
[0039]
[0040] Still referring to
[0041]
[0042]
[0043] Still referring to
[0044]
[0045] With continued reference to
[0046] With continued reference to
Where:
[0047] σ.sub.source: standard deviation value of the source image at a particular frequency level, [0048] σ.sub.target: standard deviation value of the target image at a particular frequency level, [0049] Ave σ.sub.target: average of the standard deviation values across each of the frequency levels.
[0050]
[0051] At block 810, the apparatus may determine the high frequency component or the sigma value (σ) at each frequency level. The high frequency component for each frequency level may be determined using a series of low pass filters to filter a series of frequencies from the output image of
[0052] At block 815, the apparatus may determine low pass filter values based on noise values at each frequency level using an initial search vector. The low pass filters of
[0053] In one embodiment, the coarse search algorithm may include equation (2):
Where:
[0054] n: number of patches in the color checker chart (e.g., number of color regions in a Macbeth ColorChecker chart); [0055] m: number of Wavelet decomposition frequency levels; [0056] l: subject wavelet level (e.g., Wavelet decomposition frequency level 4); [0057] k: subject patch number (e.g., Macbeth ColorChecker chart patch 4); [0058] p: values of the four constants in the four-dimensional vector (e.g., {1, 1, 1, 1}, can be any number between 0 and infinity.
The vector values representing initial vector values for a coarse search may be arbitrary and user selectable. The resulting curve may be monotonical, as there is only one root.
[0059] At block 820, a standard deviation value is calculated at each frequency level for each of Y, Cb, and Cr component of the output image based on the determined low pass filter values.
[0060] At block 830, the bilateral filter values may be updated based on a new search vector. The new search vector may be a unit vector. The new search vector is based on the initial search vector used in the coarse search, and is part of a fine search. The updated bilateral filter values may be based on the difference between the calculated standard deviation values and the target standard deviation values in the coarse search at each frequency level. The bilateral filter values may be updated several times. In such a case, a new search vector is used. Table 1 below illustrates the search vectors used for each frequency level in the fine search.
TABLE-US-00001 Frequency Level Search Vector 1 1 0 0 0 2 0 1 0 0 3 0 0 1 0 4 0 0 0 1
[0061] Table 1 illustrates an example set of search vectors for each frequency level, using a fine search. In this example, there are four frequency levels, numbered 1-4. The search vector associated with frequency level 1 is {1, 0, 0, 0}, the search vector associated with frequency level 2 is {0, 1, 0, 0}, the search vector associated with frequency level 3 is {0, 0, 1, 0}, and the search vector associated with frequency level 4 is {0, 0, 0, 1}. The fine search is a specialized search method for Wavelet denoise architecture. Unlike current methods, the fine search uses a separate target for each search vector, eliminating a local minimum limitation. For each search vector, equation (3) below defines the cost function to find pl, which is edge softness for 1 level, where equation (3) is equal to zero or a minimum value.
Where:
[0062] l: subject wavelet level (e.g., Wavelet decomposition frequency level 4); [0063] k: subject patch number (e.g., Macbeth ColorChecker chart patch 4); [0064] MSE: Mean Square Error.
When a first round of all four search vectors is completed, the cost function equation (4) below may be used as a stop condition, using the delta of all four frequency levels. Equation (4) may represent a fine search.
Where:
[0065] MSE: Mean Square Error.
Due to the nature of the wavelet de-noise, the above meets convergence criteria.
[0066] At block 835, the processor may determine whether the updated bilateral filters produce a standard deviation value, or high frequency component, that matches the target values of the reference image. The match criteria may be modified based on the image sensor being used or based on user configuration. For example, the image sensor may differ from the sensor used to capture the reference image by way of the color filter array configuration, size of pixels, number of pixels, or any other difference in image sensor configuration. The user may also determine that a match exists when the standard deviation difference between the source image and the target image at each frequency level is within 10%. This is an example only, as other percentage values may be used. In another embodiment, the user may set a matching tolerance for each frequency level. For example, the user may set a matching tolerance of 30% at the first frequency level, a matching tolerance of 20% at the second frequency level, a matching tolerance of 10% at the third frequency level, etc. In this case, a match exists when the standard deviation difference between the source image and the target image at each frequency level is within the range prescribed to each frequency level. This is an example only, as other percentage values may be used. If the matching criteria is not met, the fine search vectors may be reused with the most recently used bilateral filters. In another embodiment, the search vectors may be updated to new values.
[0067] At block 840, if it is determined that the matching criteria is met for all frequency levels, the sensor may be calibrated based on the bilateral filter values. The image sensor being calibrated will generally have several resources or “blocks” for adjusting image parameters related to the image sensor. For example, the image sensor may include a color/contrast block, a brightness block, a noise block, an offset block, a gamma block, etc. Each block may be calibrated using a look-up table that correlates the bilateral filter coefficient to a parameter value in the block. For example, a weak bilateral filter coefficient may filter a low amplitude ratio (e.g., −100 to −70 dB) while a strong bilateral filter coefficient may filter a high amplitude ratio (e.g., 70 to 100 dB). The look-table may include parameter values for each block, where each parameter value, or range of parameter values, are associated with specific bilateral filter coefficient, or range of bilateral filter coefficients.
[0068] In one embodiment, the noise block of an image sensor may modulate a high-gain column or row amplifier for a column of pixels for increasing or decreasing the sensitivity of the pixels of that column or row. Another technique for adjusting noise levels of an image sensor may be by adjusting well capacity for each pixel of the image sensor, which modulates noise, leading to a modulated signal-to-noise ratio and/or a nonlinear sensor response. Still another technique for increasing
[0069]
y[n]=l[n]+((−1).sup.n.sup.
Where:
[0070] y[n]: CFA data value at point n=[n.sub.1,n.sub.2], [0071] l[n]: luminance value at point n=[n.sub.1,n.sub.2], [0072] c.sub.1[n]: chrominance value at point n=[n.sub.1,n.sub.2], [0073] c.sub.2[n]: chrominance value at point n=[n.sub.1,n.sub.2].
[0074] In step 915, the processor calculates a target set of noise values associated with each frequency level. The target noise values may comprise a set of target chrominance and luminance noise values the sensor being calibrated is to be adjusted to match. The target noise values may be calculated based on the type of sensor being calibrated, the number of pixels, the CFA pattern, etc. The target set of noise values may also be determined by looking up known values in a memory component. The target set of noise values may also be determined by capturing an image using a calibrated image sensor and using the wavelet decomposition technique illustrated in
[0075] In step 920, the processor may determine a first set of noise values associated with the image produced by the image sensor using a coarse search. The coarse search may be an arbitrary four dimensional vector of a region of an image captured by the uncalibrated sensor, or the sensor being calibrated. A search vector may be used for each of the luma and chroma channels. For example, the luma channel may use the following search vector: {0, 0.25, 0.5, 0.5} while the chroma channels may use the following vector: {0,0,0,0}. In another example, an initial search vector for the coarse search algorithm may be {0.1, 0.1, 0.1, 0.1} for each of the chroma and luma channels. The search algorithm may use a pre-defined noise weight parameter during optimization. This value may, for example, be the system's default value. In a situation that includes a bright light luma channel, using a search vector of {0,0,0,0} may provide more texture on a high frequency object. Similarly, for a low light luma channel, a search vector of {0, 0.25, 0.5, 0.5} because {0,0,0,0} may cause artifacts.
[0076] In step 925, the processor may determine a second set of noise values associate with the image produced by the image sensor using a fine search. The fine search may be used to bring the four vector values closer to matching the target noise values. As with the coarse search vectors, the fine search vectors may be used to generate a σ value that matches the target σ of each frequency level, and each channel.
[0077] In step 930, the processor may update the at least one bilateral low pass filter based on a difference between the first set of noise values and the second set of noise values. The bilateral low pass filters may be updated based on the σ value associated with either of the coarse or fine search vectors using a look-up table. The bilateral filters may also be updated based on each of the frequency levels associated with the vector values for the luma and chroma channels.
Other Considerations
[0078] Implementations disclosed herein provide systems, methods and apparatus for submicron wafer alignment. One skilled in the art will recognize that these embodiments may be implemented in hardware, software, firmware, or any combination thereof.
[0079] Information and signals disclosed herein may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
[0080] The various illustrative logical blocks, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
[0081] The techniques described herein may be implemented in hardware, software, firmware, or any combination thereof. Such techniques may be implemented in any of a variety of devices such as general purposes computers, wireless communication device handsets, or integrated circuit devices having multiple uses including application in wireless communication device handsets and other devices. Any features described as devices or components may be implemented together in an integrated logic device or separately as discrete but interoperable logic devices. If implemented in software, the techniques may be realized at least in part by a computer-readable data storage medium comprising program code including instructions that, when executed, performs one or more of the methods described above. The computer-readable data storage medium may form part of a computer program product, which may include packaging materials. The computer-readable medium may comprise memory or data storage media, such as random access memory (RAM) such as synchronous dynamic random access memory (SDRAM), read-only memory (ROM), non-volatile random access memory (NVRAM), electrically erasable programmable read-only memory (EEPROM), FLASH memory, magnetic or optical data storage media, and the like. The techniques additionally, or alternatively, may be realized at least in part by a computer-readable communication medium that carries or communicates program code in the form of instructions or data structures and that can be accessed, read, and/or executed by a computer, such as propagated signals or waves.
[0082] Processor(s) in communication with (e.g., operating in collaboration with) the computer-readable medium (e.g., memory or other data storage device) may execute the instructions of the program code, and may include one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, an application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Such a processor may be configured to perform any of the techniques described in this disclosure. A general purpose processor may be a microprocessor; but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Accordingly, the term “processor,” as used herein may refer to any of the foregoing structure, any combination of the foregoing structure, or any other structure or apparatus suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated software or hardware configured for imaging, encoding, and/or decoding. Also, the techniques could be fully implemented in one or more circuits or logic elements.
[0083] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (e.g., a chip set). Various components, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, as described above, various units may be combined in a codec hardware unit or provided by a collection of inter-operative hardware units, including one or more processors as described above, in conjunction with suitable software and/or firmware.
[0084] As used herein, the term “plurality” denotes two or more. For example, a plurality of components indicates two or more components. Conditional language used herein, such as, among others, “can,” “might,” “may,” “e.g.,” and the like, unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain embodiments include, while other embodiments do not include, certain features, elements and/or states. Thus, such conditional language is not generally intended to imply that features, elements and/or states are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without author input or prompting, whether these features, elements and/or states are included or are to be performed in any particular embodiment. The terms “comprising,” “including,” “having,” and the like are synonymous and are used inclusively, in an open-ended fashion, and do not exclude additional elements, features, acts, operations, and so forth. Also, the term “or” is used in its inclusive sense (and not in its exclusive sense) so that when used, for example, to connect a list of elements, the term “or” means one, some, or all of the elements in the list. The term “determining” encompasses a wide variety of actions and, therefore, “determining” can include calculating, computing, processing, deriving, investigating, looking up (e.g., looking up in a table, a database or another data structure), ascertaining and the like. Also, “determining” can include receiving (e.g., receiving information), accessing (e.g., accessing data in a memory) and the like. Also, “determining” can include resolving, selecting, choosing, establishing and the like.
[0085] The phrase “based on” does not mean “based only on,” unless expressly specified otherwise. In other words, the phrase “based on” describes both “based only on” and “based at least on.”
[0086] Headings are included herein for reference and to aid in locating various sections. These headings are not intended to limit the scope of the concepts described with respect thereto. Such concepts may have applicability throughout the entire specification.
[0087] Although the foregoing has been described in connection with various different embodiments, features or elements from one embodiment may be combined with other embodiments without departing from the teachings of this disclosure. However, the combinations of features between the respective embodiments are not necessarily limited thereto. Various embodiments of the disclosure have been described. These and other embodiments are within the scope of the following claims.