SYSTEMS AND METHODS FOR ANALYZING IMAGE QUALITY

A method is described. The method includes selecting a camera block or a graphics processing unit (GPU) to analyze an image for image quality upon capturing the image by a camera on a mobile device. The method also includes analyzing the image for image quality based on the camera block or GPU selection. The method further includes generating a user notification upon detecting one or more problems with the image based on the image quality analysis.

TECHNICAL FIELD

The present disclosure relates generally to communications. More specifically, the present disclosure relates to systems and methods for analyzing image quality.

BACKGROUND

In the last several decades, the use of mobile devices has become common. In particular, advances in electronic technology have reduced the cost of increasingly complex and useful mobile devices. Cost reduction and consumer demand have proliferated the use of mobile devices such that they are practically ubiquitous in modern society. As the use of mobile devices has expanded, so has the demand for new and improved features of mobile devices. More specifically, mobile devices that perform new functions and/or that perform functions faster, more efficiently or more reliably are often sought after.

Advances in technology have resulted in smaller and more powerful mobile devices. For example, there currently exist a variety of mobile devices such as portable wireless telephones (e.g., smartphones) personal digital assistants (PDAs), laptop computers, tablet computers and paging devices that are each small, lightweight, and can be easily carried by users.

A mobile device may be configured with a camera. A user may capture one or more images of a scene using the camera. Problems may occur in the captured image. For example, the image may be blurry, a desired area (e.g., face) may be out-of-focus, or the image may be misaligned. If the user does not manually check the image for image quality, the user may lose the opportunity to retake the photo. However, manual image quality analysis is time-consuming and cumbersome on a mobile device. As can be observed from this discussion, systems and methods for automatically analyzing image quality and notifying a user of detected problems may be beneficial.

SUMMARY

A method is described. The method includes selecting a camera block or a graphics processing unit (GPU) to analyze an image for image quality upon capturing the image by a camera on a mobile device. The method also includes analyzing the image for image quality based on the camera block or GPU selection. The method further includes generating a user notification upon detecting one or more problems with the image based on the image quality analysis.

Selecting a camera block or a GPU to analyze an image for image quality may include querying the camera block to determine what image quality metrics the camera block supports. Querying the camera block may include sending an application program interface (API) call to the camera block. A flag may be received that indicates the image quality metrics the camera block supports.

Selecting a camera block or a GPU to analyze an image for image quality may include checking a preconfigured lookup table that lists the image quality metrics the camera block can perform.

If the camera block is able to perform the image quality analysis, the camera block may be selected to analyze the image for image quality. Otherwise, the GPU may be selected to analyze the image for image quality.

Analyzing the image may include analyzing the image for at least one of blurriness, out-of-focus areas or a misaligned horizon in the image. The image quality analysis may occur as a background operation on the mobile device.

Generating the user notification may include displaying a message that describes the one or more detected problems with the image. Generating the user notification may further include highlighting one or more areas of the image that are determined to have a problem.

If the GPU is selected to analyze the image, the GPU may analyze the image for image quality using fast Fourier to determine blurriness of the image. If the GPU is selected to analyze the image, the method may also include partitioning image data into bins. The bins may be sent the GPU to determine local blurriness associated with the bins.

The method may also include performing corrections on the image for user approval based on the image quality analysis.

A mobile device is also described. The mobile device includes a processor, a memory in communication with the processor and instructions stored in the memory. The instructions are executable by the processor to select a camera block or a GPU to analyze an image for image quality upon capturing the image by a camera on the mobile device. The instructions are also executable to analyze the image for image quality based on the camera block or GPU selection. The instructions are further executable to generate a user notification upon detecting one or more problems with the image based on the image quality analysis.

A computer-program product is also described. The computer-program product includes a non-transitory computer-readable medium having instructions thereon. The instructions include code for causing a mobile device to select a camera block or a GPU to analyze an image for image quality upon capturing the image by a camera on the mobile device. The instructions also include code for causing the mobile device to analyze the image for image quality based on the camera block or GPU selection. The instructions further include code for causing the mobile device to generate a user notification upon detecting one or more problems with the image based on the image quality analysis.

An apparatus is also described. The apparatus includes means for selecting a camera block or a GPU to analyze an image for image quality upon capturing the image by a camera on a mobile device. The apparatus also includes means for analyzing the image for image quality based on the camera block or GPU selection. The apparatus further includes means for generating a user notification upon detecting one or more problems with the image based on the image quality analysis.

