The techniques described herein relate generally to techniques of processing an image to be enhanced, and more specifically to modifying pixel values using a nonlinear transformation.
An image may be captured by an image capture device (e.g., an image sensor of a digital camera). The captured image may be of poor quality due to conditions in which the image was captured. For example, the image may have noise due to insufficient lighting, short exposure time, and/or other conditions. Furthermore, the captured image may be of poor quality due to limitations of the image capture device. For example, the image capture device may not have a mechanism for compensating for the conditions in which the image was captured.
The techniques described herein provide for transforming image intensity values of an image (e.g., pixel values) using nonlinear techniques. The transformed images can be used for image enhancement (e.g., as a preprocessing step prior to performing image enhancement). For example, the nonlinear intensity transformation techniques can provide for efficient denoising, better low-precision image processing, and/or the like, compared to performing image processing on the original image.
According to one aspect, a computer-implemented method of processing an image. The method comprises: using at least one processor to perform: obtaining an input image comprising pixels of a first bit depth; quantizing the input image at least in part by applying a first nonlinear transform to pixel intensities of the input image to generate a quantized input image comprising pixels of a second bit depth, wherein the second bit depth is less than the first bit depth; and providing the quantized input image for image processing.
In one embodiment, quantizing the input image comprises: obtaining a transformed input image from applying the first nonlinear transform to the pixel intensities of the input image; and applying a surjective mapping to pixel intensities of the transformed input image to obtain the quantized input image, wherein the surjective mapping maps pixel intensities of the first bit depth to pixel intensities of the second bit depth.
In one embodiment, the second bit depth comprises a first pixel intensity and a second pixel intensity, wherein the first pixel intensity is less than the second pixel intensity; and quantizing the input image comprises mapping a fewer number of pixel intensities of the first bit depth to the first pixel intensity than to the second pixel intensity.
In one embodiment, the method further comprises: obtaining, from the image processing pipeline, an output image comprising pixels of the second bit depth; and de-quantizing the output image at least in part by applying a second nonlinear transform to pixel intensities of the output image to generate a de-quantized output image comprising pixels of the first bit depth. In one embodiment, the second nonlinear transform comprises an inverse of the first nonlinear transform.
In one embodiment, providing the quantized input image to the image processing pipeline comprises providing the quantized input image to a neural processor. In one embodiment, providing the quantized input image to the image processing pipeline comprises providing the quantized input image to a digital signal processor (DSP). In one embodiment, the image processing pipeline comprises one or more processors that are of lower power than the at least one processor.
In one embodiment, the first bit depth is 10 bits, 12 bits, 14 bits, or 16 bits. In one embodiment, the second bit depth is 8 bits. In one embodiment, the first bit depth is 10 bits, 12 bits, 14 bits, or 16 bits; and the second bit depth is 8 bits.
In one embodiment, the image processing pipeline comprises a machine learning model trained using a plurality of quantized images comprising pixels of the second bit depth; and providing the quantized input image to the image processing pipeline comprises providing the quantized input image to the machine learning model to obtain an enhanced output image.
According to another aspect, a computer-implemented method of training a machine learning model for image enhancement is provided. The method comprises: using at least one processor to perform: obtaining a plurality of images comprising pixels of a first bit depth; quantizing the plurality of images at least in part by applying a nonlinear transform to pixel intensities of the plurality of images to generate a plurality of quantized images comprising pixels of a second bit depth, wherein the second bit depth is less than the first bit depth; and training the machine learning model using the plurality of quantized images.
According to one embodiment, the plurality of images comprises input images and target output images and training the machine learning model using the plurality of quantized images comprises applying a supervised learning algorithm to quantized input images and quantized target output images.
According to one embodiment, the machine learning model comprises a neural network. According to one embodiment, training the machine learning model using the plurality of quantized images comprises training the machine learning model to denoise an input image.
According to another aspect, a computer-implemented method of enhancing an image is provided. The method comprises: using at least one processor to perform: obtaining an input image to be enhanced; applying a nonlinear transform to pixel intensities of the input image to obtain a transformed input image; generating, using the transformed input image, an input be provided to a trained machine learning model; and providing the generated input to the trained machine learning model to obtain an enhanced output image.
In one embodiment, the input image has a first variance of a noise property across the pixel intensities of the input image; the transformed input image has a second variance of the noise property across the pixel intensities of the input image; and the second variance is less than the first variance. In one embodiment, the noise property is noise standard deviation.
In one embodiment, the trained machine learning model is trained to denoise the input. In one embodiment, the trained machine learning model comprises a neural network. In one embodiment, the trained machine learning model is generated by applying a supervised training algorithm to training data.
In one embodiment, the input image comprises pixels of a first bit depth;
generating the input using the transformed input image comprises: quantizing the transformed input image to obtain a quantized input image comprising pixels of a second bit depth, wherein the second bit depth is less than the first bit depth; and providing the generated input to the trained machine learning model comprises providing the quantized input image as the input to the trained machine learning model. In one embodiment, quantizing the transformed input image comprises applying a surjective mapping to pixel intensities of the transformed input image, wherein the surjective mapping maps the pixel intensities of the first bit depth to pixel intensities of the second bit depth.
In one embodiment, the second bit depth comprises a first pixel intensity and a second pixel intensity, wherein the first pixel intensity is less than the second pixel intensity; and
quantizing the input image comprises mapping a fewer number of pixel intensities of the first bit depth to the first pixel intensity than to the second pixel intensity.
There has thus been outlined, rather broadly, the features of the disclosed subject matter in order that the detailed description thereof that follows may be better understood, and in order that the present contribution to the art may be better appreciated. There are, of course, additional features of the disclosed subject matter that will be described hereinafter and which will form the subject matter of the claims appended hereto. It is to be understood that the phraseology and terminology employed herein are for the purpose of description and should not be regarded as limiting.
Various aspects and embodiments of the application will be described with reference to the following figures. It should be appreciated that the figures are not necessarily drawn to scale. Items appearing in multiple figures are indicated by the same reference number in all the figures in which they appear.
Turning now to the drawings, systems and methods for nonlinear image intensity transformation for denoising and image processing in accordance with embodiments of the invention are described. An image captured by an image capture device (e.g., using an image sensor) may be represented by a higher dynamic range than a computing device (e.g., a processor) is equipped to handle. For example, an image captured using a CMOS image sensor may have pixels of 14-bit depth, while a low power digital signal processor (DSP), neural processing unit (NPU), and/or the like, may be limited to processing images with pixels of 8-bit depth. The DSP, NPU, and/or the like may be limited to 8-bit inputs and/or may be configured to perform 8-bit operations. Conventional systems may apply linear quantization to an image to reduce the bit depth of the image for processing by the computing device. However, such quantization of the image can often lead to information loss and thus lower image quality of the processed image.
Many embodiments of the invention recognize that there can be a nonlinear relationship between luminance and human visual perception. For example, humans viewing a digital image are typically more sensitive to absolute intensity changes of pixels or areas of pixels at low luminance (e.g., low pixel intensities) than to changes at high luminance (e.g., high pixel intensities). Accordingly, described herein are techniques of nonlinear image intensity transformation and/or quantization that can mitigate the loss of perceived image quality resulting from image processing operating on quantized image data. Techniques described herein exploit the nonlinear relationship between luminance and human visual perception to obtain transformed images with lower loss in image quality. Some embodiments apply nonlinear intensity transformations to an image and quantize the image to reduce bit depth of the image while minimizing discrimination among low pixel intensities.
Noise properties may vary with pixel intensities in an image. For example, the standard deviation of noise may vary with pixel intensity. Certain embodiments of the invention recognize that complexity of a machine learning model trained for image enhancement (e.g., denoising) increases when images that are to be enhanced have a high variance in noise properties (e.g., standard deviation) across pixel intensities. For example, a neural network model being trained to enhance images (e.g., by denoising the images) may require more layers, channels, and thus weights when input images have high variance in noise standard deviation across pixel intensities because the model needs to account for multiple noise levels. As the complexity of the machine learning model increases, the efficiency of a computing device employing the machine learning model decreases because the computing device may require more computations, memory, and power to enhance (e.g., denoise) the image. For example, a neural processor enhancing an image by executing a neural network trained for denoising becomes less efficient as the number of layers of the neural network increase because the computing device requires more computation, memory, and power per image pixel to denoise the image.
Accordingly, some techniques described herein apply a nonlinear transform to pixel intensities of an image to reduce noise property variation in the image across pixel intensities. The lower noise property variation across pixel intensities can reduce the complexity of the machine learning model needed to enhance the image, as the model is required to denoise a smaller range of noise levels. Thus, a computing device that uses the machine learning model may process the image more efficiently. Some embodiments apply a nonlinear transform to pixel intensities of an image in conjunction with quantization or requantization of the image. Some embodiments apply a nonlinear transform to pixel intensities of an image without quantizing the image.
In additional embodiments of the invention, an image or images prepared by techniques such as those described here can be used as training data for a machine learning model or can be provided to a trained machine learning model as input data to be enhanced. Systems and methods for enhancing images and training machine learning models are disclosed in US. Pat. Pub. No. 2020/0051217 (application Ser. No. 16/634,424) to Shen et al. (the '217 Publication), the relevant portions of which are hereby incorporated by reference in their entirety and a copy of which is enclosed as Appendix A.
In the following description, numerous specific details are set forth regarding the systems and methods of the disclosed subject matter and the environment in which such systems and methods may operate, etc., in order to provide a thorough understanding of the disclosed subject matter. Some embodiments described herein address the above-described issues with conventional image processing techniques. However, it should be appreciated that not every embodiment described herein addresses every one of these issues. It should also be appreciated that embodiments of the invention described herein may be used for purposes other than addressing the above-discussed issues of conventional image processing techniques. In addition, it will be understood that the examples provided below are exemplary, and that it is contemplated that there are other systems and methods that are within the scope of the disclosed subject matter.
As illustrated in the example of
As illustrated in
In some embodiments, the nonlinear transform 102A may include a logarithmic function. In some embodiments, the nonlinear transform may include an exponential function. In some embodiments, the nonlinear transform may include a combination of multiple functions (including a combination of both linear function(s) and/or nonlinear function(s)). Examples of nonlinear functions that may be included in the nonlinear transform 102A are described herein, which are intended to be illustrative and non-limiting. Thus, some embodiments are not limited to nonlinear functions described herein.
An image obtained by the image preprocessing system 102 may have pixel values of a first bit depth (e.g., 10-bit depth, 12-bit depth, 14-bit depth, or 16-bit depth), i.e., the number of bits of information to represent a value. As one skilled in the art will recognize, pixel values may have one or more components, where different components represent the intensity of different characteristics of the particular pixel, such as, but not limited to, brightness, luminance, chrominance, and/or color channels (e.g., blue, red, green).
The image preprocessing system 102 may be configured to quantize the image to obtain a quantized image having pixel values of a second bit depth (e.g., 5-bit depth, 6-bit depth, 7-bit depth, or 8-bit depth), where the second bit depth is less than the first bit depth. The image preprocessing system 102 may provide the quantized image to the image processing system 106 (e.g., where the image processing system 106 is unable to process images with pixels of the first bit depth). In some embodiments, the image preprocessing system 102 can be configured to quantize the image by (1) applying the nonlinear transform 102A to pixel intensities of the image to obtain a transformed image; and (2) applying a surjective mapping to pixel intensities of the transformed input image to obtain the quantized input image, where the surjective mapping maps pixel intensities of the first bit depth to pixel intensities of the second bit depth. Examples of surjective mapping are described further below. A surjective mapping can be defined as a surjective function in mathematics, a function whose image is equal to its codomain. In certain embodiments such as those described further below, a nonlinear transform is applied without subsequent quantizing.
In some embodiments, the image preprocessing system 102 may be configured to apply the nonlinear transform to the image with the surjective mapping such that discrimination among low pixel intensities in the quantized image is greater than discrimination among high pixel intensities. In applying the nonlinear transform, the image preprocessing system 102 may dedicate a larger portion of the range of the second bit depth to low pixel intensities than to high pixel intensities to maintain discrimination among the low pixel intensities. For example, the system may quantize an input image with pixels of 10-bit depth (e.g., with pixel intensities of 0 to 1023) to obtain a quantized image with pixels of 5-bit depth (e.g., with pixel intensities of 0-31) by (1) mapping pixel intensities of 0-200 in the input image to pixel intensities of 0-25 in the quantized image; and (2) mapping pixel intensities of 201-1031 in the input image to pixel intensities of 26-31 in the quantized image. In this example, a pixel intensity of 30 in the quantized image may be mapped to more pixel intensities of the input image than a pixel intensity of 5. Thus, the quantized image can maintain more discrimination among the low pixel intensities in the input image.
In some embodiments, the image preprocessing system 102 may be configured to obtain a processed image from the image processing system 106. For example, the processed image may be an enhanced version of an image provided to the image quantization system by the image capture device 104. The image preprocessing system 102 may have previously received the input image and quantized the input image for processing by the image processing system 106. The image preprocessing system 102 may be configured to (1) de-quantize the processed image; and (2) transmit the de-quantized image to the image capture device 104. In some embodiments, the image preprocessing system 102 may be configured to de-quantize the processed image by (1) increasing a bit depth of the processed image from a first bit depth to a second bit depth; and (2) applying a non-linear transform to the image with pixels of the second bit depth. In some embodiments, the non-linear transform may be an inverse of a nonlinear transform applied to an input image (e.g., provided by the image capture device 104 for processing).
In some embodiments, the image preprocessing system 102 can be configured to apply the nonlinear transform 102A to pixel intensities of the image to obtain a transformed image, without quantizing the image (e.g., such that the nonlinearly transformed image is used for image processing with the same bit depth as the original image). In some embodiments, the image preprocessing system 102 may be configured to apply the nonlinear transform 102A to an input image without reducing the bit depth of the input image (e.g., where the image processing system 106 can process the bit depth of the input image). In some embodiments, the image preprocessing system 102 may be configured to reduce variation in noise properties across pixel intensities of the input image by applying the nonlinear transform 102A to the input image. The image preprocessing system 102 may transmit the transformed image with lower variation in noise to the image processing system 106. For example, the image preprocessing system 102 may provide the transformed image to a processor (e.g., a neural processor) of the image processing system 106 which uses a machine learning model (e.g., a neural network) trained to enhance (e.g., denoise) images with noise property variation below a threshold for all pixel intensities. For example, the machine learning model may be trained to enhance images with a noise standard deviation that is less than 1%, 2%, 3%, 4%, 5%, 6%, 7%, 8%, 9%, or 10% of the dynamic range for all pixel intensities. The reduced variation in noise properties in the input image allows the image processing system 106 to use a machine learning model with lower complexity (e.g., a neural network with fewer layers).
In some embodiments, the image preprocessing system 102 may be configured to apply a nonlinear transform to the image without de-quantizing the image (e.g., where the image was not quantized prior to processing by the image processing system 106). In some embodiments, the nonlinear transform may be an inverse of a nonlinear transform applied to an input image (e.g., provided by the image capture device 104 for processing). For example, the system may have previously applied nonlinear transform 102A to an input image, and provided the transformed image to the image processing system 106. The system may then obtain a processed version of the image from the image processing system 106 and apply a nonlinear transform to the processed image (e.g., by applying an inverse of the nonlinear transform 102A).
In some embodiments, the image capture device 104 may be a digital camera. The digital camera may be a stand-alone digital camera, or a digital camera embedded in a device (e.g., a smartphone). In some embodiments, the image capture device 104 may be any device that can capture an digital image. Some embodiments are not limited to any image capture device described herein.
As illustrated in
As illustrated in
In some embodiments, the image processing system 106 may be a computing device for processing an image. In several embodiments, image processing system 106 is a specialized computing system or subsystem having components such as those described further below with respect to
In some embodiments, the image processing system 106 may be not be able to process images having pixels above a certain bit depth. For example, a precision of a processor of the image processing system 106 may be 8 bits, and thus the processor cannot process an image with pixels of 10-bit depth. In another example, the processor may be configured to perform computations at a certain bit depth (e.g., 1, 2, 3, 4, 5, 6, 7, 8, 9, or 10 bits). In some embodiments, the image processing system may have 1-bit precision, 2-bit precision, 3-bit precision, 4-bit precision, 5-bit precision, 6-bit precision, 7-bit precision, 8-bit precision, 9-bit precision, or 10-bit precision. In some embodiments, the precision of the processor may be less than a bit depth of pixels captured by the image capture device 104. Accordingly, the image processing system 106 may be configured to receive quantized images having an appropriate bit depth from the image preprocessing system 102.
In some embodiments, the image capture device 104, image preprocessing system 102, and image processing system 106 may be components of a single device. 100 may be a smartphone including the image preprocessing system 102, the image capture device 104, and the image processing system 106. For example, the image preprocessing system 102 and/or image processing system 106 can be incorporated into the image processing pipeline of the smartphone to process the image for the smartphone (e.g., prior to storing and/or displaying the image on the smartphone). In some embodiments, the image preprocessing system 102, image capture device 104, and image processing system 106 may be disparate devices. For example, the image preprocessing system 102 and image processing system 106 may be a cloud-based computer system in communication with the image capture device 104 over a network (e.g., the Internet). In some embodiments, the image preprocessing system 102 may be a part of the image processing system 106.
Process 200 includes the system obtaining (202) an input image with pixels of a first bit-depth. For example, the system may receive an image from an image capture device (e.g., a digital camera). In some embodiments, the image capture device may be configured to capture the image in the first bit depth. For example, an A/D converter of the image capture device may generate 10-bit pixel intensity values to produce a digital image with pixels of 10-bit depth. Example bit depths are discussed herein.
The system quantizes (204) the input image to obtain a quantized input image with pixels of a second bit depth, where the second bit depth is less than the first bit depth. For example, the system may quantize an input image with pixels of 10-bit depth to generate a quantized input image with pixels of 5-bit depth. In some embodiments, the system may be configured to quantize the input image by (1) applying a nonlinear transform to pixel intensities of the input image; and (2) mapping the transformed pixel intensities to 5-bit pixel values. For example, for each 10-bit pixel intensity of the input image, the system may apply a logarithmic function to the pixel intensity and map the output of the logarithmic function to a 5-bit pixel value. In some embodiments, the nonlinear transform and the mapping may be combined into a single function.
The system provides (206) the quantized input image (e.g., with pixels of 5-bit depth) for further processing. In some embodiments, the system may be configured to provide the quantized input image to an image processing pipeline for enhancement of the image. In some embodiments, the system may be configured to provide the quantized input image as input to a processor. The processor may have a precision less than the first bit depth. The quantized input image may have a bit depth that is less than or equal to the precision of the processor. In some embodiments, the processor may be configured to execute a machine learning model to enhance the input image. For example, the processor may be configured to execute a trained machine learning model to enhance a captured image. In another example, the processor may be configured to use the input image as training data for training parameters of a machine learning model. In some embodiments, the processor may be a neural processor configured to execute a neural network. In some embodiments, the neural network may be trained to enhance the image. In some embodiments, the neural network may be trained to enhance the image by denoising the image. In some embodiments, the processor may be a digital signal processor (DSP). Some embodiments are not limited to a processor described herein.
The system generates (208) an output image with pixels of the second bit depth. In some embodiments, the system may be configured to generate the output image by receiving a processed image (e.g., processed by image processing system 106). For example, the system may receive the output image from a processor (e.g., an NPU) that the system provided the quantized input image to. In some embodiments, the output image may be a processed version of the quantized input image. For example, the output image may be an enhanced (e.g., denoised) version of the input image.
The system de-quantizes (210) the output image to generate a de-quantized output image with pixels of the first bit depth. The system may be configured to generate a de-quantized output image of the same bit depth as pixels of the input image obtained (202). For example, the system may have received (202) an image with pixels of 10-bit depth and generate (210) a de-quantized output image with pixels of 10-bit depth. In some embodiments, the system may be configured to de-quantize the output image by mapping pixel intensities of the second bit depth to pixel intensities of the first bit depth. In some embodiments, the system may be configured to map the pixel intensities of the second bit depth to pixel intensities of the first bit depth by applying a non-linear transform (e.g., an inverse of the transform used for quantizing the input image) to the pixel intensities of the second bit depth.
In some embodiments, the system may be configured to provide the de-quantized output image to an image capture device. In some embodiments, the system may be configured to store the de-quantized output image (e.g., as an enhancement of the input image obtained (202)). In some embodiments, the system may be configured to use the output image for training a machine learning model. For example, the system may compare the de-quantized output image to a target output image, and adjust one or more machine learning model parameters based on a difference between the target output image and the de-quantized output image.
Process 300 includes obtaining (302) an image of a first bit depth. For example, the system may obtain an image with pixels of the first bit depth from an image capture device (e.g., a digital camera). In some embodiments, the system may obtain (202) the image as described at in process 200 described further above with reference to
Next, the system applies (304) a nonlinear transform to pixel intensities of the image. In some embodiments, the system may be configured to apply a nonlinear transform by providing the pixel intensities as input values to a nonlinear function to obtain a corresponding output. For example, the system may provide the pixel intensities as input values to a logarithmic function to obtain corresponding output values. In another example, the system may provide the pixel intensities as input values to an exponential function to obtain corresponding output values. In some embodiments, the outputs obtained from the nonlinear function may be within a range. For example, the nonlinear function may provide outputs between 0 and 1. Some embodiments may use nonlinear functions different from those described herein. Some embodiments are not restricted to a type of nonlinear function. Example nonlinear functions that may be utilized in accordance with embodiments of the invention are described below with reference to
In some embodiments, the system may be configured to apply a nonlinear transform by providing the pixel intensities as input values to a piecewise function. In some embodiments, a first portion of the piecewise function may be nonlinear, and a second portion of the piecewise function may be linear. For example, (1) for pixel intensities between 0 and 20, the function may be a linear function of 10-bit pixel intensities; and (2) for pixel intensities greater than 20, the function may be a nonlinear function (e.g., a logarithmic or exponential function).
The process 300 includes reducing (306) the bit depth of the image to obtain a quantized image with pixels of a second bit depth, where the second bit depth is less than the first bit depth. In some embodiments, the system may be configured to reduce the bit depth of the image to obtain the quantized image by applying a quantization function to values obtained (304) from application of the transform function to the pixel intensities. In some embodiments, the quantization function may output 5-bit pixel intensity values for respective input values. For example, the system may have obtained values between 0 and 1 by applying the nonlinear transform to 10-bit pixel intensities of the image, and input the obtained values into the quantization function to obtain a 5-bit pixel intensities. Example quantization functions that may be utilized in accordance with embodiments of the invention are described below with reference to
In some embodiments, the system may be configured to use pixel intensities of the second bit depth (e.g., obtained using a quantization function) to generate a new image. The new image will thus have pixels of the second bit depth. In some embodiments, the system may be configured to modify the image obtained (302) by replacing pixel intensities of the first bit depth with pixel intensities of the second bit depth.
In some embodiments, the system may be configured to provide the quantized image as input to an image processing system (e.g., a DSP, or a neural processor). The system may provide (206) the quantized input image as described further above with reference to
Process 400 includes the system obtaining (402) an image with pixels of a first bit depth (e.g., 5 bits). For example, the system may receive an image from an image processing system (e.g., a DSP or neural processor). In some embodiments, the system may be configured to receive an enhanced version of an image provided to the image processing system (e.g., at 206 of process 200). For example, the image processing system may have received a quantized image (e.g., from performing process 300 described herein with reference to
Next, the system maps (404) pixel intensities of the image obtained (402) to output values of a nonlinear transform. For example, during quantization of an input image, the system may have applied a nonlinear function to obtain normalized values between 0 and 1. In this example, the system may map pixel intensities of the image to normalized values between 0 and 1. In some embodiments, the system may be configured to use a mapping used for quantization. For example, the system may use an inverse of a quantization function used in process 300.
The system increases (406) the bit depth of the image obtained (402) to a second bit depth greater than the first bit depth to obtain a de-quantized image with pixels of the second bit depth. In some embodiments, the system may be configured to increase the bit depth of the image by using an inverse of a nonlinear transform (e.g., used during for quantizing the image) to obtain a pixel intensity of the second bit depth. For example, the system may use output values obtained (404) as input values to an inverse of a logarithmic (e.g., shown in
In some embodiments, the system may be configured to use pixel intensities of the second bit depth (e.g., obtained using an inverse nonlinear transform) to generate a new image. The new image will thus have pixels of the second bit depth. In some embodiments, the system may be configured to modify the image obtained (402) by replacing pixel intensities of the first bit depth with pixel intensities of the second bit depth.
In some embodiments, the system may be configured to provide the de-quantized image as an output to a device (e.g., a smart phone). For example, the de-quantized image may be an enhanced (e.g., denoised) image provided as input in process 200. The system may provide the enhanced image as an output for display on a device, storage, or for another function.
Process 500 includes the system obtaining (502) an input image to be enhanced. In some embodiments, the system may be configured to obtain an input for denoising an image. For example, the input image may have been taken in low light conditions resulting in a low signal-to-noise ratio (SNR) in the image. The system may receive the image as input for denoising the image to generate an image of higher quality. In some embodiments, the system may be configured to receive the input image from an image capture device (e.g., a camera).
The system applies (504) a nonlinear transform to pixel intensities of the input image to obtain a transformed input image. In some embodiments, the system may be configured to apply the nonlinear transform without quantizing the image. In some embodiments, the system may be configured to apply the nonlinear transform in addition to quantizing the image (e.g., as described herein with reference to
In some embodiments, the system may be configured to use outputs obtained from application of the nonlinear transform to generate a transformed image. In some embodiments, the system may be configured to generate a new image and set pixel intensities of the new image to the values obtained from application of the nonlinear transform. For example, the system may use the output obtained from providing each pixel intensity of the input image as an input value to a nonlinear function as a pixel intensity of a respective pixel in the transformed image. In some embodiments, the system may be configured to modify pixel intensities of the input image to the values obtained from application of the nonlinear transform.
The system generates (506) input to be provided to a trained machine learning model. In some embodiments, the trained machine learning model may be incorporated in a system such as machine learning system 112 described with reference to
In some embodiments, the system may be configured to generate the input to be provided to the trained machine learning model by using the transformed input image as the input. For example, the pixel intensities of the transformed image may be used as the input to the trained machine learning model. In some embodiments, the trained machine learning model may be a neural network. The system may be configured to use the pixel intensities of the transformed image as input to the neural network. In some embodiments, the system may be configured to pre-process the pixel intensity values to provide them as input to the neural network. For example, the system may normalize the pixel intensities (e.g., to be between 0 and 1). In another example, the system may flatten the pixel intensities of the image into a single vector of pixel intensities.
In some embodiments, the trained machine learning model may be trained to denoise the image. For example, the trained machine learning model may be trained to improve quality of images taken in low light conditions to generate an image of higher quality. In some embodiments, the trained machine learning model may have been obtained from performing process 200 described with reference to FIG. 2A of the '217 Publication (Appendix A), process 210 described with reference to FIG. 2B of the '217 Publication (Appendix A), process 230 described with reference to FIG. 2C of the '217 Publication (Appendix A), process 300 described with reference to FIG. 3A of the '217 Publication (Appendix A), process 400 described with reference to FIG. 4 of the '217 Publication (Appendix A), process 500 described with reference to FIG. 5 of the '217 Publication (Appendix A), and/or process 700 described with reference to FIG. 7 of the '217 Publication (Appendix A).
Next, process 500 proceeds to block 508 where the system provides the generated input to the trained machine learning model to obtain an enhanced output image. In some embodiments, the system provides the image as described in block 806 of FIG. 8 of the '217 Publication (Appendix A). In some embodiments, the system may be configured to receive, in response to providing the input, an enhanced output image. For example, the system may receive a denoised image from the machine learning model in response to providing the input. In some embodiments, the system may be configured to obtain an enhanced image that is to be de-quantized. The system may de-quantize the image as described above with reference to
In some embodiments, the system may be configured to output the enhanced image. For example, the system may display the enhanced image on a device, store the image, and/or use the image for training a machine learning model.
In some embodiments, the parameters 604A of the machine learning model 604 (e.g., a neural network) may be trained in training stage 608 to obtain the trained machine learning model 610 with learned parameter 610A (e.g., weight values of the neural network). In some embodiments, the trained machine learning model 610 may be machine learning system 112 of FIG. 1A of the '217 Publication (Appendix A). In some embodiments, the training stage 608 may be training stage 110 of FIG. 1A of the '217 Publication (Appendix A). In some embodiments, the machine learning model 604 may be trained in the training stage 608 by performing process 200 described with reference to FIG. 2A of the '217 Publication (Appendix A), process 210 described with reference to FIG. 2B of the '217 Publication (Appendix A), process 230 described with reference to FIG. 2C of the '217 Publication (Appendix A), process 300 described with reference to FIG. 3A of the '217 Publication (Appendix A), process 400 described with reference to FIG. 4 of the '217 Publication (Appendix A), process 500 described with reference to FIG. 5 of the '217 Publication (Appendix A), and/or process 700 described with reference to FIG. 7 of the '217 Publication (Appendix A).
In some embodiments, the quantized training images generated by the image quantization system may be used as training images 104 of FIG. 1A of the '217 Publication (Appendix A). In some embodiments, the machine learning model 604 may be used as machine learning system 102 of FIG. 1A of the '217 Publication (Appendix A). As shown in FIG. 1A of the '217 Publication (Appendix A), the image enhancement system 111 may use the machine learning system 112 (e.g., trained using quantized images generated by the image preprocessing system 602) to enhance images from image capture devices 114A-B to generate enhanced image(s) 118.
Process 700 includes the system obtaining (702) training images. In some embodiments, the system may be configured to obtain the training images from a single image capture device. In some embodiments, the system may be configured to obtain the training images multiple capture device. In some embodiments, the training images may be generated as described in the '217 Publication (Appendix A). In some embodiments, the training images may include input images and corresponding target output images. In some embodiments, the training images may include only input images without corresponding target output images.
Next, process 700 proceeds to block 704 where the system performs a nonlinear transform to the images to obtain transformed training images. In some embodiments, the system may be configured to quantize the image in conjunction with the nonlinear transformation to obtain quantized training images with pixels of a second bit depth, where the second bit depth is less than the first bit depth. In some embodiments, the system may be configured to apply nonlinear quantization as described herein with reference to
The system trains (706) the machine learning model using the transformed training images. In some embodiments, the system may be configured to train the machine learning model using training techniques such as those described in the '217 Publication (Appendix A). For example, the system may train the machine learning model as described with reference to FIGS. 1A-B of the '217 Publication (Appendix A), by performing process 200 described with reference to FIG. 2A of the '217 Publication (Appendix A), by performing process 210 described with reference to FIG. 2B of the '217 Publication (Appendix A), by performing process 230 described with reference to FIG. 2C of the '217 Publication (Appendix A), by performing process 300 described with reference to FIG. 3A of the '217 Publication (Appendix A), by performing process 400 described with reference to FIG. 4 of the '217 Publication (Appendix A), by performing process 500 described with reference to FIG. 5 of the '217 Publication (Appendix A), and/or by performing process 700 described with reference to FIG. 7 of the '217 Publication (Appendix A).
The system uses (708) the trained machine learning model for image enhancement. In some embodiments, the system may be configured to use the trained machine learning model to denoise images. In some embodiments, the system may be configured to use the trained machine learning model to enhance an image as described further above with reference to
Although specific processes are described above with respect to
Different nonlinear transformations, or transforms, may be utilized in accordance with embodiments of the invention.
Systems 100, 102, 104, and/or 106 may be implemented in one or more computing systems or distributed computer systems using hardware that can include a processor, volatile and/or non-volatile memory, and/or other components.
As illustrated in
The memory 1212 stores programs (e.g., sequences of instructions coded to be executable by the processor 1210) and data during operation of the computer system 1202. Thus, the memory 1212 may be a relatively high performance, volatile, random access memory such as a dynamic random access memory (“DRAM”) or static memory (“SRAM”). However, the memory 1212 may include any device for storing data, such as a disk drive or other nonvolatile storage device. Various examples may organize the memory 1212 into particularized and, in some cases, unique structures to perform the functions disclosed herein. These data structures may be sized and organized to store values for particular data and types of data.
Components of the computer system 1202 are coupled by an interconnection element such as the interconnection mechanism 1214. The interconnection element 1214 may include any communication coupling between system components such as one or more physical busses in conformance with specialized or standard computing bus technologies such as IDE, SCSI, PCI and InfiniBand. The interconnection element 1214 enables communications, including instructions and data, to be exchanged between system components of the computer system 1202.
The computer system 1202 also includes one or more interface devices 1216 such as input devices, output devices and combination input/output devices. Interface devices may receive input or provide output. More particularly, output devices may render information for external presentation. Input devices may accept information from external sources. Examples of interface devices include keyboards, mouse devices, trackballs, microphones, touch screens, printing devices, display screens, speakers, network interface cards, etc. Interface devices allow the computer system 1202 to exchange information and to communicate with external entities, such as users and other systems.
The data storage element 1218 includes a computer readable and writeable nonvolatile, or non-transitory, data storage medium in which instructions are stored that define a program or other object that is executed by the processor 1210. The data storage element 1218 also may include information that is recorded, on or in, the medium, and that is processed by the processor 1210 during execution of the program. More specifically, the information may be stored in one or more data structures specifically configured to conserve storage space or increase data exchange performance. The instructions may be persistently stored as encoded signals, and the instructions may cause the processor 1210 to perform any of the functions described herein. The medium may, for example, be optical disk, magnetic disk or flash memory, among others. In operation, the processor 1210 or some other controller causes data to be read from the nonvolatile recording medium into another memory, such as the memory 1212, that allows for faster access to the information by the processor 1210 than does the storage medium included in the data storage element 1218. The memory may be located in the data storage element 1218 or in the memory 1212, however, the processor 1210 manipulates the data within the memory, and then copies the data to the storage medium associated with the data storage element 1218 after processing is completed. A variety of components may manage data movement between the storage medium and other memory elements and examples are not limited to particular data management components. Further, examples are not limited to a particular memory system or data storage system.
Although the computer system 1202 is shown by way of example as one type of computer system upon which various aspects and functions may be practiced, aspects and functions are not limited to being implemented on the computer system 1202 as shown in
The computer system 1202 may be a computer system including an operating system that manages at least a portion of the hardware elements included in the computer system 1202. In some examples, a processor or controller, such as the processor 1210, executes an operating system. Examples of a particular operating system that may be executed include a Windows-based operating system, such as, Windows NT, Windows 2000 (Windows ME), Windows XP, Windows Vista or Windows 6, 8, or 6 operating systems, available from the Microsoft Corporation, a MAC OS System X operating system or an iOS operating system available from Apple Computer, one of many Linux-based operating system distributions, for example, the Enterprise Linux operating system available from Red Hat Inc., a Solaris operating system available from Oracle Corporation, or a UNIX operating systems available from various sources. Many other operating systems may be used, and examples are not limited to any particular operating system.
The processor 1210 and operating system together define a computer platform for which application programs in high-level programming languages are written. These component applications may be executable, intermediate, bytecode or interpreted code which communicates over a communication network, for example, the Internet, using a communication protocol, for example, TCP/IP. Similarly, aspects may be implemented using an object-oriented programming language, such as .Net, Java, C++, Ada, C# (C-Sharp), Python, or JavaScript. Other object-oriented programming languages may also be used. Alternatively, functional, scripting, or logical programming languages may be used.
Additionally, various aspects and functions may be implemented in a non-programmed environment. For example, documents created in HTML, XML or other formats, when viewed in a window of a browser program, can render aspects of a graphical-user interface or perform other functions. Further, various examples may be implemented as programmed or non-programmed elements, or any combination thereof. For example, a web page may be implemented using HTML while a data object called from within the web page may be written in C++. Thus, the examples are not limited to a specific programming language and any suitable programming language could be used. Accordingly, the functional components disclosed herein may include a wide variety of elements (e.g., specialized hardware, executable code, data structures or objects) that are configured to perform the functions described herein.
In some examples, the components disclosed herein may read parameters that affect the functions performed by the components. These parameters may be physically stored in any form of suitable memory including volatile memory (such as RAM) or nonvolatile memory (such as a magnetic hard drive). In addition, the parameters may be logically stored in a propriety data structure (such as a database or file defined by a user space application) or in a commonly shared data structure (such as an application registry that is defined by an operating system). In addition, some examples provide for both system and user interfaces that allow external entities to modify the parameters and thereby configure the behavior of the components.
Based on the foregoing disclosure, it should be apparent to one of ordinary skill in the art that the embodiments disclosed herein are not limited to a particular computer system platform, processor, operating system, network, or communication protocol. Also, it should be apparent that the embodiments disclosed herein are not limited to a specific architecture.
It is to be appreciated that embodiments of the methods and apparatuses described herein are not limited in application to the details of construction and the arrangement of components set forth in the following description or illustrated in the accompanying drawings. The methods and apparatuses are capable of implementation in other embodiments and of being practiced or of being carried out in various ways. Examples of specific implementations are provided herein for illustrative purposes only and are not intended to be limiting. In particular, acts, elements and features described in connection with any one or more embodiments are not intended to be excluded from a similar role in any other embodiments.
The terms “approximately,” “substantially,” and “about” may be used to mean within ±20% of a target value in some embodiments, within ±10% of a target value in some embodiments, within ±5% of a target value in some embodiments, and yet within ±2% of a target value in some embodiments. The terms “approximately” and “about” may include the target value.
Having thus described several aspects of at least one embodiment of this invention, it is to be appreciated various alterations, modifications, and improvements will readily occur to those skilled in the art. Such alterations, modifications, and improvements are intended to be part of this disclosure, and are intended to be within the spirit and scope of the invention. Accordingly, the foregoing description and drawings are by way of example only.
The present application claims priority to U.S. Provisional Patent Application Ser. No. 63/047,875 entitled “Systems and Methods of Nonlinear Image Intensity Transformation for Denoising and Low-Precision Image Processing,” to Zhu et al., filed Jul. 2, 2020, the disclosure of which is hereby incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
63047875 | Jul 2020 | US |