In a computer device, the power consumption of a display is important, as it impacts the length of time that the device may operate on power from the battery. When a display is using a higher resolution, more power is used. For example, an Ultra High Definition (UHD) display typically has a higher power usage than a Full High Definition (FHD) display.
A user may only sometimes want or need a higher resolution display, e.g., to display details of a high-resolution image that may only be perceivable at a higher resolution (e.g., UHD), but the display may be set to UHD so all content, even lower resolution content (e.g., FHD), is displayed at UHD. Therefore, the user is always using the UHD level of power even if it is not always necessary. The resolution of some displays may be adjusted by manual input of a user, such as by adjusting display settings of an operating system.
Described therein are systems, methods, and/or software solutions for automatically adjusting a display's resolution (e.g., between UHD and FHD) based on a similarity analysis of neighboring pixels. A computing system, such as a desktop, laptop, tablet, or other computing device, may execute software or firmware that monitors content that is buffered for display (and/or already displayed) on a display panel and automatically adjusts the display resolution lower and higher depending on similarity of neighboring pixels in the content. The computing system (or simply the “system”) may execute a resolution optimization module (or “resolution module”) that includes an algorithm that performs a “similarity judgment” to determine which resolution it should run. To determine the “similarity” of a display image, the algorithm may start from a corner pixel and compare that pixel (the “target pixel”) with one or more neighboring pixels (or “adjacent pixels”). In one embodiment, if the pixel values are the same, the algorithm notes “1.” If the pixels values are different, the algorithm notes “0.” In other embodiments, other comparison values may be used, such as a pixel value difference between a target pixel value and an adjacent pixel value. For example, if a target pixel value is 1 and an adjacent pixel value is 0.9, a comparison value may be 0.1 (1-0.9).
In some examples, the algorithm notes a similarity value as a ratio of the comparison values of the neighboring pixels over the number of comparisons done. For example, if pixel 1 compares itself to two neighboring pixels, one with the same pixel value (“1”) and one with a different pixel value (“0”), the total comparison value is 1 (1+0) and the number of comparisons is 2, so the similarity value for pixel 1 is 50% (1/2=0.5). Alternatively, pixel 1 may also compare itself to three neighboring pixels. After all the pixels have been compared, the algorithm then calculates an average ratio of similarity of each similarity value. In other embodiments, a similarity value (or similarity score) may be calculated in other manners.
In some examples, the resolution optimization module keeps track of the similarity values and may repeat the process for some or all of the pixel in the display. After the resolution optimization module completes the similarity values, it may determine an overall similarity value for the display (e.g., for all the pixels for which a similarity value was calculated). In some embodiments, the overall similarity value is an average of all of the similarity values. In other embodiments, the overall similarity value may be some other statistical aggregation of the similarity values for multiple pixels. One example, if the overall similarity value is less than a specified threshold, the resolution of the display is maintained at the current level (e.g., at UHD), but if the overall similarity value is above the specified threshold, then the resolution may be lowered (e.g., from UHD to FHD). Then, the system may communicate the resulting resolution (e.g., UHD or FHD) to the display panel. For example, the threshold may be set to 50%. The overall similarity value may then be recalculated, such as at every screen refresh (e.g., a refresh rate), time period, power state change, or in response to some other trigger, and the resolution may be increased (e.g., back to UHD from FHD) when a lower overall similarity value (e.g., below 50%) is calculated. In other embodiments, the display resolution may be returned to a higher resolution when the user provides an input, such as a shortcut key indicating that the display resolution should be increased.
In some implementations, the user selects an “Auto resolution mode” (or “Resolution Optimization Model”) for power saving, which will trigger the system to turn on the resolution optimization mode and automatically adjust the resolution using the similarity judgment algorithm. By selecting “Auto resolution mode,” the system will routinely run the similarity judgment algorithm to determine the optimal resolution for the current display without the users prompting.
In some implementations, the similarity algorithm compares groups of pixels, instead of each neighboring pixel, to reduce the number of calculations needed. Optionally, the algorithm may stop comparing the pixels partway through the display if the algorithm can already determine the resolution needed without completing all the pixels.
In some implementations, the display can allow the system to duplicate pixel information to nearby pixels regardless of the set display resolution. For example, if the display is set to use UHD resolution, it can virtually show FHD resolution by duplicating the pixel information to nearby pixels. By showing virtually FHD resolution, the system can save power consumption by just generating FHD content.
In some implementations, to begin analyzing the similarity of an input image, the algorithm starts from the corner pixel. This may be any corner pixel of the display. From there, the algorithm may compare the corner pixel to neighboring pixels. Then, the algorithm continues to the rest of the pixels in the display, until it has completed the similarity analysis for every pixel (or some preset of the pixels.
Example Resolution Optimization
At block 220, once the system receives a trigger for the optimization module to recalculate the similarity scores (at block 210), it determines the current resolution of the display 206 (
If the current resolution of the display 206 is high, the method continues to block 230 wherein the system determines a similarity score of the pixels of the display, as detailed below in
At block 240, the system determines if the overall similarity score of the pixels of the display 206 as calculated in block 230 is at or above a specified threshold. If the similarity score of the pixels of the display 206 is below the specified threshold, the system will return to the previous block 230 of determining the similarity score to await if the score changes as the display changes. If there is no change or the similarity score remains below the specified threshold, then the resolution remains the same. In some examples, the method returns to block 210 to await a trigger for recalculation of the similarity score.
If the overall similarity score as calculated in block 230 is at or above the specified threshold, the method continues to block 250 where a command to decrease the display resolution is sent to the display. For example, the system may send a command to the display module to reduce the display resolution from UHD to FHD.
Alternatively, if at block 220 the current resolution of the display is determined to be low, the system will determine a similarity score of the pixels of the display at block 231 using the same method as discussed for block 230.
At block 241, the system determines if the overall similarity score of the pixels of the display 206 as calculated in block 231 is at or below a specified threshold. If the similarity score of the pixels of the display 206 is above the specified threshold, the system will return to the previous block 231 of determining the similarity score to await if the score changes as the display changes. If there is no change or the similarity score remains above the specified threshold, then the resolution remains the same. In some examples, the method returns to block 210 to await a trigger for recalculation of the similarity score.
If the overall similarity score as calculated in block 231 is at or below the specified threshold, the system will send a command to increase the display resolution at block 251. For example, the system may send a command to the display module to increase the display resolution from FHD to UHD.
If the system determines that additional target pixels are available for scoring, the method continues to block 320 where the system will select a next target pixel. Then, at block 330, a target pixel value of the target pixel is determined and at block 340 a neighbor pixel value of one or more neighbor pixels in one or more directions is determined. For example, the neighbor pixel value of a neighbor pixel to the right and the neighbor pixel below the target pixel may be determined. In other examples, fewer (e.g., one) or more (e.g., three or more) neighbor pixel values may be determined for use in calculating a similarity score for a particular target pixel.
Continue to block 350, the system determines a similarity value based on a distinct group of pixels including at least the target pixel value and the one or more neighbor pixel values. For example, if the neighbor pixel value and the target pixel value are the same, then the similarity value may be 0 and if the neighbor pixel value and the target pixel value are not the same, then the similarity value may be 1. In some examples, such as where multiple neighbor pixel values are used in calculating a similarity score for a target pixel, a comparison value for each pair of pixel values may be determined. The method then returns to block 310 where a determination is made as to whether there are additional target pixels and, if so, blocks 320-350 are repeated for the additional target pixels. Once there are no more target pixels, the system has a set of similarity values as calculated in block 350, with each similarity value being associated with a distinct group of pixels.
At block 360, once there are no more target pixels left for scoring, the system will calculate an overall similarity score. For example, the system may take an average of all the similarity values, of the target pixel. Then, at block 370, based on the overall similarity score, the system will determine the optimal display resolution based whether the overall similarity score is at or above a specified threshold.
Starting with
For
Similar to
For
Example Implementation Details
It is to be understood that not necessarily all objects or advantages may be achieved in accordance with any particular example described herein. Thus, for example, those skilled in the art will recognize that certain examples may be configured to operate in a manner that achieves or optimizes one advantage or group of advantages as taught herein without necessarily achieving other objects or advantages as may be taught or suggested herein.
All of the processes described herein may be embodied in, and fully automated via, software code modules, including one or more specific computer-executable instructions, that are stored in memory (e.g., RAM) and are executed by a hardware computer processor of a computing system. The computing system may include one or more computers or processors. The code modules may be stored in any type of non-transitory computer-readable medium or other computer storage device. Some or all the methods may be embodied in specialized computer hardware.
Many other variations than those described herein will be apparent from this disclosure. For example, depending on the example, certain acts, events, or functions of any of the algorithms described herein can be performed in a different sequence, can be added, merged, or left out altogether (e.g., not all described acts or events are necessary for the practice of the algorithms). Moreover, in certain examples, acts or events can be performed concurrently, e.g., through multi-threaded processing, interrupt processing, or multiple processors or processor cores or on other parallel architectures, rather than sequentially. In addition, different tasks or processes can be performed by different machines and/or computing systems that can function together.
The various illustrative logical blocks, components and modules described in connection with the examples disclosed herein can be implemented or performed by a machine, such as a processing unit or processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A processor can be a microprocessor, but in the alternative, the processor can be a controller, microcontroller, or state machine, combinations of the same, or the like. A processor can include electrical circuitry configured to process computer-executable instructions. In another example, a processor includes an FPGA or other programmable device that performs logic operations without processing computer-executable instructions. A processor can 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. Although described herein primarily with respect to digital technology, a processor may also include primarily analog components. A computing environment can include any type of computer system, including, but not limited to, a computer system based on a microprocessor, a mainframe computer, a digital signal processor, a portable computing device, a device controller, or a computational engine within an appliance, to name a few.
Conditional language such as, among others, “can,” “could,” “might,” or “may,” unless specifically stated otherwise, are otherwise understood within the context as used in general to convey that certain examples include, while other examples do not include, certain features, elements, blocks and/or steps. Thus, such conditional language is not generally intended to imply that features, elements and/or steps are in any way required for one or more examples or that one or more examples necessarily include logic for deciding, with or without user input or prompting, whether these features, elements, blocks and/or steps are included or are to be performed in any particular example.
Disjunctive language such as the phrase “at least one of X, Y, or Z,” unless specifically stated otherwise, is otherwise understood with the context as used in general to present that an item, term, etc., may be either X, Y, or Z, or any combination thereof (e.g., X, Y, and/or Z). Thus, such disjunctive language is not generally intended to, and should not, imply that certain examples require at least one of X, at least one of Y, or at least one of Z to each be present.
Any process descriptions, elements or blocks in the flow diagrams described herein and/or depicted in the attached figures should be understood as potentially representing modules, segments, or portions of code which include one or more executable instructions for implementing specific logical functions or elements in the process. Alternate implementations are included within the scope of the examples described herein in which elements or functions may be deleted, executed out of order from that shown, or discussed, including substantially, concurrently or in reverse order, depending on the functionality involved as would be understood by those skilled in the art.
Unless otherwise explicitly stated, articles such as “a” or “an” should generally be interpreted to include one or more described items. Accordingly, phrases such as “a device configured to” are intended to include one or more recited devices. Such one or more recited devices can also be collectively configured to carry out the stated recitations. For example, “a processor configured to carry out recitations A, B, and C” can include a first processor configured to carry out recitation A working in conjunction with a second processor configured to carry out recitations B and C.
Number | Name | Date | Kind |
---|---|---|---|
5481651 | Herold | Jan 1996 | A |
5991883 | Atkinson | Nov 1999 | A |
6389180 | Wakisawa | May 2002 | B1 |
9355434 | Dupret | May 2016 | B2 |
9489928 | Andrysco et al. | Nov 2016 | B2 |
10264211 | Leech et al. | Apr 2019 | B2 |
20010020950 | Shimizu | Sep 2001 | A1 |
20220148134 | Cantu et al. | May 2022 | A1 |
Number | Date | Country |
---|---|---|
1163657 | Dec 2001 | EP |
0021066 | Apr 2000 | WO |
Entry |
---|
Dictionary.com, “adjacent,” in Dictionary.com Unabridged. Source location: Random House, Inc. http://dictionary.reference.com/browse/adjacent, Nov. 18, 2011, p. 1. |