DETAILED DESCRIPTION

While taking a photo with a mobile device (e.g., smartphone or camera), a typical user workflow involves opening the image after capturing the image to manually check for image quality. For example, a user may manually check for blurriness and other metrics in the captured image. This is a painful process because a user typically has to zoom in to check for sharpness, which may be difficult on a small display screen of the mobile device. However, if this process is not done, the user may not detect a poor photo until well after taking the photo. It is quite possible that it may no longer be feasible to retake a photo with similar environmental conditions. For example, a user may not be able to get back to the same location (e.g., vacation photos), or the photo may rely on lighting that occurs at a certain time of day. In this case, the opportunity would be lost.

The systems and methods described herein provide for automatic image quality analysis and user notification. A mobile device may use a camera block or graphics processing unit (GPU) to automatically analyze an image captured by the camera on the mobile device for quality of image. The image quality metrics that may be analyzed include blurriness, out-of-focus areas (e.g., faces), a misaligned (e.g., crooked) horizon, over-exposure and other metrics. The mobile device may alert the user of quality problems when the analysis is complete.

The entire process may happen asynchronously with normal user operation of the mobile device. For example, the mobile device may post a warning only if quality is determined to be poor. As a result, the image quality analysis procedure does not intrude on the user and does not block the user from continuing to use the mobile device. However, the image quality analysis will happen quickly enough for the user to re-capture an image if poor photo quality is detected.

The systems and methods described herein may be implemented on a variety of different mobile devices. Examples of mobile devices include general purpose or special purpose computing system environments or configurations, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices and the like. The systems and methods may also be implemented in mobile devices such as phones, smartphones, wireless headsets, personal digital assistants (PDAs), ultra-mobile personal computers (UMPCs), mobile Internet devices (MIDs), etc. The following description refers to mobile devices for clarity and to facilitate explanation. Those of ordinary skill in the art will understand that a mobile device may comprise any of the devices described above as well as a multitude of other devices.

Various configurations are described with reference to the Figures, where like reference numbers may indicate functionally similar elements. The systems and methods as generally described and illustrated in the Figures could be arranged and designed in a wide variety of different configurations. Thus, the following more detailed description of several configurations, as represented in the Figures, is not intended to limit scope, but is merely representative.

FIG. 1is a block diagram illustrating a mobile device102configured to automatically analyze an image106captured from a camera104for quality using a camera block108or a graphics processing unit (GPU)110. The mobile device102may also be referred to as a wireless communication device, a mobile device, mobile station, subscriber station, client, client station, user equipment (UE), remote station, access terminal, mobile terminal, terminal, user terminal, subscriber unit, etc. Examples of mobile devices102include laptop computers, cellular phones, smartphones, e-readers, tablet devices, gaming systems, cameras, etc. Some of these devices may operate in accordance with one or more industry standards.

The mobile device102may include a central processing unit (CPU)114. The CPU114may be an electronic circuit that carries out instructions of a computer program. The CPU114may implement instructions of the operating system (OS) of the mobile device102. The CPU114may also be referred to as a processor. The instructions executed by the CPU114may be stored in memory. The CPU114may control other subsystems of the mobile device102.

The mobile device102may also be configured with a camera104. The camera104may include an image sensor and an optical system (e.g., lenses) that focuses images of objects that are located within the field of view of the optical system onto the image sensor. The camera104may be configured to capture digital images106.

Although the present systems and methods are described in terms of a captured digital image106, the techniques discussed herein may be used on any digital image sequence. Therefore, the terms video frame and digital image106may be used interchangeably herein.

The mobile device102may also include a camera software application and a display screen124. When the camera software application is running, images106of objects that are located within the field of view of the camera104may be recorded by the image sensor. The images106that are being recorded by the image sensor may be displayed on the display screen124. These images106may be displayed in rapid succession at a relatively high frame rate so that, at any given moment in time, the objects that are located within the field of view of the camera104are displayed on the display screen124.

The mobile device102may also be configured with a camera block108and a graphics processing unit (GPU)110. The camera block108may be an electronic circuit for processing images106captured by the camera104. In an implementation, the camera block108may be a separate silicon block aside from the GPU110. The camera block108may be implemented as a system-on-chip (SOC). The camera block108may have circuits specifically configured for image processing at a lower power. These image processing operations may include focus detection, blurriness, and other quality metrics. Therefore, the mobile device102may take advantage of hardware optimization provided by the onboard hardware of the camera block108.

