BAHETI PAWAN KUMAR (US)
SHANDILYA AARRUSHI (US)
SHIVAKUMAR SHREYAS HAMPALI (IN)
SRINIVASAMURTHY NAVEEN (US)
GUPTA YOGESH (US)
WO2012059618A1 | 2012-05-10 |
US20030063213A1 | 2003-04-03 | |||
US20170070671A1 | 2017-03-09 |
CLAIMS What is claimed is: 1. A method for tuning an image signal processor (ISP), comprising: receiving, by a processor, an image to be processed by the ISP; determining, by the processor, a first set of parameter values; receiving, from the ISP, a first processed image, wherein the ISP generates the first processed image using the first set of parameter values to process the received image; determining, by the processor, a second set of parameter values; receiving, from the ISP, a second processed image, wherein the ISP generates the second processed image using the second set of parameter values to process the received image; selecting one of the first processed image or the second processed image as a preferred processed image; and identifying, by the processor, the set of parameter values corresponding to the preferred processed image as a preferred set of parameter values for processing images. 2. The method of claim 1, further comprising: determining one or more image quality (IQ) metrics to be adjusted; and determining a plurality of sets of parameter values corresponding to the one or more IQ metrics to be adjusted, wherein determining the first set and the second set of parameter values comprises identifying the first set and the second set of parameter values from the plurality of sets of parameter values. 3. The method of claim 2, wherein determining the plurality of sets of parameter values comprises identifying the plurality of sets of parameter values in a parameter database coupled to the processor. 4. The method of claim 3, further comprising: outputting the first processed image for display to a user; outputting the second processed image for display to the user; and receiving a user input indicating the preferred processed image. 5. The method of claim 4, further comprising: determining a value for a first IQ metric of the one or more IQ metrics for the preferred processed image; adjusting the value for the first IQ metric; identifying, in the parameter database, a third set of parameter values based on the adjusted value for the first IQ metric; receiving, from the ISP, a third processed image, wherein the ISP generates the third processed image using the third set of parameter values to process the received image; outputting the preferred processed image for display to the user; outputting the third processed image for display to the user; receiving a user input indicating whether to update the preferred processed image; and identifying, by the processor in response to the user input, the set of parameter values corresponding to the preferred processed image as the preferred set of parameter values for processing images. 6. The method of claim 5, further comprising: determining a value for a second IQ metric of the one or more IQ metrics for the preferred processed image; adjusting the value for the second IQ metric; identifying, in the parameter database, a fourth set of parameter values based on the adjusted value for the second IQ metric and the value for the first IQ metric corresponding to the preferred processed image; receiving, from the ISP, a fourth processed image, wherein the ISP generates the fourth processed image using the fourth set of parameter values to process the received image; outputting the updated preferred processed image for display to the user; outputting the fourth processed image for display to the user; receiving a user input indicating whether to update the preferred processed image; and identifying, by the processor in response to the user input, the set of parameter values corresponding to the preferred processed image as the preferred set of parameter values for processing images. 7. The method of claim 6, wherein identifying the set of parameter values comprises identifying, in the parameter database, the set of parameter values to be used in processing images captured by a camera sensor of a device, wherein the device includes the processor, the ISP coupled to the camera sensor, and the parameter database. 8. The method of claim 7, further comprising: receiving, via an input sensor of the device and coupled to the processor, a user input indicating processing preferences for images, wherein determining the one or more IQ metrics to be adjusted is based on the processing preferences. 9. The method of claim 8, wherein different preferred sets of parameter values may be identified in the parameter database for different scene types when capturing an image. 10. The method of claim 8, further comprising adjusting, by the processor, the parameter database before determining the plurality of sets of parameter values, wherein adjusting the parameter database comprises at least one of: densifying the parameter database with one or more new sets of parameter values, removing one or more existing sets of parameter values from the parameter database, or adjusting one or more existing sets of parameter values in the parameter database. 11. The method of claim 8, further comprising: displaying, on a display of the device and coupled to the processor, a plurality of values for the first IQ metric; receiving a user input, via an input sensor of the device and coupled to the processor, indicating a selection of one or more of the plurality of values for the first IQ metric, wherein determining the value for the first IQ metric is based on the selection for the first IQ metric; displaying, on the display of the device and coupled to the processor, a plurality of values for the second IQ metric; and receiving a user input, via the input sensor of the device and coupled to the processor, indicating a selection of one or more of the plurality of values for the second IQ metric, wherein determining the value for the second IQ metric is based on the selection for the second IQ metric; 12. The method of claim 11, further comprising performing wireless communications via one or more wireless transceivers and a baseband processor of the device. 13. A device configured to tune an image signal processor (ISP), comprising: one or more processors configured to: receive an image to be processed by the ISP; determine a first set of parameter values; receive a first processed image, wherein the ISP generates the first processed image using the first set of parameter values to process the received image, determine a second set of parameter values; receive a second processed image, wherein the ISP generates the second processed image using the second set of parameter values to process the received image; select one of the first processed image or the second processed image as a preferred processed image; and identify the set of parameter values corresponding to the preferred processed image as a preferred set of parameter values for processing images. 14. The device of claim 13, wherein the one or more processors are further configured to: determine one or more image quality (IQ) metrics to be adjusted; and determine a plurality of sets of parameter values corresponding to the one or more IQ metrics to be adjusted, wherein determining the first set and the second set of parameter values comprises identifying the first set and the second set of parameter values from the plurality of sets of parameter values. 15. The device of claim 14, further comprising a memory coupled to the one or more processors, wherein the one or more processors, in determining the plurality of sets of parameter values, are configured to identify the plurality of sets of parameter values in a parameter database in the memory. 16. The device of claim 15, further comprising: a display coupled to the one or more processors; and an input sensor coupled to the one or more processors, wherein: the one or more processors are further configured to: output the first processed image to the display; output the second processed image to the display; and receive a user input from the input sensor indicating the preferred processed image; the display is configured to display the first processed image and display the second processed image to a user; and the input sensor is configured to receive the user input from the user. 17. The device of claim 16, wherein the one or more processors are further configured to: determine a value for a first IQ metric of the one or more IQ metrics for the preferred processed image; adjust the value for the first IQ metric; identify, in the parameter database, a third set of parameter values based on the adjusted value for the first IQ metric; receive, from the ISP, a third processed image, wherein the ISP generates the third processed image using the third set of parameter values to process the received image; output the preferred processed image to the display, wherein the display is configured to display the preferred processed image to the user; output the third processed image to the display, wherein the display is configured to display the third processed image to the user; receive, from the input sensor, a user input indicating whether to update the preferred processed image based on the third processed image, wherein the input sensor is configured to receive the user input indicating whether to update the preferred processed image; and identify the set of parameter values corresponding to the preferred processed image as the preferred set of parameter values for processing images. 18. The device of claim 17, wherein the one or more processors are further configured to: determine a value for a second IQ metric of the one or more IQ metrics for the preferred processed image; adjust the value for the second IQ metric; identify, in the parameter database, a fourth set of parameter values based on the adjusted value for the second IQ metric; receive, from the ISP, a fourth processed image, wherein the ISP generates the fourth processed image using the fourth set of parameter values to process the received image; output the preferred processed image to the display, wherein the display is configured to display the preferred processed image to the user; output the fourth processed image to the display, wherein the display is configured to display the fourth processed image to the user; receive, from the input sensor, a user input indicating whether to update the preferred processed image based on the fourth processed image, wherein the input sensor is configured to receive the user input indicating whether to update the preferred processed image; and identify the set of parameter values corresponding to the preferred processed image as the preferred set of parameter values for processing images. 19. The device of claim 18, further comprising: the ISP coupled to the one or more processors; and a camera sensor coupled to the ISP and configured to capture images, wherein the one or more processors, in identifying the set of parameter values, are further configured to identify, in the parameter database, the set of parameter values to be used by the ISP in processing images captured by the camera sensor. 20. The device of claim 19, wherein: the input sensor is further configured to receive a user input indicating processing preferences for images; and the one or more processors are further configured to determine the one or more IQ metrics to be adjusted based on the processing preferences. 21. The device of claim 20, wherein the one or more processors are configured to identify, in the parameter database, different preferred sets of parameter values for different scene types when capturing an image by the camera sensor. 22. The device of claim 20, wherein the one or more processors are further configured to adjust the parameter database before determining the plurality of sets of parameter values, wherein adjusting the parameter database comprises at least one of: densifying the parameter database with one or more new sets of parameter values, removing one or more existing sets of parameter values from the parameter database, or adjusting one or more existing sets of parameter values in the parameter database. 23. The device of claim 20, wherein: the display is further configured to display a plurality of values for the first IQ metric; the input sensor is further configured to receive a user input indicating a selection of one or more of the plurality of values for the first IQ metric, wherein determining the value for the first IQ metric is based on the selection for the first IQ metric; the display is further configured to display a plurality of values for the second IQ metric; and the input sensor is further configured to receive a user input indicating a selection of one or more of the plurality of values for the second IQ metric, wherein determining the value for the second IQ metric is based on the selection for the second IQ metric. 24. The device of claim 23, further comprising one or more wireless transceivers and a baseband processor coupled to the one or more wireless transceivers and configured to perform wireless communications. 25. A non-transitory computer-readable medium storing one or more programs containing instructions that, when executed by one or more processors of a device, cause the device, in tuning an image signal processor (ISP), to: receive an image to be processed by the ISP; determine a first set of parameter values; receive a first processed image, wherein the ISP generates the first processed image using the first set of parameter values to process the received image; determine a second set of parameter values; receive a second processed image, wherein the ISP generates the second processed image using the second set of parameter values to process the received image; select one of the first processed image or the second processed image as a preferred processed image; and identify the set of parameter values corresponding to the preferred processed image as a preferred set of parameter values for processing images. 26. The computer readable medium of claim 25, wherein the instructions further cause the device to: determine one or more image quality (IQ) metrics to be adjusted; and determine, in a parameter database, a plurality of sets of parameter values corresponding to the one or more IQ metrics to be adjusted, wherein determining the first set and the second set of parameter values comprises identifying the first set and the second set of parameter values from the plurality of sets of parameter values. 27. The computer readable medium of claim 26, wherein the instructions further cause the device to: display the first processed image to a user of the device; display the second processed image to the user; and receive a user input indicating the preferred processed image, wherein selecting the preferred processed image is based on the user input. 28. A device configured to tune an image signal processor (ISP), comprising: means for receiving an image to be processed by the ISP; means for determining a first set of parameter values; means for receiving a first processed image, wherein the ISP generates the first processed image using the first set of parameter values to process the received image; means for determining a second set of parameter values; means for receiving a second processed image, wherein the ISP generates the second processed image using the second set of parameter values to process the received image; means for selecting one of the first processed image or the second processed image as a preferred processed image; and means for identifying the set of parameter values corresponding to the preferred processed image as a preferred set of parameter values for processing images. 29. The device of claim 28, further comprising: means for determining one or more image quality (IQ) metrics to be adjusted; and means for determining, in a parameter database, a plurality of sets of parameter values corresponding to the one or more IQ metrics to be adjusted, wherein determining the first set and the second set of parameter values comprises identifying the first set and the second set of parameter values from the plurality of sets of parameter values. 30. The device of claim 29, further comprising: means for displaying the first processed image and the second processed image to a user of the device; and means for receiving a user input indicating the preferred processed image, wherein selecting the preferred processed image is based on the user input. |
TECHNICAL FIELD
[0001] This disclosure relates generally to systems and methods for tuning an image signal processor, and specifically to determining one or more parameters used by an image signal processor to process an image.
BACKGROUND
[0002] A raw image captured by a camera sensor is processed by an image signal processor
(ISP) to generate a final image. Processing may include a plurality of filters or processing blocks being applied to the captured image, such as denoising or noise filtering, edge enhancement, color balancing, contrast, intensity adjustment (such as darkening or lightening), tone adjustment, and so on. Image processing blocks or modules may include lens/sensor noise correction, Bayer filters, de-mosaicing, color conversion, correction or enhancement/suppression of image attributes, denoising filters, and sharpening filters. Each module may include a large number of tunable parameters (such as hundreds or thousands of parameters per module). Additionally, modules may be co-dependent as different modules may affect similar aspects of an image. For example, denoising and texture correction or enhancement may both affect high frequency aspects of an image. As a result, a large number of parameters are determined or adjusted for an ISP to generate a final image from a captured raw image.
[0003] The parameters for an ISP conventionally are tuned manually by an expert with experience in how to process input images for desirable output images. As a result of the correlations between ISP filters / modules and the sheer number of tunable parameters, the expert may require 3-4 weeks to determine or adjust device settings for the parameters based on a combination of a specific camera sensor and ISP. Since the camera sensor or other camera features (such as lens characteristics or imperfections, aperture size, shutter speed and movement, flash brightness and color, and so on) may impact the captured image and therefore at least some of the tunable parameters for the ISP, each combination of camera sensor and ISP may need to be tuned by an expert.
SUMMARY
[0004] This Summary is provided to introduce in a simplified form a selection of concepts that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to limit the scope of the claimed subject matter. [0005] Aspects of the present disclosure relate to systems and methods for tuning an image signal processor (ISP). In some example implementations, a device may include one or more processors configured to receive an image to be processed by the ISP, determine a first set of parameter values, receive a first processed image from the ISP based on the first set of parameter values in processing the received image, determine a second set of parameter values, and receive a second processed image from the ISP based on the second set of parameter values in processing the received image The one or more processors are further configured to select one of the first processed image or the second processed image as a preferred processed image. The one or more processors are also configured to identify the set of parameter values corresponding to the preferred processed image as a preferred set of parameter values for processing images.
[0006] In another example, a method is disclosed. The example method includes receiving, by a processor, an image to be processed by the ISP, determining, by the processor, a first set of parameter values, and receiving, from the ISP, a first processed image. The ISP may generate the first processed image using the first set of parameter values to process the received image. The example method further includes determining, by the processor, a second set of parameter values, and receiving, from the ISP, a second processed image. The ISP may generate the second processed image using the second set of parameter values to process the received image. The example method also includes selecting one of the first processed image or the second processed image as a preferred processed image, and identifying, by the processor, the set of parameter values corresponding to the preferred processed image as a preferred set of parameter values for processing images.
[0007] In a further example, a non-transitory computer-readable medium is disclosed. The non- transitory computer-readable medium may store instructions that, when executed by a processor, cause a device, in tuning an ISP, to receive an image to be processed by the ISP, determine a first set of parameter values, and receive a first processed image. The ISP generates the first processed image using the first set of parameter values to process the received image. The instructions further cause the device to determine a second set of parameter values, and receive a second processed image. The ISP generates the second processed image using the second set of parameter values to process the received image The instructions also cause the device to select one of the first processed image or the second processed image as a preferred processed image, and identify the set of parameter values corresponding to the preferred processed image as a preferred set of parameter values for processing images
[0008] In another example, a device for tuning an ISP is disclosed. The device includes means for receiving an image to be processed by the ISP, means for determining a first set of parameter values, and means for receiving a first processed image from the ISP. The ISP generates the first processed image using the first set of parameter values to process the received image. The device further includes means for determining a second set of parameter values, and means for receiving a second processed image The ISP generates the second processed image using the second set of parameter values to process the received image. The device also includes means for selecting one of the first processed image or the second processed image as a preferred processed image, and means for identifying the set of parameter values corresponding to the preferred processed image as a preferred set of parameter values for processing images.
BRIEF DESCRIPTION OF THE DRAWINGS
[0009] Aspects of the present disclosure are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements.
[0010] FIG. l is a block diagram of an example device for tuning an ISP.
[0011] FIG. 2 is an illustrative flow chart depicting a conventional operation for tuning an ISP for a scene type.
[0012] FIG. 3 is an illustrative flow chart depicting an example operation for automatically tuning an ISP.
[0013] FIG. 4 is an illustrative flow chart depicting an example operation for adjusting the parameter database.
[0014] FIG. 5 is a depiction of a relationship between texture and sharpness IQ metrics.
[0015] FIG. 6 is an illustrative flow chart depicting an example operation for determining new sets of parameter values for adjusting the parameter database.
[0016] FIG. 7 is an illustrative flow chart depicting an example operation for adjusting one or more IQ metrics in a sequential fashion in adjusting the parameters for personal preference.
[0017] FIG. 8 is a depiction of an example clustering of parameter sets as illustrated by a relationship of noise versus texture.
[0018] FIG. 9 is a depiction of an example tree branch illustration for sequentially adjusting IQ metrics.
[0019] FIG. 10 is a snapshot of an example GUI for adjusting an edge IQ metric.
[0020] FIG. 11 is a snapshot of an example GUI for adjusting a high contrast texture IQ metric.
[0021] FIG. 12 is a snapshot of an example GUI for adjusting a low contrast texture IQ metric.
[0022] FIG. 13 is a snapshot of an example GUI for adjusting a noise IQ metric.
[0023] FIG. 14 is a snapshot of an example GUI indicating the concatenation of selections for the different IQ metrics. DETAILED DESCRIPTION
[0024] Aspects of the present disclosure may be used for tuning an image signal processor
(ISP), such as determining or adjusting the parameters used by an ISP for processing an input image. In conventionally tuning an ISP, an expert may require weeks of testing and adjusting to determine the parameters to be used by the ISP. Additionally, a user may have different preferences than what an expert may consider a desirable processed image. For example, a user may prefer more color saturation, a softer image, or otherwise than an expert tuning the ISP. Aspects of the present disclosure may be used in tuning an ISP so that less time may be required to tune the ISP and/or a person without expertise (such as a device user) may assist in tuning the ISP with his or her preferences. In some aspects, a database of ISP parameters may be populated, adapted or updated based on user preferences. The final or updated database may then be used to provide the parameters to the ISP in processing an incoming image.
[0025] In the following description, numerous specific details are set forth, such as examples of specific components, circuits, and processes to provide a thorough understanding of the present disclosure The term“coupled” as used herein means connected directly to or connected through one or more intervening components or circuits. Also, in the following description and for purposes of explanation, specific nomenclature is set forth to provide a thorough understanding of the present disclosure. However, it will be apparent to one skilled in the art that these specific details may not be required to practice the teachings disclosed herein. In other instances, well-known circuits and devices are shown in block diagram form to avoid obscuring teachings of the present disclosure. Some portions of the detailed descriptions which follow are presented in terms of procedures, logic blocks, processing and other symbolic representations of operations on data bits within a computer memory. In the present disclosure, a procedure, logic block, process, or the like, is conceived to be a self-consistent sequence of steps or instructions leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, although not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system.
[0026] It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that throughout the present application, discussions utilizing the terms such as“accessing,” “receiving,”“sending,”“using,”“selecting,” determining,”“normalizing,”“multiplying,”“avera ging,” “monitoring,”“comparing,”“applying,”“updating, ”“measuring,”“deriving,”“settling” or the like, refer to the actions and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system’s registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
[0027] In the figures, a single block may be described as performing a function or functions; however, in actual practice, the function or functions performed by that block may be performed in a single component or across multiple components, and/or may be performed using hardware, using software, or using a combination of hardware and software. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps are described below generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure. Also, the example devices may include components other than those shown, including well-known components such as a processor, memory and the like.
[0028] Aspects of the present disclosure are applicable to any suitable electronic device configured to or capable of tuning an ISP (such as a security system with one or more cameras, smartphones, tablets, laptop computers, digital video and/or still cameras, web cameras, cloud computing networks, testing equipment for ISPs, fabrication facilities, testing devices to interface with ISPs, and so on). While described below with respect to a device having or coupled to one camera, aspects of the present disclosure are applicable to devices having any number of cameras (including no cameras, where images or video are provided to the device, or multiple cameras), and are therefore not limited to devices having one camera. Aspects of the present disclosure are applicable for devices capturing still images as well as for capturing video, and may be implemented in devices having or coupled to cameras of different capabilities (such as a video camera or a still image camera).
Additionally, while described below with respect to a device having one or more ISPs, aspects of the present disclosure are applicable to devices coupled to or interfacing an ISP (such as manufacturing or testing equipment and test devices), and are therefore not limited to devices having an ISP
[0029] The term“device” is not limited to one or a specific number of physical objects (such as one smartphone, one camera controller, one processing system and so on). As used herein, a device may be any electronic device with one or more parts that may implement at least some portions of this disclosure. While the below description and examples use the term“device” to describe various aspects of this disclosure, the term“device” is not limited to a specific configuration, type, or number of objects
[0030] FIG. 1 is a block diagram of an example device 100 for tuning an ISP. The example device 100 may include or be coupled to a camera 102, a processor 104, a memory 106 storing instructions 108, and a camera controller 110. The device 100 may optionally include (or be coupled to) a display 114 and a number of input/output (I/O) components 116 The device 100 may include additional features or components not shown. For example, a wireless interface, which may include a number of transceivers and a baseband processor, may be included for a wireless communication device. The device 100 may include or be coupled to additional cameras other than the camera 102.
The disclosure should not be limited to any specific examples or illustrations, including the example device 100.
[0031] The camera 102 may be capable of capturing individual image frames (such as still images) and/or capturing video (such as a succession of captured image frames). The camera 102 may include a single camera sensor and camera lens, or be a dual camera module or any other suitable module with multiple camera sensors and lenses. The memory 106 may be a non-transient or non- transitory computer readable medium storing computer-executable instructions 108 to perform all or a portion of one or more operations described in this disclosure. The memory 106 may also store a parameter database 109 or a look-up table (LUT) to be used for storing and looking up the parameters for an ISP (such as ISP 1 12). The device 100 may also include a power supply 118, which may be coupled to or integrated into the device 100.
[0032] The processor 104 may be one or more suitable processors capable of executing scripts or instructions of one or more software programs (such as instructions 108) stored within the memory 106. In some aspects, the processor 104 may be one or more general purpose processors that execute instructions 108 to cause the device 100 to perform any number of functions or operations. In additional or alternative aspects, the processor 104 may include integrated circuits or other hardware to perform functions or operations without the use of software. While shown to be coupled to each other via the processor 104 in the example of FIG. 1, the processor 104, the memory 106, the camera controller 110, the optional display 114, and the optional I/O components 116 may be coupled to one another in various arrangements. For example, the processor 104, the memory 106, the camera controller 110, the optional display 114, and/or the optional I/O components 116 may be coupled to each other via one or more local buses (not shown for simplicity)
[0033] The display 114 may be any suitable display or screen allowing for user interaction and/or to present items (such as captured images, video, or a preview image) for viewing by a user. In some aspects, the display 114 may be a touch-sensitive display. The TO components 116 may be or include any suitable mechanism, interface, or device to receive input (such as commands) from the user and to provide output to the user. For example, the I/O components 116 may include (but are not limited to) a graphical user interface, keyboard, mouse, microphone and speakers, and so on. The display 1 14 and/or the I/O components 116 may provide a preview image to a user and/or receive a user input for adjusting one or more settings of the camera 102 (such as selecting and/or deselecting a region of interest of a displayed preview image for an AF operation).
[0034] The camera controller 110 may include an ISP 112, which may be one or more image signal processors to process captured image frames or video provided by the camera 102. In some example implementations, the camera controller 1 10 (such as the ISP 112) may also control operation of the camera 102. In some aspects, the ISP 112 may process received images using parameters provided from the parameter database 109. The processor 104 may determine the parameters from the parameter database 109 to be used by the ISP 112. The ISP 112 may execute instructions from a memory to process image frames or video, may include specific hardware to process image frames or video, or additionally or alternatively may include a combination of specific hardware and the ability to execute software instructions for processing image frames or video.
[0035] Alternatively, images may be received by the device 100 from sources other than a camera, such as other devices, equipment, network attached storage, and so on. In some other aspects, the device 100 may be a testing device where the ISP 112 is removable so that another ISP may be coupled to the device 100 (such as a test device, testing equipment, and so on). While the following examples are described regarding device 100 and ISP 112, the present disclosure should not be limited to a specific type of device or hardware configuration for tuning an ISP.
[0036] With the number of tunable parameters for an ISP possibly reaching hundreds or thousands, a reduced number of metrics (called“image quality” (IQ) metrics) may be mapped to the tunable parameters so that a person assisting in tuning an ISP 112 may focus on the fewer IQ metrics than the large number of tunable parameters. IQ metrics are measurements of perceivable attributes of an image (with each perceivable attribute called a“ness”). Example nesses are the luminance of an image, the sharpness of an image, the graininess of an image, the tone of an image, the color saturation of an image, and so on, and are perceived by a person if changed for an image. For example, if a luminance of an image is decreased, a person perceives the image to be darker. In some examples, the number of IQ metrics may be 10-20, with each IQ metric corresponding to a plurality of tunable parameters. Additionally, two different IQ metrics may affect some of the same tunable parameters for the ISP 112. In some example implementations, the parameter database 109 may correlate different values of IQ metrics to different values for the parameters. For example, an input vector of IQ metrics may be associated with an output vector of tunable parameters so that an ISP 112 may be tuned for the corresponding IQ metrics. Since the number of parameters may be large, the parameter database 109 may not store all combinations of IQ metrics, but instead include a portion of the number of combinations. While the memory 106 and parameter database 109 are shown to be included in device 100, the database may be stored outside of the device 100 (such as in a network attached storage, cloud storage, testing equipment coupled to device 100, and so on). The present disclosure should not be limited to device 100 or a specific implementation of parameter database 109 or memory 106. Further, the parameters may also impact components outside of the ISP 112 (such as the camera 102), and the present disclosure should not be limited to specific described parameters or parameters specific only to the ISP. For example, the parameters may be for a specific ISP and camera (or camera sensor) combination.
[0037] An IQ model may be used to map the IQ metrics to the tunable parameters. Any type of
IQ model may be used, and the present disclosure is not limited to a specific IQ model for correlating IQ metrics to ISP parameters. In some example implementations, the IQ model may include one or more modulation transfer functions (MTFs) to determine changes in the ISP parameters associated with a change in an IQ metric. For example, changing a luminance IQ metric may correspond to parameters associated with adjusting a camera sensor sensitivity, shutter speed, flash, the ISP determining an intensity for each pixel of an incoming image, the ISP adjusting the tone or color balance of each pixel for compensation, and so on A luminance MTF may be used to indicate that a change in the luminance IQ metric corresponds to specific changes in the correlating parameters.
[0038] The IQ model or MTFs may vary between different ISPs or vary between different combinations of ISPs and cameras (or camera sensors). As a result, tuning the ISP may comprise determining the differences in MTFs or the IQ model so that the IQ metric values are correlated to preferred tunable parameter values for the ISP (in the parameter database 109). Since an“optimally” processed image may be based on user preference or subjective for one or more experts, the optimization of an IQ model may be open ended and subject to differences between users or persons assisting with the tuning. However, there are attempts to quantify an IQ, such as by using an IQ scale (such as from 0 to 100, with 100 being the best) to indicate the IQ performance for an ISP and/or a camera In this manner, the IQ for a processed image is quantified, and an expert may use such quantification to tune an ISP (such as the adjusting or determining the parameters for the ISP or the combination of the ISP and camera). Some IQ metrics may be opposed to one another, such as noisiness and texture, where reducing or increasing the noise may correspondingly reduce or increase the high frequency texture information in an image. When tuning an ISP, trade-offs are determined between IQ metrics to attempt to optimize processing of an image (such as by generating the highest quantified IQ score from an IQ scale).
[0039] Optimizing the IQ metrics or otherwise tuning an ISP may differ for different scene types. For example, indoor scenes illuminated by incandescent lighting may correspond to different “optimal” IQ metrics (and corresponding parameters) than outdoor scenes with bright natural lighting. In another example, a scene with large flat fields of color and luminance may correspond to different “optimal” IQ metrics than a scene with large numbers of colors and variances in color within a field.
As a result, an ISP may be tuned for a plurality of different scene types. [0040] FIG. 2 is an illustrative flow chart depicting a conventional operation 200 for tuning an
ISP for a scene type. An initial set of parameter values for the ISP is used in processing one or more received images (202). An expert then inspects the original and processed images to determine how the parameters should be adjusted (204). Through inspection of the images (204), the expert determines the parameters to be adjusted and the amount of adjustment (206). For example, the expert may determine the IQ metrics to be adjusted and the amount of adjustment, and one or more MTFs for the adjusted IQ metrics may be used to determine the amount of adjustment for corresponding ISP parameters. The parameters are adjusted (208), and the adjusted parameters are used for the ISP to again process one or more images (210). The process reverts to 204, with the expert repeatedly inspecting the images, adjusting the parameters, and the ISP processing images with the adjusted parameters until the expert is satisfied with the processed images. Once the parameters are“optimized,” the parameter values may be stored in a parameter database (such as database 209) for the scene type. Multiple sets of parameter values may be stored for a scene type, and/or the stored sets of parameter values may correspond to discrete differences in one or more IQ metrics.
[0041] In some example implementations, at least a portion of the ISP is automatically tuned by a device As a result, the time for tuning an ISP may be reduced. Automatically tuning the ISP may also take into account user preferences to tune an ISP for a user’s preferences instead of an expert (therefore providing images more preferable to the user). The automatic tuning of an ISP may be performed during device or ISP design, manufacture or testing, which may include assisting an expert in tuning the ISP. Alternatively or additionally, the automatic tuning of an ISP may be performed by an end user’s device, such as a smartphone, tablet, or other device including and/or in communication with one or more ISPs (such as device 100 including ISP 112). For example, an ISP 112 may have been tuned previously by an expert, with the parameter database 109 populated with parameter values to be used for different scene types. Automatically tuning with user input may update the ISP tuning so that the parameter database 109 may be updated to include parameter values preferred by the user (such as by densifying the parameter database 109 with additional vectors of parameter values or adjusting existing vectors of parameter values). In another example, the MTFs may be updated through the automatic tune procedure to better correlate parameters with IQ metrics. The automatic tuning may include software, special hardware, or a combination of both. For example, automatically tuning may include an application or software to be executed by processor 104 for populating or updating the parameter database 109 of device 100.
[0042] In automatically tuning, a person (such as a tuning expert and/or a user of a given device) may be presented with different possible processed images to determine which images the person prefers and therefore which IQ metrics may be of more importance to the person in tuning the ISP. Additionally, or alternatively, a person may select the IQ metrics of importance to him or her, and the device may present possible processed images for different values of the IQ metrics to determine the person’s preference and therefore improve the tuning of the ISP for the person.
[0043] FIG. 3 is an illustrative flow chart depicting an example operation 300 for automatically tuning an ISP. Beginning at 302, one or more images (such as raw images captured by a camera) may be received. In some implementations, values for parameters that are fixed for an ISP optionally are determined (304). For example, sensor or module specific parameter values, such as some parameters for black level, lens roll-off, gamma, color, etc., may not change for different scene types. The parameter values may therefore be determined separate from automatically tuning the ISP (such as determining values for non-fixed parameters). Alternatively, step 304 may not be performed.
[0044] The ISP may then be automatically tuned using the received images (306). As one option, the parameter database and/or the MTFs for an IQ model may be populated or adjusted using the received images (308). For example, relationships and trade-offs between IQ metrics or parameters may be determined or defined for the received images. One example relationship is texture vs. edge sharpness for an image. Preserving edges in an image may also preserve texture or other high frequency information in an image. Another example relationship is noise vs. texture. Preserving texture or high frequency information may also result in more noise being present within an image. A further example relationship is color vs. tone. If the tone of an image is adjusted, tone adjustment may impact the color values for the pixels of the image (such as skewing one or more red green or blue values of a pixel when adjusting the tone of the image). The IQ model to quantify IQ may be used to determine different example values for the parameter set (based on the determined trade-offs) for producing processed images with high IQ scores (such as greater than a predetermined or adjustable threshold, greater than an IQ score for a previous processed image, etc.).
[0045] In an additional or an alternative option in automatically tuning the ISP (306), parameter values for the ISP for different scene types may be determined based on personal preference (310). For example, a person may be provided (e.g., presented for selection) choices with perceptible differences in processed images of the received images in order to assist in determining a person’s preferences. The preferences selected by the person may then be used to densify the parameter database (e.g., populate additional data points), adjust the parameter database (e.g., adjust existing data points), set (e.g., configure or determine) the parameter values for the ISP for processing images, or perform a combination of two or more of the operations.
[0046] The following examples describe automatically tuning with respect to noise vs. image sharpness IQ metrics / nesses and related parameters. However, the same or similar processes may be used for automatically tuning the ISP for other relationships, including color vs. tone or others.
Additionally, while a relationship between two nesses is described, relationships between three or more nesses may be determined or used to determine parameter values, with the number of calculations scaling non-linearly with the number of nesses to be related. Therefore, the following examples are for illustrative purposes only, and should not limit the scope of the present disclosure.
[0047] The parameter database 109 may include sets of parameter values previously determined to cause an ISP to generate a“high-quality” image (e.g., as designated or determined based on an IQ score equaling or exceeding a threshold score). Each set of parameter values may be associated with IQ metric values. The database 109 may be organized or have multiple organization structures so that vectors with similar IQ metrics may be grouped together. For example, the database 109 may be indexed or organized so that sets with similar texture ness values may be identified As described in FIG. 3, the parameter database 109 may be adjusted or updated for automatically tuning the ISP.
[0048] FIG. 4 is an illustrative flow chart depicting an example operation 400 for adjusting the parameter database. Beginning at 402, one or more images for processing by an ISP are received or otherwise made available. The images may be raw images captured by a camera sensor with noise and luminance characteristics that may impact processing. Further, one or more personal preferences (such as preferences of the expert and/or a user for a final processed image) may optionally be received (404). Example preferences may include preferences regarding color saturation, tone, noisiness, etc., of the person for the processed images. A device may then determine whether an existing parameter database (with one or more previously determined sets of parameter values) is to be adjusted based on the characteristics for the camera sensor and/or the personal preferences (406). For example, an insufficient number of sets of parameter values may be determined to exist in the parameter database. In another example, the existing sets may be determined to insufficiently correlate to the camera sensor used for capturing the received images. In a further example, a scene type of a received image may not be covered by the existing parameter database.
[0049] Based on a determination that the parameter database is not to be adjusted (408), such that the sets of parameter values are determined to be sufficient for the received images, the existing parameter database may be used without adjustment (410). Based on a determination that the parameter database is to be adjusted (408), the received images may be evaluated using the existing sets of parameter values in the parameter database (412). In evaluating the received images (412), one or more relationships among IQ metrics may be analyzed using the received images (414). For example, the scatter of IQ metric relationships for texture versus edge sharpness (based on the existing sets of parameter values and the received images for processing) may be analyzed. One or more new sets of parameter values may then be determined based on the analyzed relationships (416). For example, the relationship between edge sharpness and texture IQ metrics may be used to determine new sets of parameter values for different sharpness and texture IQ metrics that still provide a sufficient IQ score for a processed image. The new sets of parameter values may also be used to better define tradeoffs for IQ metrics for the IQ model. For example, new sets of parameter values may indicate tradeoffs between a noisiness IQ metric and a texture IQ metric. The one or more new sets of parameter values may then be determined to be added to the parameter database (418), thus densifying the parameter database. Alternatively or additionally, an existing set of parameter values may be amended based on a new set of parameter values determined.
[0050] In determining new sets of parameter values, one or more IQ metrics may remain fixed while one or more other IQ metrics are adjusted. FIG. 5 is a depiction of a relationship 500 between texture and sharpness IQ metrics. Existing points 502 indicating the relationship between the nesses may be from the existing sets of parameter values corresponding to different texture and sharpness IQ metrics. With only two existing points 502 in the example, a plurality of new parameter value sets for different texture and sharpness IQ metrics may be determined using the received images (so as to have a sufficient IQ score for a processed image). The new sets may correspond to new points 504 on the relationship 500 between texture and sharpness IQ metrics, which may better indicate tradeoffs between IQ metrics. While the relationship 500 is depicted as a graph of two nesses, the relationship may be between any number of nesses and therefore any number of dimensions.
[0051 ] Determining new sets of parameter values may be based on existing sets of parameter values in the parameter database. For example, an existing set of parameter values (a parent set) may be adjusted in order to create one or more new sets of parameter values (children sets). FIG. 6 is an illustrative flow chart depicting an example operation 600 for determining new sets of parameter values for adjusting the parameter database.
[0052] Beginning at 602, a space of near IQ metrics for an existing parent set is determined. For example, a determined distance away from a parent set may be a determined space. Triangulation or sum of differences are example methods for determining a distance, but the space may be determined in any suitable way. Graphically for 3 nesses, a cube may be determined around a parent set, where potential children sets may exist within the cube (space). In another example, a sphere or other suitable shape may be determined around a parent set.
[0053] In some example implementations, a child set may be determined by interpolating parameters values between the parent set and an existing set (such as described regarding 604-608). In some other example implementations, a child set may be determined by perturbing or adjusting parameters of the parent set within the space (such as described regarding 610). In some further example implementations, a combination of interpolating and perturbing may be performed. For example, some child sets may be created through perturbation, then additional child sets may be created through interpolating between the previous child sets and the parent set. In another example, an interpolated child set’s parameters may be perturbed within a space to adjust the child set or create new child sets. [0054] In the example of 604-608, the furthest neighbor from the parent set in the space is used for interpolation. However, any neighbor may be used for interpolation in other examples. Referring back to 604, the distances between the parent set and existing sets in the space may be determined. The furthest set from the parent set may then be determined based on the distances (606) For example, the space may be defined in dimensions of nesses, and a distance may be the combined difference in nesses between the sets. In this manner, the differences in parameter values between the furthest set and the parent set may be considered the maximum adjustments to the parameter values for the parent set in creating children sets As a result, any resulting child set may be configured to be within the space.
[0055] After determining the furthest neighbor in the space (606), one or more parameter values from the parent set may be adjusted with an interpolated difference between the furthest neighbor and the parent set (608). In some example implementations, only a subset of the IQ metrics may be determined to be adjusted. In this manner, the corresponding parameters for the subset of IQ metrics may be adjusted through interpolation. In some other example implementations, all of the parameters may be adjusted through interpolation. Adjusting a parameter may be performed as depicted in equation (1) below:
child parameter = parent parameter + a(neighhor parameter—
parent parameter) (1) where a is a value between 0 and 1. In some example implementations, a may be constant for all parameters to be adjusted. As a result, the factor of adjustment for the parameters being adjusted is the same. For example, based on all parameters being adjusted, the child set is as depicted in equation (2) below^:
child set ----- parent set + a(neighbor set— parent set) (2)
[0056] Alternative or additional to a child set being determined through interpolation, a new set may be determined by adjusting or perturbing one or more parameters of the parent set (610). In some example implementations of adjusting one or more parameters of the parent set, the sparsity of sets around the parent set may be determined, with the sparsity used to determine the factor by which to adjust one or more parameters. A sparsity cost for a parent set may be a distance between the parent set and a distribution of existing sets in the space or across the group. For example, the Mahalanobis distance between the parent set and its existing neighbors in the space may be determined as the sparsity cost. The distance may also be determined for each existing set and an average distance determined for the existing sets across the entire group (which may be an average cost for the group). The factor for adjusting parameters may be as depicted in equation (3) below: where x is the parent set sparsity cost and c is the average sparsity cost for the entire group. If the sparsity around the parent set is greater than the average sparsity (less neighbors surround the parent set than typical), then adjustments to the parameters may be smaller so that the corresponding IQ metrics are within the space. Conversely, if the sparsity around the parent set is less than the average sparsity (more neighbors surround the parent set than typical), then adjustments to the parameters may be greater since the greater number of neighbors indicate that the corresponding IQ metrics for greater adjustments should still be within the space. The size of the window for adjusting a parameter may be a standard deviation of the parameter for the entire group times the factor, and the window may be centered at the parameter value for the parent set. If the sparsity around the parent set is greater than or equal to the average sparsity (less or the same number of neighbors surround the parent set and are distributed than typical), the window size may be approximately one standard deviation. Conversely, if the sparsity around the parent set is less than the average sparsity, the window size may be multiple standard deviations. In some example implementations, a parameter value is randomly or pseudo- randomly selected from the window. In some further example implementations, related parameters (such as parameters associated with an IQ metric) may be adjusted by a similar factor, where a same position in the window is used for each related parameter.
[0057] After generating one or more potential child sets, the IQ metrics for each potential child set may be determined (612). For example, the received image(s) may be processed by the ISP using the child parameter values, and IQ metrics may be calculated from the processed image(s). A determination may then be made whether the IQ metrics are valid (614). In one example, the IQ metrics are compared to the IQ metrics for existing sets in the parameters database to determine if they are consistent. If a portion of the IQ metrics are outliers (e.g., not included among the IQ metrics of the existing sets in the parameter database), the IQ metrics may be considered invalid. In another example, an IQ score may be computed for a processed image. If the image score is sufficient, such as greater than a threshold, the IQ metrics are considered valid. Other suitable processes for determining the validity of the IQ metrics may be used, and the present disclosure should not be limited to specific examples.
[0058] If the new IQ metrics are considered valid (614), the child set may be added to the parameter database (616). If the new IQ metrics are considered invalid (614), the child set may be rejected and not added to the parameter database (618).
[0059] With the database of sets of parameter values to be used for an ISP, personal preferences through user input(s) may be collected to focus the parameter database for personal preferences. In some example implementations, a display may provide (e.g., display) different processed images for a varying IQ metric, and a mechanism for receiving user input (e.g., a GUI or a camera or microphone) may allow a user to select the preferred processed images to indicate the preferences for the IQ metric. FIG. 7 is an illustrative flow chart depicting an example operation 700 for adjusting one or more IQ metrics in a sequential fashion in adjusting the parameters for personal preference. The process may be used to indicate which parameter sets from the parameter database are preferred by the user for the ISP (or ISP and camera combination).
[0060] Beginning at 702, the IQ metrics to be adjusted for a user are determined. In one example, a user may indicate which IQ metrics are of particular importance to that particular user. The IQ metrics may be for a particular scene or generally for all scenes. The parameter sets of the parameter database may then be clustered or grouped for each of the IQ metrics to be adjusted (704). FIG. 8 is a depiction of an example clustering of parameter sets as illustrated by a relationship of noise versus texture. As shown, the parameter sets are clustered into three groups: low noise and texture 802, medium noise and texture 804, and high noise and texture 806. While three groups are shown, any number of clusterings may exist. Additionally, while the relationship is illustrated as between two nesses, the relationship may be any number of dimensions corresponding to the number of nesses being related. The groupings or clusterings indicate the sets with close IQ metrics (such as IQ metrics within a determined distance of one another). For example, the three clusterings indicate that the noise IQ metric and the texture IQ metric are similar for the parameter sets in a cluster. While not shown, one or more parameter sets may not be clustered and may be removed from consideration for the final parameter set to be used by the ISP.
[0061] Referring back to FIG. 7, a received image is processed for each of the parameter sets in a clustering for the IQ metric to first be adjusted (706). The image may also be processed with a varying IQ metric corresponding to differences in the corresponding parameters for each of the parameter sets (with each parameter set possibly being used multiple times to process the image). The number of times that the image is processed may correspond to the number of parameter sets clustered for the IQ metric. The processed images are then displayed or otherwise presented to a user (708) so that the user may indicate which processed image(s) are preferred. The user may then indicate (such as through a GUI or other user input) which processed images are preferred (710). Alternatively, an IQ score may be determined for each of the processed images, and the highest IQ scores or scores greater than a threshold may be used to select the processed images.
[0062] For the user selections, the corresponding parameter values for the IQ metric being adjusted may be determined (712). For example, the user selections may have a subset of parameters corresponding to the IQ metric with similar or the same parameter values across the user selections. In another example, for each selection, the parameter values associated with the IQ metric is preserved when processing an image for a next varying IQ metric. The image is then again processed for a next varying IQ metric (714). The process may continue until all indicated metrics are adjusted. Afterwards, the parameter database may be searched to determine whether the parameters for the preferred IQ metrics are similar to the parameters for one or more stored parameter sets. Such parameter sets may be considered the preferred sets of parameter values to be used by the ISP for processing an image.
Additionally or alternatively, the determined parameter values may be added to the parameter database as one or more new parameter sets.
[0063] In sequentially adjusting IQ metrics, the adjustments may be depicted in a tree branch structure. FIG. 9 is a depiction of an example tree branch illustration 900 for sequentially adjusting IQ metrics. As shown, the clusterings 902 are used as starting points, and an edge MTF 904 may first be used to adjust an edge IQ metric. A high contrast texture MTF 906 may then be used to next adjust a high contrast texture IQ metric. A low contrast texture MTF 908 may next be used to adjust a low contrast texture IQ metric. A noise MTF 910 may then be used to adjust a noise IQ metric. Fine tuning adjustments (indicated as overshoot 912) may then be performed to finalize one or more parameters that may change the perception of the processed image. The end point of each of the arrows may indicate a different processed image. The continuing arrows may indicate that the user selected those images for the respective IQ metric. In some example implementations, the darkened solid arrows, the dashed solid arrows and the gray solid arrow may indicate images selected by the user as preferred over other selected images. The user may select the image corresponding to the final darkened solid arrow during overshoot 912 as the preferred image with respect to the other preferred images.
[0064] A GUI may be used in adjusting one or more IQ metrics. For example, a GUI may allow a user to inspect the trade-off between IQ metrics and determine the preferred metrics. In another example, the GUI may allow a user to determine the preferred IQ metric for the selected metrics to be adjusted. FIGS. 10-14 depict an example GUI for adjusting IQ metrics corresponding to the example tree branch illustration in FIG. 9. FIG. 10 is a snapshot 1000 of an example GUI for adjusting an edge IQ metric. A user may select one or more of the defined edge IQ metric values or relationships and press next to go to the next IQ metric FIG. 11 is a snapshot 1100 of an example GUI for adjusting a high contrast texture IQ metric. With the selections for the edge IQ metric, a user may select one or more of the defined high contrast texture IQ metric values or relationships and press next to go to the next IQ metric FIG. 12 is a snapshot 1200 of an example GUI for adjusting a low contrast texture IQ metric. With the selections for the edge IQ metric and the high contrast IQ metric, a user may select one or more of the defined low contrast texture IQ metric values or relationships and press next to go to the next IQ metric. FIG 13 is a snapshot 1300 of an example GUI for adjusting a noise IQ metric.
With the selections for the edge IQ metric and the high and low contrast IQ metrics, a user may select one or more of the defined noise IQ metric values or relationships and press add to cart to end. As shown, the potential noise IQ metrics (N in FIG. 1 ) are based on the previously selected IQ metrics (E selected for edge tuning (FIG. 10), H selected for high contrast tuning (FIG. 11), and L selected for low contrast tuning (FIG. 12) under each of the images on the left of the snapshot 1300). [0065] The GUI may show the groupings of selected IQ metrics (with respective parameter sets). FIG. 14 is a snapshot 1400 of an example GUI indicating the concatenation of selections for the different IQ metrics. In some example implementations, a user may select one or more final concatenations to be used (such as by checking the box to the left illustrated in snapshot 1400). The parameter set used by the ISP is thus dependent on the selected IQ metric values or relationships (such as through the different MTFs for determining the parameter values for a selected grouping of IQ metrics. For example, one or more sets of parameter values from the parameter database may be identified based on the selected concatenation of IQ metrics (such as from FIG. 14). Such identified sets of parameter values may therefore be used by the ISP in processing received images.
[0066] The techniques described herein may be implemented in hardware, software, firmware, or any combination thereof, unless specifically described as being implemented in a specific manner. Any features described as modules or components may also be implemented together in an integrated logic device or separately as discrete but interoperable logic devices. If implemented in software, the techniques may be realized at least in part by a non-transitory processor-readable storage medium (such as the memory 106 in the example device 100 of FIG 1) comprising instructions 108 that, when executed by the processor 104, cause the device 100 to perform one or more of the methods described above. The non-transitory processor-readable data storage medium may form part of a computer program product, which may include packaging materials.
[0067] The non-transitory processor-readable storage medium may comprise random access memory (RAM) such as synchronous dynamic random access memory (SDRAM), read only memory (ROM), non-volatile random access memory (NVRAM), electrically erasable programmable read-only memory (EEPROM), FLASH memory, other known storage media, and the like. The techniques additionally, or alternatively, may be realized at least in part by a processor-readable communication medium that carries or communicates code in the form of instructions or data structures and that can be accessed, read, and/or executed by a computer or other processor.
[0068] The various illustrative logical blocks, modules, circuits and instructions described in connection with the embodiments disclosed herein may be executed by one or more processors, such as the processor 104 of FIG. 1. Such processor(s) may include but are not limited to one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), application specific instruction set processors (ASIPs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. The term“processor,” as used herein may refer to any of the foregoing structures or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated software modules or hardware modules configured as described
herein. Also, the techniques could be fully implemented in one or more circuits or logic elements. A general purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e g., a combination of a DSP and a
microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
[0069] While the present disclosure shows illustrative aspects, it should be noted that various changes and modifications could be made herein without departing from the scope of the appended claims. Additionally, the functions, steps or actions of the method claims in accordance with aspects described herein need not be performed in any particular order unless expressly stated otherwise. For example, the steps of the described example operations may be performed in any order and at any frequency. Furthermore, although elements may be described or claimed in the singular, the plural is contemplated unless limitation to the singular is explicitly stated. Accordingly, the disclosure is not limited to the illustrated examples and any means for performing the functionality described herein are included in aspects of the disclosure.
Next Patent: UNIVERSAL CONNECTOR OR CAP FOR MALE AND FEMALE THREADED FITTINGS