The GPU110is an electronic circuit that is also configured to process images. The GPU110may be optimized to perform rapid mathematical calculations for the purpose of rendering images106. For example, the GPU110may perform fast Fourier transforms on image data. While the camera block108may be primarily configured to perform image quality operations on images106captured by the camera104, the GPU110may be configured to perform more general image processing on the mobile device102. For example, the GPU110may perform video processing or3D processing.

The mobile device102may use the GPU110to perform image processing operations instead of the CPU114. Image processing operations are difficult (i.e., taxing) for a CPU114to perform. If performed by a CPU114, these image processing operations may be slow and may result in significant energy drain, which is a concern with battery-powered mobile devices102. Because the GPU110is designed for image processing, the mobile device102will run more efficiently by performing image processing with the GPU110.

Problems may occur while capturing an image106using the mobile device102. While a user is taking a photo with a smartphone or camera, one of the current workflows includes the user opening the image106after it is captured and then performing a manual image quality analysis. For example, the user may check the image106for image quality, such as blurriness and other quality metrics. This procedure may be cumbersome and frustrating for the user. For example, the user typically has to zoom in to check for sharpness or other image quality metrics. This may be difficult to perform on a mobile device102with a small display screen124.

However, if this image quality analysis is not done, the user may not detect a poor photo until well after taking the image106. In this case, it is likely that the photo cannot be retaken with similar environmental composition and the opportunity would be lost. This may be especially important for photos where it is difficult or impossible to retake the photo. For example, photos of a certain time of day, vacation photos and photos of children may be fleeting. It is important to capture a high quality image106while the opportunity presents itself.

The systems and methods described herein perform automatic image quality analysis to quickly notify the user of the mobile device102about potential problems with an image106. The user can then choose to retake the image106while the setting is still available. The described systems and methods also optimize the efficiency of the image quality analysis by determining whether the camera block108can perform the analysis.

Upon capturing an image106using the camera104, the mobile device102may select either the camera block108or the GPU110to analyze the image106for image quality. The mobile device102may use either the GPU110or the camera block108to automatically analyze the captured image106for one or more image quality metrics117. The image quality metrics117may include blurriness, out-of-focus (e.g., a face may be out of focus), misaligned horizon, over-saturation and other metrics. The mobile device102may then alert the user of quality problems when the image analysis is complete.

The entire image analysis process may happen asynchronously. In other words, the GPU110or the camera block108may analyze the image106as a background operation while the user continues to perform normal operations on the mobile device102. For example, the user may use the mobile device102for other activities while the GPU110or the camera block108performs the image quality analysis. When the image quality analysis is complete, the mobile device102may post a warning if quality is determined to be poor. As a result this image analysis process is not intrusive on the user and does not block the user from continuing to use the mobile device102. However, the image quality analysis will happen quickly enough for the user to recapture an image106if a poor quality photo is detected.

The CPU114may be configured with an image problem determination module116. The image problem determination module116may coordinate the image quality analysis for one or more image quality metrics117. These image quality metrics117may include one or more of blurriness, out-of-focus, misaligned horizon, over-exposure. The image quality metrics117may be configurable by the user. In the case of over-exposure, a bi-modal histogram is used to detect over-exposure in a photo (e.g., one segment of the image106may be bright white and another dark black).

In an approach, the CPU114may detect that an image106has been captured by the camera104. In response to capturing the image106, the CPU114may determine whether the camera block108can perform an image quality analysis for the configured image quality metrics117. The CPU114may query the camera block108to determine what image quality metrics117the camera block108supports. For example, the CPU114may make an application program interface (API) call to the camera block108to determine whether the camera block108can perform the image quality analysis for the configured image quality metrics117.

The API call to the camera block108may return a flag that indicates the capabilities that the camera block108possesses. For example, the camera block108may indicate that it can perform autofocus detection, but not blurriness detection.

Alternatively, the CPU114may be pre-configured with knowledge of which image quality metrics117the camera block108can perform. For example, the CPU114may include a preconfigured lookup table that lists the image quality metrics117the camera block108can perform. The CPU114may check this lookup table to determine whether the camera block108can perform the image quality analysis for one or more image quality metrics117.

If the CPU114determines that the camera block108can perform the image quality analysis for the configured image quality metrics117, then the CPU114selects the camera block108. In some cases, the camera block108may perform the image quality analysis more efficiently than the GPU110. In these cases, it may be beneficial to prioritize the camera block108ahead of the GPU110. When selected for image quality analysis, the raw image data from the camera104may be provided to the camera block108. The camera block108may then perform the image quality analysis for the one or more image quality metrics117.

However, in some cases, the camera block108may not support analysis of one or more configured image quality metrics117. If the CPU114determines that the camera block108cannot perform analysis of one or more configured image quality metrics117, then the CPU114may select the GPU110for image quality analysis. In other cases, the mobile device102may not include a camera block108. In these cases, the mobile device102may also select the GPU110for image quality analysis for the one or more image quality metrics117.

In an implementation, if the camera block108cannot perform the image quality analysis, the GPU110may use fast Fourier transforms to determine the frequencies present in the image106. The GPU110may provide these image quality metric values112(i.e., the frequencies) to the CPU114. The CPU114may use the absence of high frequencies to determine the blurriness of the image106. This will allow the CPU114to detect images that are blurry because of shaking.

In another implementation, the image106may be partitioned into smaller bins before being sent to the GPU110for image quality analysis. In this case, the GPU110may analyze the blurriness of various windows of the image106. The CPU114may then determine the local blurriness of the various windows. This will allow the CPU114to present to the user the segments of the image106that are actually in focus and the areas that are out of focus. This allows the user to decide if the focus of the image106is undesirable.

Upon performing the image quality analysis, the camera block108or the GPU110may provide the results of the analysis in the form of image quality metric values112. In an implementation, the camera block108or the GPU110may provide the image quality metric values112in the form of a matrix of values. For example, the matrix of image quality metric values112may correspond to small regions of the image106(e.g., an 8×8 pixel square of the image106). This may provide an efficient compression effect for the CPU114. The image quality metric value112for the region is provided in the matrix, which may then be further processed by the CPU114to determine problem areas.

Upon receiving the image quality metric values112, the image problem determination module116may detect whether there are one or more problems with the image106. For example, the image problem determination module116may compare the image quality metric values112to image quality thresholds118. In an example, if the image quality metric values112for blurriness are above the image quality threshold118for blurriness, then the image problem determination module116may determine that the image106has a problem with blurriness. Alternatively, if the image quality metric values112for blurriness are below the image quality threshold118for blurriness, then the image problem determination module116determines that the image106does not have a problem with blurriness.

The image quality thresholds118may be configurable by the user. The image quality thresholds118may correspond to the configured image quality metrics117. For example, each of the configured image quality metrics117may have an associated image quality threshold118. The user may configure the image quality thresholds118to indicate an allowable amount for the configured image quality metrics117. For example, the user may configure how blurry, out-of-focus, or misaligned an image106may be before the mobile device102warns the user. The image quality thresholds118may be pre-configured by the user before the mobile device102performs the image quality analysis procedure on a captured image106.

In an implementation, the image problem determination module116may perform facial detection to determine whether a face in a photo is out-of-focus. For example, the image problem determination module116may detect where a face is in the image106. Then, using the image quality metric values112provided by the camera block108or the GPU110, the image problem determination module116may determine whether the face is out-of-focus. The image problem determination module116may compare an out-of-focus face with an associated image quality threshold118to determine if there is a problem of which the user should be made aware.

In an implementation, the mobile device102may perform corrections on the image106for user approval based on the image quality analysis. If the mobile device102can correct an image106, then this reduces the need to go back and retake the image106. After performing the image quality analysis and determining that there is a problem with the image106, the mobile device102may perform one or more corrections to the image106. For example, the mobile device102may clean up blurriness or apply a sharpening process to the image106. The mobile device102may also even out the histogram of the image106. The mobile device102may save a copy of the original image106and present the corrected image to the user for approval. In an implementation, the types and amount of correction performed automatically by the mobile device102may be pre-configured by the user.

The CPU114may include a user notification generator120that generates a user notification122upon detecting one or more problems with the image106. In an implementation, the user notification122may include a message that describes the one or more detected problems with the image106. The message may be displayed on the display screen124. For example, the user notification122may warn the user that the image106is blurry. Examples of different user notifications122that may be generated according to the systems and methods described herein are described in connection withFIGS. 4-7.

The user notification122may be displayed to the user in the form of a pop-up message, a notification bar or other graphical user interface (GUI) element that is displayed on the display screen124. The user notification122may indicate that the image106has detected quality problems. The user notification122may also be accompanied by an audible alert to further warn the user of problems with the image106.

In an implementation, a user may interact with the user notification122. The user notification122may include an option to retake the image106. If the user selects this option, the mobile device102may bring up the camera software application on the display screen124. The user may then recapture the image106. The user notification122may also include an option to keep the image106without retaking another image.

In an implementation, the user notification122may display the image106. The user may review the image106in the user notification122to determine whether to retake the image106.

In yet another implementation, the problem areas on the image106may be highlighted in the user notification122. For example, an out-of-focus face may be highlighted in the image106displayed in the user notification122. The highlighting may assist the user in interpreting the problems that the mobile device102has identified. The highlighting may include a shaded area that is superimposed over the problem found in the image106. Alternatively, the highlighting may include a boundary (e.g., dashed line) that surrounds the problem areas.

In another implementation, the user notification122may present proposed corrections that the mobile device102has made to the image106. If the mobile device102makes any corrections based on the image quality analysis, the user notification122may present the corrected image to the user. The user may choose to accept or discard the corrections.

The systems and methods described herein provide a beneficial image quality analysis and user notification122. A user will be able to capture an image106and continue to use the mobile device102for normal operations, confident that the mobile device102will provide an alert if a problem is found with the image106. The described systems and methods are not intrusive on the user and do not block the user from continuing. However, if a problem in an image106is found, a user notification122is generated quickly enough for the user to re-capture an image106before the opportunity is lost.

The described systems and methods also provide for improved efficiency of the mobile device102. By determining whether the camera block108can perform the image quality analysis, the mobile device102may reduce the energy consumed by the image quality analysis. However, if the camera block108cannot perform the image quality analysis, the mobile device102may still benefit from using hardware optimizations of the GPU110.

FIG. 2is a flow diagram illustrating one configuration of a method200for analyzing image quality. The method200may be performed by a mobile device102. In an implementation, the mobile device102may be configured with a camera104, a camera block108, a GPU110and a CPU114.

The mobile device102may select202the camera block108or GPU110to analyze an image106for image quality upon capturing the image106by the camera104. For example, the mobile device102may determine whether the camera block108is able to perform an image quality analysis for one or more image quality metrics117. This may include making an API call to the camera block108to determine which image quality metrics117the camera block108is capable of analyzing. The image quality metrics117may include one or more of blurriness, out-of-focus areas or a misaligned horizon in the image106.

If the camera block108is able to perform the image quality analysis, then the mobile device102may select202the camera block108to analyze the image106for image quality. Otherwise, the mobile device102may select202the GPU110to analyze the image106for image quality. Furthermore, if the mobile device102does not include a camera block108, then the mobile device102may select202the GPU110for the image quality analysis.

The mobile device102may analyze204the image106for image quality based on the camera block108or GPU110selection. The image quality analysis may occur as a background operation on the mobile device102. For example, if the camera block108is selected, then the mobile device102may send the raw image106data to the camera block108for analysis. The camera block108may provide image quality metric values112for the analyzed image quality metrics117.

If the GPU110is selected202to analyze204the image106for image quality, then the mobile device102may send the raw image106data to the GPU110for analysis. In an implementation, the GPU110may analyze204the image106for image quality using fast Fourier transforms to determine frequencies present in the image106. An absence of high frequencies in the image106may be used to determine blurriness of the image106.

In another implementation, the mobile device102may partition the image106data into bins before sending the image106to the GPU110. The GPU110may then analyze the bins to determine local blurriness associated with the bins.

The mobile device102may generate206a user notification122upon detecting one or more problems with the image106based on the image quality analysis. For example, the camera block108and the GPU110may provide image quality metric values112to the CPU114. The CPU114may detect one or more problems with the image106by comparing the image quality metric values112to image quality thresholds118.

If one or more problems with the image106are detected, then the mobile device102may generate206a user notification122. Generating206the user notification122may include displaying a message that describes the one or more detected problems with the image106. Generating206the user notification122may also include highlighting one or more areas of the image106that are determined to have a problem.

FIG. 3is a flow diagram illustrating another configuration of a method300for analyzing image quality. The method300may be performed by a mobile device102. In an implementation, the mobile device102may be configured with a camera104, a camera block108, a GPU110and a CPU114.

The mobile device102may capture 302 an image106using the camera104. For example, a user may choose to capture an image106using the camera104of the mobile device102.

Upon capturing the image106, the mobile device102may start304an image quality analysis procedure as a background operation. The user may continue to use the mobile device102for normal operations. This user activity may include taking additional images106or performing other operations using the mobile device102. The image quality analysis procedure may run asynchronously with the user activity.

The mobile device102may determine306whether the camera block108is able to perform the image quality analysis. The mobile device102may have pre-configured image quality metrics117that are to be analyzed. The image quality metrics117may include one or more of blurriness, out-of-focus areas or a misaligned horizon in the image106, etc. The mobile device102may check to determine whether the camera block108is capable of performing the image quality analysis for the one or more image quality metrics117.

If the mobile device102determines306that the camera block108is capable of performing the image quality analysis, then the mobile device102may send308the image106to the camera block108for image quality analysis. Upon performing the image quality analysis, the camera block108may provide image quality metric values112for the analyzed image quality metrics117. For example, the camera block108may provide blurriness values, out-of-focus values or crookedness values associated with the image106.

If the mobile device102determines306that the camera block108is not capable of performing the image quality analysis, then the mobile device102may partition310the image106into bins. The mobile device102may then send312the partitioned image106to the GPU110for image quality analysis. Upon performing the image quality analysis, the GPU110may provide image quality metric values112for the analyzed image quality metrics117.

The mobile device102may determine314whether there is a problem with the image106. For example, the mobile device102may compare the image quality metric values112to image quality thresholds118. This may be accomplished as described in connection withFIG. 1.

If there is no problem detected with the image106, then the method300ends316. If the mobile device102determines314that there is a problem with the image106, the mobile device102may generate318a user notification122with problem areas highlighted on the image106. The mobile device102may display the user notification122on a display screen124of the mobile device102.

FIG. 4is an example illustrating a user notification422generated according to the described systems and methods. An image106may be captured by a camera104of the mobile device102. A camera block108or GPU110may automatically perform an image quality analysis for one or more pre-configured image quality metrics117. In this example, the mobile device102determined that the image106is blurry.

The mobile device102may generate a user notification422that is displayed on a display screen424. In this example, the user notification422is a pop-up message (e.g., push notification).

The user notification422may warn the user that a problem was found in the image106. The user notification422may also include a description of the problem. In this case, the user notification422states that the problem is a “Blurry Image.”

The user notification422may include an option to retake the image106. In this example, the user may select “OK” to retake the image106. Alternatively, the user may disregard the user notification422by pressing “Cancel.”

FIG. 5is an example illustrating image quality analysis and a user notification522generated according to the described systems and methods. The image506may be captured by a camera104of the mobile device102. A camera block108or GPU110may automatically perform an image quality analysis for one or more pre-configured image quality metrics117. In this example, the mobile device102determined that there are problems with an out-of-focus face and a misaligned horizon.

The user notification522may be generated by a mobile device102based on the image quality analysis, as described in connection withFIG. 1. The user notification522may include a problem description526that describes what problems were found with the image506. In this example, the problem description526states “(1) Face not in focus” and “(2) Crooked Horizon.”

In this example, the user notification522displays the image506that was captured. Including the image506in the user notification522may aid the user in reviewing the image506for problems.

The user notification522may also include highlighting528on the problem areas. In this example, the user notification522displays highlighting528aon the out-of-focus face and highlighting528bon the misaligned horizon. The highlighting528may aid the user in identifying the problem areas.

The user notification522may also include an option to retake the image506. If a user chooses to retake the image506(e.g., pressing “Yes”), the mobile device102may bring up a camera software application and the user may recapture the image506. Otherwise, the user may choose to disregard the user notification522(e.g., pressing “No”).

FIG. 6is another example illustrating image quality analysis and a user notification622generated according to the described systems and methods. The image606may be captured by a camera104of the mobile device102and a camera block108or GPU110may automatically perform an image quality analysis for one or more pre-configured image quality metrics117. In this example, the mobile device102identified a problem with an out-of-focus face.

The user notification622may be generated by a mobile device102based on the image quality analysis, as described in connection withFIG. 1. The user notification622may include a problem description626that describes what problems were found with the image606. In this example, the problem description626states “Face not in focus.” It should be noted that in this example, the user notification622does not include highlighting528on the problem areas, as compared toFIG. 5. The user notification622may also include an option to retake the image606(e.g., pressing “Yes”) or disregard the user notification622(e.g., pressing “No”).

FIG. 7is yet another example illustrating image quality analysis and a user notification722generated according to the described systems and methods. The image706may be captured by a camera104of the mobile device102and a camera block108or GPU110may automatically perform an image quality analysis for one or more pre-configured image quality metrics117. In this example, the mobile device102identified that the image706is blurry.

In this example, the problem description726states “Blurry Image.” It should be noted that in this example, the user notification722does not include highlighting528on the problem areas, as compared toFIG. 5. The user notification722may also include an option to retake the image706(e.g., pressing “Yes”) or disregard the user notification722(e.g., pressing “No”).

FIG. 8illustrates certain components that may be included within a wireless communication device802. The wireless communication device802described in connection withFIG. 8may be an example of and/or may be implemented in accordance with the mobile device102described in connection with one or more ofFIGS. 1-7.

The wireless communication device802includes a processor803. The processor803may be a general purpose single- or multi-chip microprocessor (e.g., an Advanced RISC (Reduced Instruction Set Computer) Machine (ARM)), a special purpose microprocessor (e.g., a digital signal processor (DSP)), a microcontroller, a programmable gate array, etc. The processor803may be referred to as a central processing unit (CPU). Although just a single processor803is shown in the wireless communication device802ofFIG. 8, in an alternative configuration, a combination of processors (e.g., an ARM and DSP) could be used.

The wireless communication device802also includes memory805in electronic communication with the processor803(i.e., the processor can read information from and/or write information to the memory). The memory805may be any electronic component capable of storing electronic information. The memory805may be configured as random access memory (RAM), read-only memory (ROM), magnetic disk storage media, optical storage media, flash memory devices in RAM, on-board memory included with the processor, erasable programmable read-only (EPROM) memory, electrically erasable programmable read-only (EEPROM) memory, registers and so forth, including combinations thereof.

Data807aand instructions809amay be stored in the memory805. The instructions809amay include one or more programs, routines, sub-routines, functions, procedures, code, etc. The instructions809amay include a single computer-readable statement or many computer-readable statements. The instructions809amay be executable by the processor803to implement the methods disclosed herein. Executing the instructions809amay involve the use of the data807athat is stored in the memory805. When the processor803executes the instructions809, various portions of the instructions809bmay be loaded onto the processor803, and various pieces of data807bmay be loaded onto the processor803.

The wireless communication device802may also include a transmitter811and a receiver813to allow transmission and reception of signals to and from the wireless communication device802via an antenna817. The transmitter811and receiver813may be collectively referred to as a transceiver815. The wireless communication device802may also include (not shown) multiple transmitters, multiple antennas, multiple receivers and/or multiple transceivers.

The wireless communication device802may include a digital signal processor (DSP)821. The wireless communication device802may also include a communications interface823. The communications interface823may allow a user to interact with the wireless communication device802.

It should be noted that one or more of the features, functions, procedures, components, elements, structures, etc., described in connection with any one of the configurations described herein may be combined with one or more of the functions, procedures, components, elements, structures, etc., described in connection with any of the other configurations described herein, where compatible. In other words, any compatible combination of the functions, procedures, components, elements, etc., described herein may be implemented in accordance with the systems and methods disclosed herein.

The functions described herein may be stored as one or more instructions on a processor-readable or computer-readable medium. The term “computer-readable medium” refers to any available medium that can be accessed by a computer or processor. By way of example, and not limitation, such a medium may comprise Random-Access Memory (RAM), Read-Only Memory (ROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), flash memory, Compact Disc Read-Only Memory (CD-ROM) or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray® disc, where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. It should be noted that a computer-readable medium may be tangible and non-transitory. The term “computer-program product” refers to a computing device or processor in combination with code or instructions (e.g., a “program”) that may be executed, processed or computed by the computing device or processor. As used herein, the term “code” may refer to software, instructions, code or data that is/are executable by a computing device or processor.