Dynamic demura control for LED display
The system addresses LED panel non-uniformity by dynamically adjusting demura processing based on contextual data, reducing power consumption and extending battery life while maintaining display quality.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- MICROSOFT TECHNOLOGY LICENSING LLC
- Filing Date
- 2024-11-19
- Publication Date
- 2026-05-28
AI Technical Summary
LED panels, particularly OLED panels, exhibit non-uniformity due to variations in film thickness during manufacturing, leading to diminished performance and increased power consumption in correcting display unevenness.
A system dynamically adjusts demura configuration by analyzing input pixel data and contextual factors to determine an appropriate demura mode, reducing or bypassing demura processing where unevenness is not visible, thereby conserving power and improving battery life.
Reduces processing and power consumption, extends device operation time, and maintains display quality by dynamically controlling demura correction based on user interaction and environmental conditions.
Smart Images

Figure CN2024133056_28052026_PF_FP_ABST
Abstract
Description
DYNAMIC DEMURA CONTROL FOR LED DISPLAYBACKGROUND
[0001] Certain types of light emitting diode (LED) panels are manufactured in a manner that often results in a non-uniformity of the produced panel. For instance, organic LED (OLED) panels commonly are produced using an evaporation process in which one or more layers of an organic film are deposited onto a substrate. However, due to the characteristics of the manufacturing chamber (such as its size) , the thickness of the produced film can vary from one area of the panel to another, which alters the performance of the OLED display when energized. While the manufacturing process has improved over time, non-uniformities in the panels are still prevalent, resulting in diminished performance.SUMMARY
[0002] This Summary is provided to introduce a selection of concepts in a simplified form 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 be used to limit the scope of the claimed subject matter.
[0003] Systems and methods are disclosed herein for adjusting a demura configuration in a display. In an example system, input pixel data is analyzed to determine pixel data characteristics. The input pixel data is received from a display controller of a computing device, such as a computing device coupled to the display. Contextual data corresponding to a generation of the input pixel data is analyzed. A demura mode is determined for the input pixel data based on the pixel data characteristics and the contextual data. Elements of a pixel array of a LED display are energized based on the demura mode and the input pixel data. In this manner, a demura correction can be dynamically controlled in a display, leading to various improvements such a reduced processing and power consumption.
[0004] Further features and advantages of the embodiments, as well as the structure and operation of various embodiments, are described in detail below with reference to the accompanying drawings. It is noted that the claimed subject matter is not limited to the specific embodiments described herein. Such embodiments are presented herein for illustrative purposes only. Additional embodiments will be apparent to persons skilled in the relevant art (s) based on the teachings contained herein. BRIEF DESCRIPTION OF THE DRAWINGS / FIGURES
[0005] The accompanying drawings, which are incorporated herein and form a part of the specification, illustrate embodiments of the present application and, together with the description, further serve to explain the principles of the embodiments and to enable a person skilled in the pertinent art to make and use the embodiments.
[0006] FIG. 1 shows a block diagram of a system for adjusting a demura configuration, according to an example embodiment.
[0007] FIG. 2 shows a block diagram of a system for correcting a display unevenness, in accordance with an example embodiment.
[0008] FIG. 3 shows a block diagram of a system for determining a demura mode, in accordance with an example embodiment.
[0009] FIG. 4 shows a flowchart of method for adjusting a demura configuration in a display, in accordance with an example embodiment.
[0010] FIG. 5 shows a flowchart of a method for selectively enabling or bypassing a function of a demura controller, in accordance with an example embodiment.
[0011] FIG. 6 shows a flowchart of a method for energizing a pixel array based on compensation factoring information, in accordance with an example embodiment.
[0012] FIG. 7 shows a block diagram of a system for generating output pixel data based on mura measurement data, in accordance with an example embodiment.
[0013] FIG. 8 shows a flowchart of a method for adjusting a correction frequency of a demura controller, in accordance with an example embodiment.
[0014] FIG. 9 shows a flowchart of a method for analyzing spatial information of input pixel data, in accordance with an example embodiment.
[0015] FIG. 10 shows a flowchart of a method for analyzing luminance information of input pixel data, in accordance with an example embodiment.
[0016] FIG. 11 shows a block diagram of an example computer system in which embodiments may be implemented.
[0017] The subject matter of the present application will now be described with reference to the accompanying drawings. In the drawings, like reference numbers indicate identical or functionally similar elements. Additionally, the left-most digit (s) of a reference number identifies the drawing in which the reference number first appears.DETAILED DESCRIPTIONI. Introduction
[0018] The following detailed description discloses numerous example embodiments. The scope of the present patent application is not limited to the disclosed embodiments, but also encompasses combinations of the disclosed embodiments, as well as modifications to the disclosed embodiments. It is noted that any section / subsection headings provided herein are not intended to be limiting. Embodiments are described throughout this document, and any type of embodiment may be included under any section / subsection. Furthermore, embodiments disclosed in any section / subsection may be combined with any other embodiments described in the same section / subsection and / or a different section / subsection in any manner.II. Example Embodiments
[0019] Certain types of light emitting diode (LED) panels are manufactured in a manner that often results in a non-uniformity of the produced panel. For instance, organic LED (OLED) panels commonly are produced using an evaporation process in which one or more layers of an organic film are deposited onto a substrate. However, due to the characteristics of the manufacturing chamber (such as its size) , the thickness of the produced film can vary from one area of the panel to another, which alters the performance of the OLED display when energized. While the manufacturing process has improved over time, non-uniformities in the panels are still prevalent, resulting in diminished performance.
[0020] For instance, during an evaporation process, a vacuum is maintained in a chamber along with the substrate and a supply of organic material. When the chamber is heated, the organic material is evaporated and deposited onto the substrate. To improve manufacturing efficiencies, production environments often rely on large chambers that allows for an increased area for evaporation. However, as the chamber size becomes larger, the risk of an unevenness in the deposited material increases. For instance, the thickness of the deposited organic material can vary from one area or space to another area or space within the same chamber. In addition, transistor threshold voltages and mobility variations result due to a laser annealing process in certain types of manufacturing. Based on the manufacturing, an unevenness results in the OLED panel. In examples, this unevenness can be significant in some instances, leading to visible differences when an OLED panel is energized (e.g., with a video or still image) that become inherent to the manufactured panel. The types of unevenness include various types, such as spotlights and gradients on the screen, and are different for each manufactured array.
[0021] To address such unevenness (also referred to as mura) of the display, a compensation is performed in real-time during operation of the display. Pixel values are measured (e.g., at a manufacturing facility, or another facility prior to delivering the display to an end-user or consumer) , where those measured pixel values capture or record the mura of the display (e.g., a non-uniformity or unevenness in one or more pixels) . These pixel values are used in real-time to calculate compensation factors for input pixel data in a digital domain, such that the rendered images are based on output data that compensates for the panel’s inherent unevenness. Such processing, however, can require a vast amount of computing resources (e.g. processing cycles by a display controller) , leading to increased power utilization and heat generation. When devices rely on batteries as their main or sole power source, increased power consumption results in a diminished operating time of the device.
[0022] Embodiments described herein are directed to adjusting a demura configuration in a display. In an example system, input pixel data is analyzed to determine pixel data characteristics. The input pixel data is received from a display controller of a computing device, such as a computing device coupled to the display. Contextual data corresponding to a generation of the input pixel data is analyzed. A demura mode is determined for the input pixel data based on the pixel data characteristics and the contextual data. Elements of a pixel array of a LED display are energized based on the demura mode and the input pixel data. In this manner, a demura correction can be dynamically controlled in a display, leading to various improvements such a reduced processing and power consumption. For instance, demura processing is dynamically determined to be power gated in some situations based on the pixel data and contextual data, while the amount of pixel processing is scaled down or adjusted in other situations.
[0023] The techniques described herein advantageously provide improvements to computing components, and in particular, the operation and usability of computer displays. For instance, by evaluating various factors (e.g., the input pixel data and / or contextual data relating to a current usage of the display) , an appropriate demura operating mode is determined for the display, such that the demura processing can be bypassed and / or reduced. In other words, the demura operating mode is dynamically determined in various embodiments, such that the demura processing is reduced overall (e.g., either by disabling the demura processing or reducing a correction frequency by which the demura processing operates) . By dynamically reducing the demura processing in such a manner, power consumption is reduced. In turn, the reduction in processing also leads to less heat generation in the device, as well as improved battery life in applications where the display device utilizes a battery as a source of power. In addition, by reducing the power consumption, computing devices are more environmentally friendly, thus improving sustainability as well. Given that timing controllers often are a dominant consumer of power in devices, reducing the processing therefore enables a large reduction of power consumption.
[0024] Other techniques, however, utilize demura processing irrespective of such factors (e.g., the processing is always performed using processors with fast processing speeds) , which utilizes increased computer processing and power consumption. In contrast, techniques described herein enable demura processing to be dynamically adjusted (e.g., scaled down or even bypassed) in some instances, such as where an inference is made that unevenness would not be apparent based on the current factors, thereby conserving power (and improving battery life) , as well as reducing processing and heat generation. In addition to these advantages, the demura correction applied to the screen are still able to be applied in situations where unevenness would be apparent to a user, thereby maintaining an improved pixel quality of the display device. Still further, such disclosed techniques also allow for an improved overall user experience, as the devices in which the display is coupled are able to operate for a longer period of time.
[0025] Embodiments are implemented in various ways to adjust a demura configuration in a display. For instance, FIG. 1 shows a block diagram of a system 100 for adjusting a demura configuration, according to an example embodiment. As shown in FIG. 1, system 100 includes a computing device 102. Computing device 102 includes a user sensor 104, an ambient sensor 106, an operating system 108, a system power manager 110, a display controller 112, and an LED display module 114. LED display module 114 comprises a power meter, a power management integrated circuit (IC) , a timing controller (TCON) 120, column / row drivers 1224, and an LED array. As shown in FIG. 1, TCON 120 comprises a demura correction system 122.
[0026] In embodiments, LED display module 114 is coupled to display controller 112 and configured to render content (e.g., application content, text, graphics, images, videos, etc. ) based on a video signal received from display controller 112. In examples, LED display module comprises LED array 126, such as an OLED panel.
[0027] It should be understood that example embodiments are not limited to OLED devices. In some other examples, the display module comprises other types of arrays or displays, such as a micro-LED array, a liquid crystal display, or any other type of display that is coupled to a display controller of computing device 102 for rendering content (i.e., a collection of pixels) based on a video signal therefrom.
[0028] In some examples, display device 114 is external to computing device 102, such as a standalone monitor or television, and is connected to computing device 102 via a communication interface. In other examples, display device 114 is physically coupled (e.g., integral) to computing device 106, such as a display of a mobile computing device (e.g., a tablet computing device, a laptop computer, a smartphone, etc. ) . In some implementations, LED display module 114 comprises a display that is movably attached (e.g., at a pivot point) to base portion of computing device 102. In some other implementations, LED display module 114 is located in a common housing as computing device 102 (e.g., LED display module 114 is integral and / or affixed to computing device 102) .
[0029] In accordance with various examples, computing device 102 comprises any type of stationary or mobile computing device, including a mobile computer or mobile computing device (e.g., a device, a personal digital assistant (PDA) , a laptop computer, a notebook computer, a tablet computer, a netbook, etc. ) , a desktop computer, a server, a mobile phone or handheld device (e.g., a cell phone, a smart phone, etc. ) , a wearable computing device (e.g., a head-mounted device including smart glasses, a smart watch, etc. ) , an Internet-of-Things (IoT) device, or other type of stationary or mobile device. As discussed previously, in various embodiments, computing device 102 and LED display module 114 comprise a single apparatus, such as a computing device with screen attached thereto. In other examples, computing device 102 is separate from LED display module.
[0030] User sensor 104 comprises hardware and / or software to detect the presence and / or location of a user of computing device 102. In various embodiments, user sensor 108 comprises a hardware device (e.g., a sensor) communicatively coupled to computing device 102, such as a camera (e.g., a complementary metal-oxide semiconductor (CMOS) sensor, a charge-coupled device (CCD) sensor, or other pixel array for capturing red, green, and blue (RGB) pixel information) , a radar sensor, a Time of Flight (ToF) sensor, a person sensor, an ultra-wideband sensor, etc. In some implementations, user sensor 104 is mounted on or physically attached to (e.g., integrated with a common housing as) computing device 102 and / or LED display module 114. In one example, user sensor 104 comprises a sensor (e.g., a front-facing camera) that is part of a housing of LED display module 114 (e.g., in a display bezel portion thereof) . In yet another example, user sensor 104 comprises an external sensor that is communicatively coupled (e.g., via a wired connection, such as USB, or via a wireless connection) that is positioned in a manner to capture a user of computing device 102.
[0031] In various embodiments, user sensor 104 is configured to identify a position of the user relative to LED display module 114 (and / or relative to computing device 102) . For instance, user sensor 108 identifies a proximity of the user relative to LED display module 114 and / or computing device 102.
[0032] In another example, user sensor 104 captures signals (e.g., camera signals or other types of signals) that are used to determine (e.g., by a process executing on operating system 108) whether an attention criteria is satisfied for the user of computing device 102. In examples, the attention criteria indicates whether the user’s attention is focused on LED display module 114. For instance, a process executing on the operating system is configured to determine, based on signals from user sensor 104, whether a user’s face is positioned towards LED display module 114, whether the user’s eyes are facing LED display module 114, or any determination indicative of whether the user’s attention is on computing device 102 and / or LED display module 114. In various other examples, the process executing on the operating system, in conjunction with user sensor 104, utilizes any type of attention tracking or eye tracking techniques to determine whether the user’s attention is directed towards LED display module 114. In implementations, the attention criteria is satisfied where the user’s attention is directed toward LED display module 114, and is not satisfied where the user’s attention is not directed towards LED display module 114.
[0033] In a further example, the process executing on the operating system is configured to determine a specific area of LED display module 114 on which the user’s attention is directed. For instance, using eye tracking or other attention tracking techniques (e.g., based on the camera or one or more other sensors) , an area of the display device that the user is currently looking at is determined. In various examples, the area of the display comprises a particular application, window, portion of text, portion of a graphical user interface element, portion of an image or video, or any other portion of the screen that is smaller than the entire area of the display device.
[0034] Ambient sensor 106 comprises any type of light capturing element, including but not limited to a camera, a photodiode, a photosensor, a photodetector, etc., that converts the captured light information into an electronic signal. In some implementations, ambient sensor 106 is configured to capture an ambient level of light in an environment in which computing device 102 is located (e.g., a room, office, or other location in which the computing device is currently being operated) . In various examples, ambient light sensor 106 captures an ambient light from any combination of artificial and / or natural light sources in the environment.
[0035] Operating system 108 comprises software that controls various aspects of computing device 102, such as the allocation and usage of the components of computing device 102. In various embodiments, operating system 108 provides support for one or more application programs, processes, services, etc. executing thereon relating to the operation of computing device 102. For instance, an application program executing on operating system 108 comprises any program that provides content for rendering on LED display module 114. In examples, the application program comprises software installed on, executing on, or accessible via computing device 102. In implementations, application program provides content to be rendered from information stored locally to computing device 102 and / or information obtained remotely (e.g., via a cloud) . In various embodiments, the content includes text, images, videos, graphics, graphical user interface elements, etc.
[0036] In one example embodiment, operating system 108 is configured to obtain signals 130 from user sensor 104 to determine user attention information (e.g., whether a user attention criteria is satisfied) , as discussed previously. In another example, operating system 108 is configured to obtain signals 132 from ambient sensor 106 to determine an ambient light level of an environment in which computing device 102 is presently located. In various other examples, operating system 108 is configured to determine and / or generate contextual data associated with an operation of computing device 102, as will be described in greater detail below. In other examples, operating system 108 comprises one or more components (e.g., subsystems) for generating a video signal to transmit to display controller 112, such that content generated (e.g., by or in conjunction with operating system 108) is rendered on LED display module 114.
[0037] Display controller 112 any combination of software and / or hardware (e.g., circuitry) that obtains content and / or other information from operating system 108 and transmits a signal to LED display module 114 to cause the display module to display the rendered content. In one example, display controller 112 comprises a graphics processing unit (GPU) , a graphics card, or other graphics controller circuitry. In various embodiments, as will be described in further detail below, display controller 112 provides pixel data (e.g., pixels to be generated by the LED display module) as well as contextual data to timing controller 120.
[0038] In various examples, display controller 112 processes signals obtained from operating system 108 based on one or more parameters of the display (e.g., display device 114) on which the content will be rendered, such as by processing the content to take into account the display’s resolution, display size, frame rate, communication interface used by the display, etc. In this manner, display controller 112 controls the manner in which content is provided to LED display module 114 for rendering. In an implementation, content rendered on LED display module 114 comprises the is based on the signals provided by operating system 114 and processed by display controller 112. In accordance with various embodiments, the content rendered on the display module is further processed by demura correction system 112, as described elsewhere herein.
[0039] In examples, display controller 112 and LED display module 114 are communicatively coupled via any combination of a wired and / or wireless connection. Examples such connections include, but are not limited to, an internal wired connections (e.g., a bus, a video interface, etc., such as in the case of notebook devices, tablets, smartphones, etc. ) , a High-Definition Multimedia Interface (HDMI) cable, a video graphics array (VGA) cable, a universal serial bus (USB) cable, digital video interface (DVI) cable, a DisplayPort (DP) interface, a Display Serial Interface (DSI) signal, a component video interface, a composite video interface, and a coaxial video interface, a BluetoothTMinterface, an infrared (IR) connection, and / or a network connection (e.g., a local area network (LAN) , a wide area network (WAN) , an enterprise network, the Internet, etc. ) .
[0040] TCON 120 is configured to control the operation of one or more components of LED display module 114, including but not limited to the manner in which pixel elements of LED array 126 are energized. In examples, TCON 120 receives information from display 112 that comprises input pixel data and contextual data. In an embodiment, TCON 120 converts the input pixel data into an appropriate format for column / row drivers 124 such that LED array 126 is energized. TCON 120 performs various types of digital processing (e.g., processing of digital data, such as processing of pixel data to compensate for unevenness, among other things) .
[0041] In example embodiments, TCON 120 comprises a timing controller circuit of LED display module 114. In various examples, TCON 120 is implemented (e.g., integrated, embedded, etc. ) on a hardware circuit, such as a System on a Chip (SoC) , a monolithic silicon or monolithic integrated circuit (IC) , a dedicated hardware chip, or other types of hardware. In various embodiments, TCON 120 comprises a memory, such as a flash memory or non-volatile memory, configured to store information, such as processing code, programs, instructions, measurement data (e.g., mura measurement data based on optical measurement of a display that are indicative of an unevenness of the display) , etc. In some implementations, the memory comprises a hardware memory device (e.g., a discrete or designated memory) separate from TCON 120. In various examples, implementation of TCON 120 on a hardware circuit has numerous advantages, such as improved power regulation of the TCON (e.g., by selectively enabling or disabling certain functions therein based on controlling the power thereto) and / or improved and / or accurate measurement of the power utilized by the TCON hardware, e.g., based on a power meter as described herein (e.g., allowing for more accurate control of the demura controller, which can reduce power usage and improve battery life) . In addition, by integrating TCON 120 into a dedicated hardware circuit in various examples, the hardware utilized can be optimized for operations of TCON 120, versus a general purpose processor or computing component that is not as efficient in executing those functions.
[0042] In some embodiments, TCON 120 receives various synchronization and / or clock signals (e.g., from display controller 112 or another component not shown) . TCON 120 generates one or more timing signals and / or controls the timing of one or more other components of LED display module, such as column / row drivers 124 (or other components not expressly illustrated) to enable pixel elements to be energized on LED array 126 at a correct time and / or correct location. In various examples, any of such information, including input pixel data and / or contextual data, are received from display controller 112 via any suitable interface, such as a wired and / or wireless connection descried previously (e.g., HDMI, USB, DP, etc. ) .
[0043] In accordance with various examples, TCON 120 selectively alters at least a portion of the input pixel data to perform one or more corrections thereto, including but not limited to a color, brightness, luminance, etc. of one or more pixels. In some implementations, TCON 120 controls a frame rate or refresh rate of LED display module 114.
[0044] In one implementation, TCON 120 is configured to alter the input pixel data to compensate for unevenness in the display (e.g., a demura process) . In implementations, demura correction system 122 determines whether a demura process will occur for the input pixel data. In another implementation, demura correction system 122 controls an amount of demura correction (e.g., a correction frequency) based on the input pixel data and contextual data. In this manner, demura correction system 122 dynamically determines a demura mode based on various factors (e.g., the input pixel data and / or contextual data) , enabling a reduction of processing in certain situations (such as where an inference is made that unevenness in a display would not be visible or perceived by a user) and / or a reduction in power consumption, while improving the operation of the display (e.g., by continuing to correct for mura in various examples) . Additional details regarding the operation and / or functionality of demura correction system 122 will be described in greater detail below.
[0045] In various embodiments, TCON 120 generates one or more signals that enable element of LED array 126 to be energized. In an embodiment, TCON 120 generates output pixel data, one or more clock signals, shifter signals, pulse signals, column / row driver signals, other panel driving signals, etc. Any one or more of such signals are output by TCON 120 in examples, such as by providing the signal to column / row drivers 124 or one or more other components not expressly shown.
[0046] Column / row drivers 124 are configured to energize elements of LED array 126 based on the signals generated by TCON 120 (e.g., the output pixel data) . In various examples, column / row drivers 124 are configured to generate column and / or row signals such that pixels of a given column and / or row of LED array 126 are energized (e.g., in a scanning fashion) .
[0047] In examples, LED array 126 comprises an array of pixel elements arranged in a grid (e.g., with a predetermined number of rows and columns) . In an implementation, LED array 126 comprises an array of emissive light elements (e.g., an OLED pixel array) . In various embodiments, the OLED array is manufactured according to an evaporation process. For instance, during an evaporation process, a vacuum is maintained in a chamber along with the substrate and a supply of organic material. When the chamber is heated, the organic material is evaporated and deposited onto the substrate. In one implementation, the thickness of the deposited organic material onto the substrate varies from one area or space to another area or space, such that an unevenness of the OLED array (when energized) is present (e.g., beyond a threshold unevenness) .
[0048] System power manager 110 is configured to manage a distribution of power between components (e.g., hardware components) of computing device 102. In examples, system power manager 110 distributes power from a power source (not expressly illustrated) , such as a battery, plug-in power source (e.g., power adapter) , or other power source (e.g., solar, etc. ) . In various embodiments, system power manager 110 distributes power to components such as a processor, peripherals, hardware ports, LED display module 114, display controller 112, sensors, and any other components of computing device 102 that utilize power to operate. In some implementations, system power manager 110 adjusts the power delivered to each such component dynamically (e.g., based on a level of power demand therefrom) . For instance, system power manager 110 distributes more power (e.g., more current) to power management IC 118 of LED display module 114 in instances where LED array 126 is energized with pixel elements in a brighter color spectrum (e.g., white or bright colored pixels) , versus pixels in a darker color spectrum (e.g., black or dark colored pixels) .
[0049] Power management IC 118 is configured to distribute power across various components of LED display module 114, including but not limited to timing controller 120, column / row drivers 124, and / or LED array 126. In examples, power management IC 118 outputs power to any one or more such components at one or more voltages and / or current levels. In various embodiments, power management IC 118 distributes power to such components in a dynamic manner, such as by increasing or decreasing the amount of power (e.g., current) delivered. For instance, where TCON 120 performs an increased (or decreased) amount of processing, power management IC 118 delivers a greater (or lesser) amount of current to TCON 120. Similarly, where LED array 126 is energized in a manner that requires a greater (or lesser) amount of current, power management IC 118 adjusts the amount of current delivered.
[0050] In examples, power meter 116 is configured to determine (e.g., measure) the amount of power (e.g., voltage and / or current) provided by system power manager 110 to power management IC 118. Power meter 116 provides the determined or measured power 134 to TCON 120. For instance, power meter 116 determines the amount of total power utilized by one or more (e.g., all) components of LED display module 114. In one implementation, power meter 116 is configured to determine the amount of power provided to LED array 126. In examples, power meter 116 determines the amount of power utilized on a continuing basis, such as measuring the power utilized or consumed in real time, periodically (e.g., every millisecond, second, etc. ) . In this manner, power meter 116 continuously measures the power utilized by one or more components of LED display module 114 during operation thereof. Such a determination allows for identifying instances where the power usage of LED display module 114 is elevated or not, as well as identifying instances in which an inference can be made indicative of a luminance of pixels displayed on LED array 126, as will be described in greater detail below.
[0051] FIG. 2 depicts a block diagram of a system 200 for correcting a display unevenness, in accordance with an example embodiment. As shown in FIG. 2, system 200 comprises an example implementation of operating system 108, an example implementation of display controller 112, an example implementation of TCON 120, and a source driver IC 216. Operating system 108 108 comprises a user interface (UI) subsystem 202 and a display subsystem 204. Display controller 112 comprises input pixel data 206 and contextual data 208. TCON 120 comprises an example implementation of demura correction system 122. As shown in FIG. 2, demura correction system comprises a demura controller 210, a demura configurator 212, and output pixel data 214.
[0052] UI subsystem 202 of operating system 108 comprises a subsystem (e.g., processes, software, applications, etc. ) responsible for operating a user interface of operating system 108. In examples, the UI of operating system 108 includes any interface in which information is caused to be provided (e.g., presented) to a user and / or information is retrieved from a user (e.g., via one or more input devices) . In various embodiments, UI subsystem 202 comprises one or more applications, software programs, processes, etc. that are executed on operating system 108.
[0053] In examples, UI subsystem 202 generates at least part of a set of data 220 referred to herein as contextual data (e.g., contextual data 208) , such as environmental data, user attention information, usage mode data, time data, power data, and / or other types of information relating to the context in which input pixel data is generated. In an embodiment, UI subsystem 202 collects (e.g., retrieves) any of such data from one or more other sources, such as other components of computing device 102 (e.g., sensors, other subsystems, etc. ) , from a remote source (e.g., the Internet) , or from a user input (e.g., a peripheral device or another user input such as a touch screen) . In examples, UI subsystem 202 provides the contextual data to display subsystem 204. In other examples, UI subsystem 202 provides the contextual data to display controller 112 directly (e.g., without utilization of display subsystem 204) .
[0054] Display subsystem 204 comprises a subsystem of operating system 108 responsible for managing a rendering of content from operating system 108 on LED display module 114. For instance, display subsystem generates and / or retrieves, among other things, pixel information (e.g., the screen image) that identifies pixels that are to be rendered on a display based on information retrieved from operating system 108. In various examples, display subsystem 204 interfaces with display controller 112 (which can be a hardware controller, such as a SoC device) via one or more wired or wireless connections. In example embodiments, display subsystem 204 provides a set of data 222 that includes the input pixel data as well as contextual data retrieved from operating system 108 to display controller 112, such that pixels are rendered on the display.
[0055] It should be understood that while only two illustrative subsystems are shown in operating system 108, any number of subsystems are present in embodiments. For instance, operating system 108 comprises any additional subsystems that perform any one or more of the functions described herein. In addition, any of the described subsystems are combinable together in examples (e.g., the UI subsystem is combined with the display subsystem or one or more other subsystems) .
[0056] Input pixel data 206 comprises, at a given point in time, a set of pixels that are to be rendered on a display by LED display module 114. In examples, input pixel data comprises one or more lines of pixel values (e.g., a red, green, and blue (RGB) pixel value, a color value, a brightness value, etc. ) and / or one or more rows of pixel values, along with a corresponding line and / or row identifier (e.g., a location of the pixel) . For instance, input pixel data 206 comprises line-by-line and / or row-by-row pixel values that are to be rendered by the display module. Examples are not limited to these illustrations, but can include other sets of pixel values for rendering on a display, such as an individual pixel value or a set of pixel values for the entire display (or a portion thereof) . In examples, input pixel data 206 is provided (e.g., transmitted) to one or more components of TCON 120, as described in greater detail herein.
[0057] In various examples, input pixel data 206 comprises a stream of pixel values. For instance, where input pixel data comprise lines of pixel values, each set of input pixel data 206 comprises a different line of pixel values, such that the first line is transmitted to TCON 120 first, the second line is transmitted next, and so on. When the last line is transmitted, input pixel data then comprises (e.g., obtains from display subsystem 206) the first line of a next frame to be rendered, after which the first line of the new frame is transmitted to TCON 120 (and so on) . In this manner, input pixel data 206 is constantly changing during the generation and / or rendering of pixels on the display.
[0058] In an embodiment, input pixel data 206 is transmitted over a display pixel channel to one or more components of TCON 120. For instance, the display pixel channel comprises a video signal line or interface that couples display controller 112 and TCON 120 and carries a stream of input pixel data indicative of the content that is to be rendered by the display. In examples, the display pixel channel comprises pixel values and / or pixel location identifiers (e.g., line numbers, row numbers, etc. ) . In one implementation, the display pixel channel is an Embedded DisplayPort (eDP) channel in which pixel values (e.g., a still image, video signal, etc. ) are transported between display controller 112 and LED display module 114.
[0059] Contextual data 208 comprises any information (e.g., contextual information) associated with the generation of the input pixel data by operating system 108. For instance, contextual data 208 comprises information other than pixel values that relates to the usage and / or operation of computing device 102 during the time the pixel values are generated. In example embodiments, contextual data 208 includes user attention information, usage mode information (e.g., whether the pixel values or the operation of the computing device relate to a user interface, a video, a video game, a still image, a class of applications, etc. ) , ambient illuminance information, a date and / or time, a weather, and / or a power level of the display panel. These are only illustrative, and other types of contextual information associated with the generation of the input pixel data are contemplated (e.g., information relating to how and / or when the computing device is being used, the environment its used in, the purpose its being used for, hardware characteristics associated with the usage, etc. ) .
[0060] In various implementations, contextual data 208 comprises a stream of data (e.g., data that is continuously changing as new contextual data is generated) . For instance, the stream of contextual data 208 corresponds to the stream of input pixel data 206, such that contextual information is correlated (e.g., based on a timing signal or other information) to a given set of pixels (e.g., a rendering of content on the display) .
[0061] In examples, display controller 112 transmits contextual data 208 to one or more components of TCON 120 via a suitable data interface or data channel. In some implementations, contextual data 208 is transmitted over a control channel (e.g., an auxiliary channel) of an interface between display controller 112 and TCON 120. For instance, where the interface comprises both a display pixel channel and a control channel, the display pixel channel transmits input pixel data 206, while the control channel transmits contextual data 208. In some examples, the interface comprises a Inter-Integrated Circuit (I2C) interface that allows for communications between different components of computing device 102.
[0062] In examples, demura controller 210 is configured to obtain input pixel data 206 and selectively perform one or more operations on the input pixel data to generate output pixel data 214. In implementations, demura controller 210 performs a demura process on the input pixel data that compensates one or more pixel values based on unevenness of LED array 126.
[0063] In embodiments, mura (also referred to unevenness herein) comprises any portion (such as a pixel or multiple pixels) of an LED array that exhibit an unevenness or non-uniformity beyond a threshold amount, or unevenness compared to other portions of the display. The unevenness or non-uniformity relates to any one or more pixel characteristics, such as an unevenness or non-uniformity with respect to a brightness, color, etc. In examples, mura results from a manufacturing process of the LED array, where the resulting mura in each manufactured LED array is different from one another. In some implementations, mura includes display artifacts resulting from a manufacturing process.
[0064] For instance, a scanning device, such as a camera, captures a profile of LED array 126 (which can include the entire screen or any portion (s) thereof) , resulting in a capture of an unevenness of the OLED panel. Such capturing is performed at a factory and / or by a manufacturer of the display (e.g., prior to shipment of the display to an end user or consumer) during a calibration procedure. In examples, such a capture is performed when the OLED panel is energized (e.g., by displaying a calibration screen) . This unevenness capture of the panel results in a set of values for the OLED panel (e.g., on a pixel-by-pixel basis) , which is stored in the display. During operation of the display, demura controller 210 obtains input pixel data 206, obtains stored values for pixels of the display based on the input pixel data, and calculates compensation factors for pixels of the display. Demura controller 210 then generates output pixel data 214 based on such a compensation process, which allows for pixel values on the OLED panel to be altered in a manner that compensates for the unevenness resulting from the manufacturing process. In examples, demura controller 210 thereby enables an improved quality of the rendered image (and an overall improved display) that corrects for an inherent unevenness in the LED array.
[0065] Accordingly, in some examples, output pixel data 214 comprises an alteration or adjustment of input pixel data 206 that compensates for an unevenness (or mura) of LED array 126. Output pixel data 214 comprises one or more lines of pixel values (e.g., a RGB pixel value, a color value, a brightness value, etc. ) and / or one or more rows of pixel values, along with a corresponding line and / or row identifier (e.g., a location of the pixel) , similar to input pixel data 206. Demura correction system 122 provides output pixel data 214 to source driver IC 216 such that the LED array can then be energized according to the output pixel data (e.g., by providing appropriate signals to one or more column / row drivers or other components that cause pixels to be rendered on the array) . In examples, source driver IC 216 comprises column / row drivers 124 that are used to energize pixels on LED array 126.
[0066] In implementations, demura configurator 212 is configured to obtain input pixel data 206 and contextual data 208 and determine a demura mode 224 for operating demura controller 210. In examples, the demura mode comprises a selection of one or more operating mode that define the operation of demura controller 210 at a point in time (e.g., for a set of pixels to be rendered) . In one implementation, the operating mode comprise a mode in which demura controller 210 is bypassed (e.g., disabled) or enabled, such that demura controller 210 is selectively operational to alter input pixel data 206. In another implementation, the operating mode comprises a mode in which the functionality of demura controller 210 is altered in a manner that reduces an amount of demura processing, such as by altering (e.g., reducing) a frequency at which input pixel data 206 is corrected or compensated for an unevenness in the LED array. In this manner, demura configurator 212 determines, among other things, whether to cause demura controller 210 to compensate for unevenness, and if so, how much compensation occurs for the input pixel data. By reducing the processing in such a manner, a reduction in power consumption is achieved, thereby enhancing the usability of computing device 102 (among other benefits described elsewhere) . Additional details regarding the operation and functionality of demura correction system 122 are described below.
[0067] FIG. 3 depicts a block diagram of a system 300 for determining a demura mode, in accordance with an example embodiment. As shown in FIG. 3, system 300 comprises an example implementations of input pixel data 206, contextual data 208, demura controller 210, and demura configurator 212. Contextual data 208 comprises environmental data 330, user attention information 332, usage mode data 334, time data 336, and power data 338. Demura configurator 212 comprises a pixel data analyzer 302, a contextual data analyzer 308, and a demura mode determiner 310. Pixel data analyzer 302 includes a spatial order analyzer 304 and a luminance histogram analyzer 306. Demura mode determiner 310 comprises a demura disabler 312 and a correction strength adjuster 314. System 300 is described as follows.
[0068] Pixel data analyzer 302 is configured to analyze input pixel data 206 and determine pixel data characteristics therefrom. In examples, the pixel data characteristics are determined based on outputs from spatial order analyzer 304 and / or luminance histogram analyzer 306. In examples, pixel data characteristics include any information generated by spatial order analyzer 302 and / or luminance histogram analyzer 306. In some implementations, the pixel data characteristics include one or more inferences generated based thereon, such an inference relating to whether a screen unevenness would be visible based on a spatial frequency or luminance histogram. In various embodiments, an inference described herein includes any indication (such as a binary indication) and / or a value (such as a percentage or a relative likelihood) of an event occurring (e.g., whether mura would be visible) .
[0069] Spatial order analyzer 304 is configured to analyze input pixel data 206 (which can include pixels for a portion of a screen and / or an entire screen) and determine a spatial frequency therefrom. In examples, the spatial frequency is indicative of a level of variance of pixel values in a given set of pixel data (e.g., a portion or a whole screen) . For instance, a low spatial frequency is indicative of a low variance of pixel values in a set of pixels, while a high spatial frequency is indicative of high variance of pixel values in a set of pixels. In implementations, where the spatial frequency is relatively high for a given set of pixels, pixel data analyzer 302 makes an inference that mura is not likely to be visible on a display that that renders those pixels. In other words, where the pixel variance on the screen is high (e.g., many different colors being rendered in an image, videos with fast moving scenes) , the perception of mura is low. On the other hand, where the spatial frequency is relatively low (e.g., a uniform image or an image with a low number of colors, renderings of word processing applications, etc. ) , pixel data analyzer 302 makes an inference that mura is likely to be visible on the display that renders those pixels. Based on analyzing information from spatial order analyzer 304, processing of demura controller 210 is dynamically determined in example embodiments, such as to avoid demura processing or reduce the demura processing frequency (e.g., by adjusting a correction frequency) in instances where an inference is made that mura would not likely be visible or is less likely to be visible (e.g., based on a spatial frequency of the input pixel data) . In this manner, processing and / or power consumption is reduced, while also improving the quality of the rendered images on the display (e.g., where demura processing is still performed but at a reduced rate) .
[0070] In examples, luminance histogram analyzer 306 is configured to analyze input pixel data 306 and analyze luminance information therefrom. In some implementations, luminance histogram analyzer 306 generates a luminance histogram from the input pixel data. Luminance histogram analyzer 306 determines, from the luminance information (e.g., the luminance histogram) whether the luminance of the input pixel data would result in mura being visible on the display if those pixels are rendered. For instance, where the luminance information indicates that the input pixel data comprises a relatively large number of a certain tone (e.g., a gray tone) for which human eyes are more sensitive, luminance histogram analyzer 306 makes an inference that mura likely would be visible given that human eyes are more sensitive in certain color tones (e.g., gray tones) than other colors (e.g., white tones) . In contrast, where the input pixel data comprises a large number of tones for which the human eyes are not sensitive, luminance histogram analyzer 306 makes an inference that mura would likely not be visible. Based on analyzing information from luminance histogram analyzer 306, processing of demura controller 210 is dynamically determined in example embodiments, such as to avoid demura processing or reduce the demura processing frequency (e.g., by adjusting a correction frequency) in instances where an inference is made that mura would not likely be visible or is less likely to be visible (e.g., based on the luminance of the input pixel data) . In this manner, processing and / or power consumption is reduced, while also improving the quality of the rendered images on the display (e.g., where demura processing is still performed but at a reduced rate) .
[0071] Environmental data 330 comprises information indicative of (e.g., relating to) an environment in which computing device 102 and / or LED display module 114 is located and / or being operated (e.g., during the time at which input pixel data 206 is generated) . In one example, environmental data 330 includes an ambient illuminance level (e.g., an ambient light level) of a location (e.g., room, office, etc. ) in which computing device 102 is located (e.g., based on an ambient light sensor) . In another example, environmental data 330 includes a weather of the environment. For instance, the weather comprises information indicative of a level of sunlight or other ambient luminance in the environment, or other information indicative of a level of brightness (or dimness) of the environment.
[0072] For instance, where a high ambient illuminance is detected and / or determined (e.g., based on weather data or other information) , an inference is made that mura is less likely to be visible on a display, given that ambient illuminance that causes a reflection on a screen often predominates the effects of mura. In contrast, lower ambient illuminance levels result in an inference that mura is more likely to be visible in examples. In examples, based on such environmental data, processing of demura controller 210 is dynamically determined (e.g., by avoiding or reducing demura processing) such as where an inference is made that mura would not likely be visible or is less likely to be visible (e.g., based on an ambient luminance or other environmental factors) , resulting in processing and / or power consumption reductions as well as image rendering improvements where demura processing is still performed but at a reduced frequency.
[0073] User attention information 332 comprises information indicative of the user’s attention (e.g., an attention detection of a user) on computing device 102 and / or LED display module 114, as described previously. In examples, user attention information 332 is generated (e.g., by the operating system) based on information obtained from user sensor 104, as described herein. For instance, user attention information 332 indicates whether a person is focused on the computing device or the display (e.g., based on person detection techniques) .
[0074] In examples, if a user is attentive with respect to the computing device (e.g., the user is looking at the screen) , an inference is made that mura is more likely to be visible to the user, in contrast with other instances where a user is not attentive (e.g., not looking at the screen or not present in front of the computer) . In various examples, where the user is not attentive, demura controller 210 is configured to reduce demura processing (e.g., by bypassing processing altogether for input pixel data or reducing the correction frequency) , resulting in various improvements described herein such as improved battery life.
[0075] Usage mode data 334 comprises information indicative of a current type of usage of computing device 102, such as the type of content that is being viewed on computing device 102 (e.g., the content that is to be rendered by the display) . For instance, usage mode data 334 identifies a content type, such as user interface content, video content, still image content, video game content, word processing content, or other types of computer usage types. In some implementations, usage mode data 334 identifies an application or an application type that is being executed and / or accessed on computing device 102. In another example, usage mode data 334 identifies an area of the screen that a user is interacting with (e.g., via a pointing device, a touch input, a keyboard input, etc. ) . In examples, usage mode data 334 comprises information that acts as a surrogate to spatial order information, such as by indicating a likelihood that a certain type of usage has a higher or lower spatial frequency (e.g., word processing has a lower spatial frequency comparing to gaming in examples) . In examples, usage mode data 334 allows demura controller 210 to be dynamically determined to avoid or reduce demura processing, such as where mura is less likely to be visible or not likely to be visible. Such dynamic control of demura controller 210 has numerous advantages as described herein, including but not limited to reduced processing, reduced power consumption, and improved display rendering (e.g., where demura processing is performed at a reduced frequency) .
[0076] Time data 336 comprises information indicative of a current time (which includes a date in some examples) of usage of computing device 102. For instance, time data indicates whether computing device 102 is being operated in daytime hours (e.g., where natural ambient light levels are inferred to be higher) , or nighttime hours (e.g., where natural ambient light levels are inferred to be lower) . Similar to the environmental data 330, utilization of time data 336 allows for demura processing to be dynamically controlled, which allows for various benefits described herein.
[0077] Power data 338 comprises information indicative of a current power usage (e.g., current) of one or more hardware components of LED display module 114. In one implementation, power data 338 indicates a level (e.g., amount) of power (e.g., current) provided to and / or consumed by LED array 126 at a point in time. In examples, power data 338 is inferred to act as a surrogate for luminance information (e.g., which is described in greater detail below) . For instance, based on power data 338, an inference is made whether LED array 126 is rendering content with a relatively high luminance (e.g., more power being utilized) , indicative of lighter (e.g., white or similar) colors (where mura is less likely to be visible) , or a relatively lower luminance indicative of darker colors (where mura is more likely to be visible) . Similar to the information analyzed by luminance histogram analyzer 306, utilization of power data 338 allows for demura processing to be dynamically controlled, such as by avoiding or reducing the amount of processing on input pixel data 206, leading to various advantages in example embodiments (e.g., reduction of processing and / or power consumption, improvements to display rendering, etc. ) .
[0078] In various embodiments, power data 338 is based on power meter 116. In other examples, power data 338 is based on one or more other components, such as system power manager 110, or one or more other components of computing device 102. Accordingly, in some implementations, power data 338 is provided to contextual data analyzer 308 over a different channel or interface than one or more other items of contextual data 208 (which are provided over a control channel in some embodiments) .
[0079] In examples, contextual data analyzer 308 obtains contextual data 208 to determine one or more contextual data characteristics indicative of a context relating to a current usage of computing device 102. In implementations, the contextual data characteristics indicate, for instance, whether mura (unevenness) is likely to be perceived on LED array 126 at a given point in time. In some examples, contextual data analyzer 308 generates an inference indicative of whether mura will be perceived based on contextual data 208. For instance, if an ambient light level is high, contextual data analyzer 308 generates an inference indicating that mura is not likely to be visible on the display. In such a scenario, demura mode determiner 310 determines, based on the contextual data (and / or associated inference) and / or the pixel data characteristics, whether to disable demura controller 210 and / or adjust a correction frequency thereof, which will described in greater detail below. This example is only illustrative, and various other factors (e.g., contextual data) as described herein can be utilized to determine a demura mode.
[0080] In one example, demura mode determiner 310 determines to enable demura controller 210 to compensate input pixel data 206 for mura only when necessary (e.g., demura controller 210 is disabled by default) . In other examples, when demura controller 210 is enabled (either by default or based on a signal) , demura mode determiner 310 determines to dynamically scale the correction frequency to suppress processing power (e.g., where contextual data and / or pixel data result in an inference that mura is less likely to be visible) .
[0081] In examples, demura mode determiner 310 is configured to obtain pixel data characteristics 316 and contextual data characteristics 310, and determine a demura mode based thereon. In embodiments, demura controller 210 operates according to the mode determined by demura mode determiner 310. For instance, demura mode determiner 310 determines an operating mode of demura controller 210. In one example, demura disabler 312 provides a signal 320 (e.g., a bypass signal) to demura controller 210 that causes demura controller 210 to bypass a demura process on input pixel data 206. In another example, signal 320 comprises an enable signal that causes demura controller 210 to enable a demura process on input pixel data 206.
[0082] In implementations, demura mode determiner 310 selectively weighs any of the factors or characteristics described herein, including the pixel data and contextual data characteristics in determining which demura mode to operate demura controller 210. For instance, one type of contextual data (or pixel data) has a stronger weight than another type of contextual data (or pixel data) in various implementations. In some implementations, a single factor is utilized by demura mode determiner 310 to determine the operating mode for demura controller 210. Thus, demura mode determiner 310 utilizes any combination of factors in determining how to control demura controller 210.
[0083] When demura processing is bypassed by demura controller 210, output pixel data 214 comprises input pixel data 206. In some embodiments, the bypassing can be performed in various ways, such as by implementation of one or more switches that enable demura controller 210 to be bypassed. In other implementations, input pixel data 206 flows through demura controller 210 without being altered, resulting in output pixel data 214 that comprises the same pixel information as input pixel data. These examples are only illustrative, and other techniques for bypassing a demura process are contemplated
[0084] In another implementation, correction strength adjuster 314 is configured to determine a correction frequency 322 based on the characteristics received by demura mode determiner 310 to adjust the correction frequency of the demura process. For instance, where an inference is made that mura is likely to be visible on the screen based on pixel data characteristics, but an ambient light level is high, correction strength adjuster 314 determines a correction frequency that causes demura controller 210 to compensate for mura on the display, but only for a subset of the input pixel data. In such a technique, the overall processing is reduced, which has numerous benefits as described herein (e.g., conserving power) . Additional details regarding demura disabler 312 and correction strength adjuster 314 are described elsewhere herein.
[0085] Implementations are not limited to the illustrative arrangement shown in FIGS. 1-3. For instance, any of the components shown in FIGS. 1-3 are located in a same component of computing device, are located in different components, and / or are located remote from each other. Furthermore, the systems described herein comprise any number of other devices, networks, servers, and / or computing devices coupled in any manner in various embodiments.
[0086] In accordance with one or more embodiments, the manner in which demura controller 210 operates is configured according to various factors. For example, FIG. 4 shows a flowchart 400 of a method for adjusting a demura configuration in a display, in accordance with an example embodiment. In an embodiment, flowchart 400 is implemented by system 100 as shown in FIG. 1, system 200 as shown in FIG. 2, and / or system 300 as shown in FIG. 3. Accordingly, flowchart 400 will be described with reference to FIGS. 1, 2, and 3. Other structural and operational embodiments will be apparent to persons skilled in the relevant art (s) based on the following discussion regarding flowchart 400, system 100 of FIG. 1, system 200 of FIG. 2, and system 300 of FIG. 3.
[0087] Flowchart 400 begins with step 402. In step 402, input pixel data is analyzed to determine pixel data characteristics, where the input pixel data is received from a display controller of a computing device. For instance, with reference to FIG. 1-3, pixel data analyzer 302 is configured to receive input pixel data 206 from display controller 112 of computing device 102. In embodiments, pixel data analyzer 302 is configured analyze input pixel data 206 to determine pixel data characteristics 316 therefrom.
[0088] Demura configurator determines pixel data characteristics 316 from input pixel data 206 in accordance with one or more techniques. In one implementation, spatial order analyzer 304 is configured to determine at least some of pixel data characteristics 316 based on analyzing a spatial frequency of input pixel data 206. In another implementation, luminance histogram analyzer 306 is configured to determine at least some of pixel data characteristics 316 based on analyzing luminance information of input pixel data 206. In accordance with techniques, pixel data 302 determines pixel data characteristics 316 based on the content (e.g., pixel or color values) of the pixels that are transmitted by display controller 112 for rendering by LED display module 114 (e.g., on LED array 126) .
[0089] In step 404, contextual data corresponding to a generation of the input pixel data is analyzed. For instance, with reference to FIG. 1-3, contextual data analyzer 308 is configured to retrieve contextual data 208 corresponding to a generation of input pixel data 206. In examples, contextual data 208 is generated concurrently with input pixel data 206 and / or generated based on other information obtained or generated concurrently with input pixel data 206 (e.g., based on sensor data, power consumption data, time data, etc. ) . In this manner, contextual data analyzer 308 analyzes data that provides a contextual relation to input pixel data 206. In embodiments, while input pixel data 206 relates to the content of pixels to be rendered (e.g., pixel or color values of one or more individual pixels) , contextual data 208 comprises information that is not composed of the content of input pixel data 206.
[0090] In examples, contextual data analyzer 308 is configured to analyze one or more of environmental data 330, user attention information 332, usage mode data 334, time data 336, and / or power data 338. Based on such contextual data, contextual data 308 generates contextual data characteristics 318 that comprises information relating to a context during which input pixel data 206 was generated.
[0091] In step 406, a demura mode is determined for the input pixel data based on the pixel data characteristics and the contextual data. For instance, with reference to FIGS. 1-3, demura mode determiner 310 determines a demura mode for operating demura controller 212 based on pixel data characteristics 316 and contextual data analyzed by contextual data analyzer 308.
[0092] In implementations, the demura mode comprises a selection of one or more signals that are sent to demura controller 210 that configure the operation of demura controller 210. In one implementation, the demura mode comprises a bypass or enable signal 320 that is transmitted by demura disabler 312 to bypass or enable a demura process by demura controller 210. In another implementation, the demura mode comprises a generation of a correction frequency 322 by correction strength adjuster 314 that adjusts the correction frequency of demura controller 210 (e.g., by performing a reduced amount of pixel compensation) .
[0093] Various algorithms and / or logic are utilized by demura mode determiner 310 to determine the demura mode for controlling demura controller 210. In one illustration, demura disabler 312 determines whether to enable or bypass (e.g., power gate the demura processing) demura processing according to any one or more factors, such as when a user is not attentive with respect to the computing device or display, the display usage type indicates that the usage comprises a high spatial frequency, such as video playback or gaming, the ambient illuminance is higher than a threshold value where mura is unlikely to be perceived, luminance information (e.g., by the luminance histogram analyzer) indicates that the screen content’s brightness is greater than a threshold beyond which mura is not likely to be perceived, weather and / or time information indicates or predicts a high ambient illuminance, or power meter 118 indicates that the amount of power provided to a component of LED display module 114 (e.g., the LED array) is high or above a threshold, indicating that the LED display brightness is high enough that mura is not likely to be perceived.
[0094] In another illustration, correction strength adjuster 314 dynamically determines whether to adjust the correction frequency (and / or determine which correction frequency to utilize) according to any one or more factors, such as when spatial order analyzer 304 detects that short to mid spatial frequency is high in input pixel data 206, a usage mode is computational UI, ambient illuminance is less than a threshold under which mura is likely to be visible, luminance histogram analyzer 306 detects the screen content’s brightness is below a threshold, weather and / or time information indicates or predicts a relatively moderate ambient illuminance where mura is likely to be visible, or power meter 118 indicates that the amount of power provided to a component of the LED display module is not above a threshold. In these examples, mura is inferred to still be visible, but decreased processing can also be utilized to compensate for mura. In this manner, a balancing between improved image quality and reduced power consumption is achieved.
[0095] These foregoing examples are only illustrative, and any combination of the foregoing, or combination of any other factors or information described herein (e.g., pixel data and / or contextual data) are utilized by demura disabler 312 in determining whether to enable or bypass demura processing or by correction strength adjuster 314 to adjust the correction frequency of demura controller 210.
[0096] In step 408, elements of a pixel array of a LED display are energized based on the demura mode and the input pixel data. For instance, with reference to FIGS. 1-3, demura correction system 122 provides output pixel data 214 to source driver IC 216 to drive one or more circuits to energize one or more pixel elements of LED array 126. In examples, the output pixel data 214 corresponds to a portion of LED array that is energized (e.g., a line or row of pixels) . In another example, output pixel data 214 is provided as a stream of data (e.g., continuously) , where each set of output pixel data comprises a next set of pixel elements (e.g., a next line or row) that follows the previous set of output pixel data.
[0097] In example embodiments, demura controller 210 operates according to the demura mode determined by demura mode determiner 310. For instance, in implementation, demura controller receives a bypass (or enable) signal 320 that indicates that demura controller 210 should bypass (or enable) a demura compensation process on the input pixel data. In such an example where demura controller 210 bypasses the compensation process for input pixel data 206, demura controller 210 causes output pixel data 214 to comprise input pixel data 206 (e.g., not compensated to correct for mura on the display) , resulting in a reduction in processing by demura controller 210 and a conservation of power. In an example where demura controller 210 receives an enable signal, demura controller 210 compensates input pixel data 206 (or a portion thereof) to compensate for mura in LED array 126, such as by accessing stored measurement values and adjusting pixel values based on those stored values. In such a situation, demura controller 210 therefore is enabled to correct unevenness on the screen, thereby improving the quality of the display and content rendered thereon.
[0098] In other examples, demura controller 210 is configured to perform a demura correction based on a correction frequency as determined by demura mode determiner 310. For instance, demura mode determiner 310 determines, in some scenarios, that demura correction should occur but at a reduced rate (e.g., where mura visibility is inferred to be visible to a user, but in a reduced manner based on various factors, such as ambient light) . In such instances, correction strength adjuster 314 determines a suitable correction frequency that allows demura controller 210 to perform a demura correction, but only on a subset of the pixels in input pixel data 206 (e.g., every other pixel, every fourth pixel, etc. ) . In this manner, not only does demura controller 210 enable an improved screen quality and rendering, but demura controller 210 also enables a reduction in processing cycles and power consumption.
[0099] In accordance with one or more embodiments, demura controller 210 is configured to enable or bypass a compensation for screen mura. For example, FIG. 5 shows a flowchart 500 of a method for selectively enabling or bypassing a function of a demura controller, in accordance with an example embodiment. In an embodiment, flowchart 500 is implemented by system 100 as shown in FIG. 1, system 200 as shown in FIG. 2, and / or system 300 as shown in FIG. 3. Accordingly, flowchart 500 will be described with reference to FIGS. 1, 2, and 3. Other structural and operational embodiments will be apparent to persons skilled in the relevant art (s) based on the following discussion regarding flowchart 500, system 100 of FIG. 1, system 200 of FIG. 2, and system 300 of FIG. 3.
[0100] Flowchart 500 begins with step 502. In step 502, a demura controller operation that alters the input pixel data prior to energizing the elements of the pixel array is selectively enabled or bypassed. For instance, with reference to FIG. 3, demura disabler 312 generates a enable or bypass signal 320 to demura controller 210 that causes demura controller 210 to selectively enable or bypass an operation (e.g., a demura compensation process) of demura controller 210. In implementations, the selective enabling or bypassing is based on various factors, such as pixel data characteristics 316 and / or contextual data characteristics 318. In examples, the enable or bypass signal is provided prior to energizing elements of the pixel array corresponding to the input pixel data. In some examples, enabling or bypassing demura controller 210 comprises power gating demura controller 210 (e.g., enabling or suppressing the power from being transmitted thereto) , such that demura controller 210 does not operate to perform demura processing on pixel data.
[0101] In one illustration, demura disabler 312 provides a bypass signal to demura controller 210 in a scenario where an inference is made (e.g., by pixel data analyzer 302, contextual data analyzer 308, and / or demura mode determiner 310) regarding a likelihood of a screen unevenness being visible (e.g., where the likelihood of perceiving a screen mura is low) . In such an example, demura controller 210 bypasses a demura correction process for input pixel data 206, thereby conserving processing and power consumption.
[0102] In another illustration, demura disabler 312 provides an enable signal to demura controller 210 in a scenario where an inference is made regarding a higher likelihood of perceiving a screen mura. In such an example, demura controller 210 enables a demura correction process for input pixel data 206, allowing for improved image quality that is rendered on LED array 126.
[0103] As disclosed herein, demura mode determiner 310 continuously and / or dynamically determines an appropriate operating mode (e.g., since pixel data and contextual data is continuously changing over time) , allowing for the operating mode to be dynamically determined in a continuous fashion.
[0104] Demura controller 210 operates in various ways to compensate for an unevenness on a display. For instance, demura controller 210 operates according to FIG. 6 in an embodiment. FIG. 6 shows a flowchart 600 of a method for energizing a pixel array based on compensation factoring information, in accordance with an example embodiment. Flowchart 600 and demura controller 210 are described as follows with respect to FIG. 7. FIG. 7 shows a block diagram of a system 700 for generating output pixel data based on mura measurement data, in accordance with an example embodiment. As shown in FIG. 7, system 700 comprises example implementations of input pixel data 206, demura controller 210, and output pixel data 214. Demura controller 210 comprises mura measurement data 702, a demura factor calculator 704, and a multiplexer 708.
[0105] Flowchart 600 begins with step 602. In step 602, mura measurement data stored in the display is accessed. For instance, with reference to FIG. 7, demura factor calculator 704 is configured to access mura measurement data 702. In examples, the accessed mura measurement data relates to one or more of the pixels in the set of input pixel data 206. For instance, where input pixel data 206 comprises pixel values for a given line or row of pixels, demura factor calculator 704 is configured to obtain mura measurement data 702 corresponding to the same line or row of pixels. In some implementations, demura factor calculator is configured to obtain a subset of such measurement data based on correction frequency 322, such as by obtaining measurement data for every other, every fourth, etc. pixel.
[0106] In examples, mura measurement data 702 comprises values stored in a non-volatile memory of LED display module 114, such as a flash memory. In various embodiments, the stored values are based on optical measurement of the LED display (e.g., LED array 126) when the array is energized (e.g., with a calibration screen or the like) . The stored values are indicative of an unevenness of the LED display in various implementations. In one example, a measurement (e.g., based on a camera or other optical characteristic measuring apparatus) is performed for each pixel of LED array 126 and a corresponding value is stored for each such pixel. In another example, a measurement is performed for a subset of pixels (such as areas or blocks of pixels) , and mura measurement values are calculated or otherwise derived based on the measurements (e.g., based on interpolation such as linear interpolation) and stored for each pixel or area that was not measured. In other examples, only a subset of mura measurement values are stored.
[0107] In embodiments, each display device comprises a different set of mura measurement data values, as the manufacturing can differ from one display to another. In one embodiment, the measurement is performed at a factory or manufacturing facility, or another location prior to shipment of the LED display module to another entity (e.g., to a retailer, end user, consumer, etc. ) .
[0108] In step 604, compensation factoring information is determined for the input pixel data based on the pixel measurement data. For instance, with reference to FIG. 7, demura factor calculator 704 calculates compensation factoring information 706 for input pixel data 206. In examples, the compensation factoring information comprises compensation factors for any one or more (or all) of the pixels of input pixel data 206. For instance, in some examples, compensation factors are obtained on a pixel by pixel basis. In some other examples, compensation factors are obtained for a subset of pixels.
[0109] In an example, the compensation factor comprises one or more values that is used to compensate or adjust one or more values of input pixel data to correct an unevenness of LED array 126. In some examples, the compensation factor is used to scale up and / or scale down one or more values for one or more pixels, such as by adjusting RGB values for a pixel, or otherwise altering the content of input pixel data 206 to cancel out or compensate for the unevenness of the display based on the display’s manufacturing. In some implementations, the compensation factors are stored in a flash memory of LED display module 114.
[0110] In step 606, output pixel data is generated based on the compensation factoring information. For instance, with continued reference to FIG. 7, multiplexer 708 generates output pixel data 214 based on combining (e.g., multiplying) one or more values of the input pixel data 206 with a corresponding compensation factor of compensation factoring information 706. In this manner, output pixel data 214 is generated to alter the input pixel data to compensate for a given screen’s (or a portion of the screen’s ) unevenness, thereby resulting in an improved image quality rendered on the screen. In various examples, such output pixel data, when energized on the LED array 126, results in balancing of one or more pixels to compensate for the screen’s inherent mura.
[0111] In various embodiments, output pixel data 214 is generated in accordance with disclosed techniques as a stream of data (e.g., continuously or in real time) . For instance, input pixel data is continuously obtained and compensation factors are continuously determined such that pixels energized on the display are continuously compensating the screen’s mura even as the content rendered thereon changes.
[0112] In accordance with one or more embodiments, demura controller 210 is configured to perform a demura compensation at a specified rate, such as a reduced rate. For example, FIG. 8 shows a flowchart 800 of a method for adjusting a correction frequency of demura controller 210, in accordance with an example embodiment. In an embodiment, flowchart 800 is implemented by system 300 as shown in FIG. 3 and / or system 700 as shown in FIG. 7. Accordingly, flowchart 800 will be described with reference to FIGS. 3 and 7. Other structural and operational embodiments will be apparent to persons skilled in the relevant art(s) based on the following discussion regarding flowchart 800, system 300 of FIG. 3, and system 700 of FIG. 7.
[0113] Flowchart 800 begins with step 802. In step 802, a correction frequency of a demura controller that alters the input pixel data is adjusted prior to energizing the elements of the pixel array. For instance, with reference to FIGS. 3 and 7, correction strength adjuster 314 is configured to determine correction frequency 322 that comprises an adjustment of a frequency at which demura controller 210 operates to compensate input pixel data 206 for unevenness. Based on the correction frequency, demura controller 210 generates output pixel data 214 according to the specified correction frequency, prior to energizing elements of LED array according to the output pixel data. In some implementations, the correction frequency comprises a strength adjustment of demura controller 210, where the strength or amount of demura correction is adjusted. In various examples, the frequency adjusting is referred to as frequency gating or clock scaling of one or more functions of demura controller 210.
[0114] For instance, correction frequency 322 indicates a rate at which one or more functions of demura controller 210 should operate to correct or compensate input pixel data 206. In some implementations, the correction frequency is a value that indicates, to demura controller 210, that demura correction should occur for a subset of the pixels in input pixel data 206 (e.g., processing is not performed on every pixel) . Stated differently, demura processing is performed for one subset of pixels of input pixel data 206, while the processing is bypassed for another subset of pixels of input pixel data 206. For the bypassed pixels, the values are stored in output pixel data 214 without performing any demura processing (e.g., compensation for unevenness) . In this manner, demura controller 210 reduces the processing performed on input pixel data 206, resulting in reduced power consumption and increased battery life for the computing device.
[0115] For example, correction frequency 322 indicates that demura factor calculator 706 should only obtain (e.g., fetch) mura measurement data 702 and / or calculate a compensation factor at the specified rate. For instance, if correction frequency 322 indicates that the correction frequency should be half of a default correction (e.g., where processing is performed for all pixel values in input pixel data 206) , demura factor calculator 704 obtains measurement data and / or calculates the compensation factor for only half of the pixels in input pixel data, thereby reducing the fetch rate and compensation rate. In contrast, at a default correction frequency, demura controller 210 is configured to fetch measurement data and / or calculate a compensation factor for each pixel of input pixel data 206 to generate output pixel data 214 (where each pixel of the output pixel data is generated following demura processing for that pixel) . In accordance with disclosed techniques, however, demura controller 210 is configured to operate in some examples according to a determined correction frequency (e.g., where mura is determined to be less likely to be visible but compensation of a subset of pixels would nevertheless improve the image quality) . In this manner, based on the various factors described herein, correction strength adjuster 314 dynamically determines an appropriate correction frequency such that mura that is inferred to be visible is still compensated for, while reducing processing and improving battery life. As a result, both improved image processing and reduced battery life are achieved in examples.
[0116] It should be understood that while examples are described herein in which demura factor calculator 704 performs the scaling down (or scaling up) based on the calculation frequency, any other component (such as mura measurement data 702 and / or multiplexer 708, or any other component of computing device 102) can receive compensation factor 322 and adjusts the rate of demura processing accordingly. In addition, a compensation frequency of half is only illustrative. In various implementations, the correction frequency includes any rate as determined by correction strength adjuster 314 based on input pixel data 206 and / or contextual data 208, such as a correction frequency of one third, one fourth, etc. of a default frequency.
[0117] Consider an illustration where the correction frequency has a factor of 2. In such an illustration, instead of fetching mura measurement data and calculating the compensation factor for every pixel, the demura controller 210 fetches measurement data and calculates the compensation factor for every other pixel. In other words, demura controller 210 utilizes the correction frequency to throttle up or down the mura measurement fetch rate and calculation rate. It should also be noted that while examples are described herein in which the processing is adjusted for individual pixels (e.g., every other pixel where the factor is 2) , techniques described herein also contemplate other methods of throttling up or down the demura processing, such as by throttling based on lines of pixels. For instance, where the factor is 2, demura controller 210 is configured to fetch mura measurement data and calculate compensation factors for every other line of pixels (or every third line where the factor is 3, every fourth line where the factor is 4, and so on) .
[0118] In accordance with one or more embodiments, input pixel data is analyzed in various ways to generate pixel data characteristics. For example, FIG. 9 shows a flowchart 900 of a method for analyzing spatial information of input pixel data, in accordance with an example embodiment. In an embodiment, flowchart 900 is implemented by system 300 as shown in FIG. 3. Accordingly, flowchart 900 will be described with reference to FIG. 3. Other structural and operational embodiments will be apparent to persons skilled in the relevant art (s) based on the following discussion regarding flowchart 900 and system 300 of FIG. 3.
[0119] Flowchart 900 begins with step 902. In step 902, a spatial order of the input pixel data is analyzed. For instance, with reference to FIG. 3, spatial order analyzer 304 is configured to analyze a spatial order (e.g., spatial frequency) of pixels in input pixel data 206 to generate pixel data characteristics therefrom.
[0120] In one implementation, spatial order analyzer 304 analyzes a certain range or order of spatial frequencies in input pixel data 206. For instance, spatial order analyzer 304 is configured to analyze short to mid order pixel spatial frequency. Pixel data characteristics generated therefrom indicate, for example, an amount of pixel variance between the input pixel data (e.g., whether many different colors are present, whether the input pixel data is uniform in color, etc. ) . Where the spatial frequency is higher, mura is inferred to not be visible (or not as visible) to a user. In examples, where the spatial frequency is determined to be high (e.g., exceeds a threshold) , a certain type of demura action is performed, such as bypassing demura controller 210 from performing a demura operation, reducing the correction frequency, etc. In this manner, improvements are achieved with respect to reduced processing and power consumption, while maintaining image quality of the display.
[0121] In accordance with one or more embodiments, input pixel data is analyzed in various other ways to generate pixel data characteristics. For example, FIG. 10 shows a flowchart 1000 of a method for analyzing luminance information of input pixel data, in accordance with an example embodiment. In an embodiment, flowchart 1000 is implemented by system 300 as shown in FIG. 3. Accordingly, flowchart 1000 will be described with reference to FIG. 3. Other structural and operational embodiments will be apparent to persons skilled in the relevant art (s) based on the following discussion regarding flowchart 1000 and system 300 of FIG. 3.
[0122] Flowchart 1000 begins with step 1002. In step 1002, a luminance histogram of the input pixel data is analyzed. For instance, with reference to FIG. 3, luminance histogram analyzer 306 is configured to analyze a luminance histogram (e.g., luminance information) of pixels in input pixel data 206 to generate pixel data characteristics therefrom.
[0123] In some implementations, luminance histogram analyzer 306 analyzes input pixel data 206 that comprises a subset of pixels (e.g., a row or line of pixels) of an entire frame that is to be displayed. In other implementations, luminance histogram analyzer 306 generates a luminance histogram for a plurality of subsets of pixels (e.g., multiple successive iterations of input pixel data 206, where each successive iteration is an additional row or line) . In such a scenario, luminance histogram analyzer 306 is configured to analyze a larger volume of pixel data, such as an entire frame that is to be rendered on the LED display.
[0124] In implementations, luminance histogram information indicates, for instance, the presence of one or more tones (e.g., color tones) that are associated with a greater or lesser visibility of mura. For instance, human eyes are more susceptible to gray color tones than certain other color tones (such as white) . Based on analyzing the luminance information of the input pixel data, luminance histogram analyzer 306 determines a higher or lower likelihood of mura being visible on a display. Based on such a determination, demura mode determiner 310 performs any one or more actions, similar to those described above, to enable, disable, and / or frequency gate the operation of demura controller 210 in a manner that balances (e.g., improves) the image quality, processing efficiencies, and battery consumption. III. Example Mobile Device and Computer System Implementation
[0125] Computing device 102, user sensor 104, ambient sensor 106, operating system 108, system power manager 110, display controller 112, LED display module 114, power meter 116, power management IC 118, TCON 120, demura correction system 122, column / row drivers 124, LED array 126, UI subsystem 202, display subsystem 204, input pixel data 206, contextual data 208, demura controller 212, demura configurator 212, output pixel data 214, source driver IC 216, pixel data analyzer 302, spatial order analyzer 304, luminance histogram analyzer 306, contextual data analyzer 308, demura mode determiner 310, demura disabler 312, correction strength adjuster 314, environmental data 330, user attention information 332, usage mode data 334, time data 336, power data 334, mura measurement data 702, demura factor calculator 706, and / or multiplexer 708 are implemented in hardware, or hardware combined with one or both of software and / or firmware. For example, user sensor 104, ambient sensor 106, operating system 108, system power manager 110, display controller 112, LED display module 114, power meter 116, power management IC 118, TCON 120, demura correction system 122, column / row drivers 124, UI subsystem 202, display subsystem 204, demura controller 212, demura configurator 212, source driver IC 216, pixel data analyzer 302, spatial order analyzer 304, luminance histogram analyzer 306, contextual data analyzer 308, demura mode determiner 310, demura disabler 312, correction strength adjuster 314, demura factor calculator 706, and / or multiplexer 708, and / or the components described therein, and / or the steps of flowcharts 400, 500, 600, 800, 900, and / or 1000 are each implemented as computer program code / instructions configured to be executed in one or more processors and stored in a computer readable storage medium. Alternatively, user sensor 104, ambient sensor 106, operating system 108, system power manager 110, display controller 112, LED display module 114, power meter 116, power management IC 118, TCON 120, demura correction system 122, column / row drivers 124, UI subsystem 202, display subsystem 204, demura controller 212, demura configurator 212, source driver IC 216, pixel data analyzer 302, spatial order analyzer 304, luminance histogram analyzer 306, contextual data analyzer 308, demura mode determiner 310, demura disabler 312, correction strength adjuster 314, demura factor calculator 706, and / or multiplexer 708, and / or the components described therein, and / or the steps of flowcharts 400, 500, 600, 800, 900, and / or 1000 are implemented in one or more SoCs (system on chip) . An SoC includes an integrated circuit chip that includes one or more of a processor (e.g., a central processing unit (CPU) , microcontroller, microprocessor, digital signal processor (DSP) , etc. ) , memory, one or more communication interfaces, and / or further circuits, and optionally executes received program code and / or include embedded firmware to perform functions.
[0126] Embodiments disclosed herein can be implemented in one or more computing devices that are mobile (amobile device) and / or stationary (astationary device) and include any combination of the features of such mobile and stationary computing devices. Examples of computing devices in which embodiments are implementable are described as follows with respect to FIG. 11. FIG. 11 shows a block diagram of an exemplary computing environment 1100 that includes a computing device 1102. Computing device 1102 is an example of computing device 102, which each include one or more of the components of computing device 1102. In some embodiments, computing device 1102 is communicatively coupled with devices (not shown in FIG. 11) external to computing environment 1100 via network 1104. Network 1104 comprises one or more networks such as local area networks (LANs) , wide area networks (WANs) , enterprise networks, the Internet, etc. In examples, network 1104 includes one or more wired and / or wireless portions. In some examples, network 1104 additionally or alternatively includes a cellular network for cellular communications. Computing device 1102 is described in detail as follows.
[0127] Computing device 1102 can be any of a variety of types of computing devices. Examples of computing device 1102 include a mobile computing device such as a handheld computer (e.g., a personal digital assistant (PDA) ) , a laptop computer, a tablet computer, a hybrid device, a notebook computer, a netbook, a mobile phone (e.g., a cell phone, a smart phone, etc. ) , a wearable computing device (e.g., a head-mounted augmented reality and / or virtual reality device including smart glasses) , or other type of mobile computing device. In an alternative example, computing device 1102 is a stationary computing device such as a desktop computer, a personal computer (PC) , a stationary server device, a minicomputer, a mainframe, a supercomputer, etc.
[0128] As shown in FIG. 11, computing device 1102 includes a variety of hardware and software components, including a processor 1110, a storage 1120, a graphics processing unit (GPU) 1142, a neural processing unit (NPU) 1144, one or more input devices 1130, one or more output devices 1150, one or more wireless modems 1160, one or more wired interfaces 1180, a power supply 1182, a location information (LI) receiver 1184, and an accelerometer 1186. Storage 1120 includes memory 1156, which includes non-removable memory 1122 and removable memory 1124, and a storage device 1188. Storage 1120 also stores an operating system 1112, application programs 1114, and application data 1116. Wireless modem (s) 1160 include a Wi-Fi modem 1162, a Bluetooth modem 1164, and a cellular modem 1166. Output device (s) 1150 includes a speaker 1152 and a display 1154. Input device (s) 1130 includes a touch screen 1132, a microphone 1134, a camera 1136, a physical keyboard 1138, and a trackball 1140. Not all components of computing device 1102 shown in FIG. 11 are present in all embodiments, additional components not shown may be present, and in a particular embodiment any combination of the components are present. In examples, components of computing device 1102 are mounted to a circuit card (e.g., a motherboard) of computing device 1102, integrated in a housing of computing device 1102, or otherwise included in computing device 1102. The components of computing device 1102 are described as follows.
[0129] In embodiments, a single processor 1110 (e.g., central processing unit (CPU) , microcontroller, a microprocessor, signal processor, ASIC (application specific integrated circuit) , and / or other physical hardware processor circuit) or multiple processors 1110 are present in computing device 1102 for performing such tasks as program execution, signal coding, data processing, input / output processing, power control, and / or other functions. In examples, processor 1110 is a single-core or multi-core processor, and each processor core is single-threaded or multithreaded (to provide multiple threads of execution concurrently) . Processor 1110 is configured to execute program code stored in a computer readable medium, such as program code of operating system 1112 and application programs 1114 stored in storage 1120. The program code is structured to cause processor 1110 to perform operations, including the processes / methods disclosed herein. Operating system 1112 controls the allocation and usage of the components of computing device 1102 and provides support for one or more application programs 1114 (also referred to as “applications” or “apps” ) . In examples, application programs 1114 include common computing applications (e.g., e-mail applications, calendars, contact managers, web browsers, messaging applications) , further computing applications (e.g., word processing applications, mapping applications, media player applications, productivity suite applications) , one or more machine learning (ML) models, as well as applications related to the embodiments disclosed elsewhere herein. In examples, processor (s) 1110 includes one or more general processors (e.g., CPUs) configured with or coupled to one or more hardware accelerators, such as one or more NPUs 1144 and / or one or more GPUs 1142.
[0130] Any component in computing device 1102 can communicate with any other component according to function, although not all connections are shown for ease of illustration. For instance, as shown in FIG. 11, bus 1106 is a multiple signal line communication medium (e.g., conductive traces in silicon, metal traces along a motherboard, wires, etc. ) present to communicatively couple processor 1110 to various other components of computing device 1102, although in other embodiments, an alternative bus, further buses, and / or one or more individual signal lines is / are present to communicatively couple components. Bus 1106 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures.
[0131] Storage 1120 is physical storage that includes one or both of memory 1156 and storage device 1188, which store operating system 1112, application programs 1114, and application data 1116 according to any distribution. Non-removable memory 1122 includes one or more of RAM (random access memory) , ROM (read only memory) , flash memory, a solid-state drive (SSD) , a hard disk drive (e.g., a disk drive for reading from and writing to a hard disk) , and / or other physical memory device type. In examples, non-removable memory 1122 includes main memory and is separate from or fabricated in a same integrated circuit as processor 1110. As shown in FIG. 11, non-removable memory 1122 stores firmware 1118 that is present to provide low-level control of hardware. Examples of firmware 1118 include BIOS (Basic Input / Output System, such as on personal computers) and boot firmware (e.g., on smart phones) . In examples, removable memory 1124 is inserted into a receptacle of or is otherwise coupled to computing device 1102 and can be removed by a user from computing device 1102. Removable memory 1124 can include any suitable removable memory device type, including an SD (Secure Digital) card, a Subscriber Identity Module (SIM) card, which is well known in GSM (Global System for Mobile Communications) communication systems, and / or other removable physical memory device type. In examples, one or more of storage device 1188 are present that are internal and / or external to a housing of computing device 1102 and are or are not removable. Examples of storage device 1188 include a hard disk drive, a SSD, a thumb drive (e.g., a USB (Universal Serial Bus) flash drive) , or other physical storage device.
[0132] One or more programs are stored in storage 1120. Such programs include operating system 1112, one or more application programs 1114, and other program modules and program data. Examples of such application programs include computer program logic (e.g., computer program code / instructions) for implementing user sensor 104, ambient sensor 106, operating system 108, system power manager 110, display controller 112, LED display module 114, power meter 116, power management IC 118, TCON 120, demura correction system 122, column / row drivers 124, UI subsystem 202, display subsystem 204, demura controller 212, demura configurator 212, source driver IC 216, pixel data analyzer 302, spatial order analyzer 304, luminance histogram analyzer 306, contextual data analyzer 308, demura mode determiner 310, demura disabler 312, correction strength adjuster 314, demura factor calculator 706, and / or multiplexer 708, and / or each of the components described therein, as well as any of flowcharts 400, 500, 600, 800, 900, and / or 1000, and / or any individual steps thereof.
[0133] Storage 1120 also stores data used and / or generated by operating system 1112 and application programs 1114 as application data 1116. Examples of application data 1116 include web pages, text, images, tables, sound files, video data, and other data. In examples, application data 1116 is sent to and / or received from one or more network servers or other devices via one or more wired or wireless networks. Storage 1120 can be used to store further data including a subscriber identifier, such as an International Mobile Subscriber Identity (IMSI) , and an equipment identifier, such as an International Mobile Equipment Identifier (IMEI) . Such identifiers can be transmitted to a network server to identify users and equipment.
[0134] In examples, a user enters commands and information into computing device 1102 through one or more input devices 1130 and receives information from computing device 1102 through one or more output devices 1150. Input device (s) 1130 includes one or more of touch screen 1132, microphone 1134, camera 1136, physical keyboard 1138 and / or trackball 1140 and output device (s) 1150 includes one or more of speaker 1152 and display 1154. Each of input device (s) 1130 and output device (s) 1150 are integral to computing device 1102 (e.g., built into a housing of computing device 1102) or are external to computing device 1102 (e.g., communicatively coupled wired or wirelessly to computing device 1102 via wired interface (s) 1180 and / or wireless modem (s) 1160) . Further input devices 1130 (not shown) can include a Natural User Interface (NUI) , a pointing device (computer mouse) , a joystick, a video game controller, a scanner, a touch pad, a stylus pen, a voice recognition system to receive voice input, a gesture recognition system to receive gesture input, or the like. Other possible output devices (not shown) can include piezoelectric or other haptic output devices. Some devices can serve more than one input / output function. For instance, display 1154 displays information, as well as operating as touch screen 1132 by receiving user commands and / or other information (e.g., by touch, finger gestures, virtual keyboard, etc. ) as a user interface. Any number of each type of input device (s) 1130 and output device (s) 1150 are present, including multiple microphones 1134, multiple cameras 1136, multiple speakers 1152, and / or multiple displays 1154.
[0135] In embodiments where GPU 1142 is present, GPU 1142 includes hardware (e.g., one or more integrated circuit chips that implement one or more of processing cores, multiprocessors, compute units, etc. ) configured to accelerate computer graphics (two-dimensional (2D) and / or three-dimensional (3D) ) , perform image processing, and / or execute further parallel processing applications (e.g., training of neural networks, etc. ) . Examples of GPU 1142 perform calculations related to 3D computer graphics, include 2D acceleration and framebuffer capabilities, accelerate memory-intensive work of texture mapping and rendering polygons, accelerate geometric calculations such as the rotation and translation of vertices into different coordinate systems, support programmable shaders that manipulate vertices and textures, perform oversampling and interpolation techniques to reduce aliasing, and / or support very high-precision color spaces.
[0136] In examples, NPU 1144 (also referred to as an “artificial intelligence (AI) accelerator” or “deep learning processor (DLP) ” ) is a processor or processing unit configured to accelerate artificial intelligence and machine learning applications, such as execution of machine learning (ML) model (MLM) 1128. In an example, NPU 1144 is configured for a data-driven parallel computing and is highly efficient at processing massive multimedia data such as videos and images and processing data for neural networks. NPU 1144 is configured for efficient handling of AI-related tasks, such as speech recognition, background blurring in video calls, photo or video editing processes like object detection, etc.
[0137] In embodiments disclosed herein that implement ML models, NPU 1144 can be utilized to execute such ML models, of which MLM 1128 is an example. For instance, where applicable, MLM 1128 is a generative AI model that generates content that is complex, coherent, and / or original. For instance, a generative AI model can create sophisticated sentences, lists, ranges, tables of data, images, essays, and / or the like. An example of a generative AI model is a language model. A language model is a model that estimates the probability of a token or sequence of tokens occurring in a longer sequence of tokens. In this context, a “token” is an atomic unit that the model is training on and making predictions on. Examples of a token include, but are not limited to, a word, a character (e.g., an alphanumeric character, a blank space, a symbol, etc. ) , a sub-word (e.g., a root word, a prefix, or a suffix) . In other types of models (e.g., image based models) a token may represent another kind of atomic unit (e.g., a subset of an image) . Examples of language models applicable to embodiments herein include large language models (LLMs) , text-to-image AI image generation systems, text-to-video AI generation systems, etc. A large language model (LLM) is a language model that has a high number of model parameters. In examples, an LLM has millions, billions, trillions, or even greater numbers of model parameters. Model parameters of an LLM are the weights and biases the model learns during training. Some implementations of LLMs are transformer-based LLMs (e.g., the family of generative pre-trained transformer (GPT) models) . A transformer is a neural network architecture that relies on self-attention mechanisms to transform a sequence of input embeddings into a sequence of output embeddings (e.g., without relying on convolutions or recurrent neural networks) .
[0138] In further examples, NPU 1144 is used to train MLM 1128. To train MLM 1128, training data is that includes input features (attributes) and their corresponding output labels / target values (e.g., for supervised learning) is collected. A training algorithm is a computational procedure that is used so that MLM 1128 learns from the training data. Parameters / weights are internal settings of MLM 1128 that are adjusted during training by the training algorithm to reduce a difference between predictions by MLM 1128 and actual outcomes (e.g., output labels) . In some examples, MLM 1128 is set with initial values for the parameters / weights. A loss function measures a dissimilarity between predictions by MLM 1128 and the target values, and the parameters / weights of MLM 1128 are adjusted to minimize the loss function. The parameters / weights are iteratively adjusted by an optimization technique, such as gradient descent. In this manner, MLM 1128 is generated through training by NPU 1144 to be used to generate inferences based on received input feature sets for particular applications. MLM 1128 is generated as a computer program or other type of algorithm configured to generate an output (e.g., a classification, a prediction / inference) based on received input features, and is stored in the form of a file or other data structure.
[0139] In examples, such training of MLM 1128 by NPU 1144 is supervised or unsupervised. According to supervised learning, input objects (e.g., a vector of predictor variables) and a desired output value (e.g., a human-labeled supervisory signal) train MLM 1128. The training data is processed, building a function that maps new data on expected output values. Example algorithms usable by NPU 1144 to perform supervised training of MLM 1128 in particular implementations include support-vector machines, linear regression, logistic regression, Bayes, linear discriminant analysis, decision trees, K-nearest neighbor algorithm, neural networks, and similarity learning.
[0140] In an example of supervised learning where MLM 1128 is an LLM, MLM 1128 can be trained by exposing the LLM to (e.g., large amounts of) text (e.g., predetermined datasets, books, articles, text-based conversations, webpages, transcriptions, forum entries, and / or any other form of text and / or combinations thereof) . In examples, training data is provided from a database, from the Internet, from a system, and / or the like. Furthermore, an LLM can be fine-tuned using Reinforcement Learning with Human Feedback (RLHF) , where the LLM is provided the same input twice and provides two different outputs and a user ranks which output is preferred. In this context, the user’s ranking is utilized to improve the model. Further still, in example embodiments, an LLM is trained to perform in various styles, e.g., as a completion model (a model that is provided a few words or tokens and generates words or tokens to follow the input) , as a conversation model (a model that provides an answer or other type of response to a conversation-style prompt) , as a combination of a completion and conversation model, or as another type of LLM model.
[0141] According to unsupervised learning, MLM 1128 is trained to learn patterns from unlabeled data. For instance, in embodiments where MLM 1128 implements unsupervised learning techniques, MLM 1128 identifies one or more classifications or clusters to which an input belongs. During a training phase of MLM 1128 according to unsupervised learning, MLM 1128 tries to mimic the provided training data and uses the error in its mimicked output to correct itself (i.e., correct weights and biases) . In further examples, NPU 1144 perform unsupervised training of MLM 1128 according to one or more alternative techniques, such as Hopfield learning rule, Boltzmann learning rule, Contrastive Divergence, Wake Sleep, Variational Inference, Maximum Likelihood, Maximum A Posteriori, Gibbs Sampling, and backpropagating reconstruction errors or hidden state reparameterizations.
[0142] Note that NPU 1144 need not necessarily be present in all ML model embodiments. In embodiments where ML models are present, any one or more of processor 1110, GPU 1142, and / or NPU 1144 can be present to train and / or execute MLM 1128.
[0143] One or more wireless modems 1160 can be coupled to antenna (s) (not shown) of computing device 1102 and can support two-way communications between processor 1110 and devices external to computing device 1102 through network 1104, as would be understood to persons skilled in the relevant art (s) . Wireless modem 1160 is shown generically and can include a cellular modem 1166 for communicating with one or more cellular networks, such as a GSM network for data and voice communications within a single cellular network, between cellular networks, or between the mobile device and a public switched telephone network (PSTN) . In examples, wireless modem 1160 also or alternatively includes other radio-based modem types, such as a Bluetooth modem 1164 (also referred to as a “Bluetooth device” ) and / or Wi-Fi modem 1162 (also referred to as an “wireless adaptor” ) . Wi-Fi modem 1162 is configured to communicate with an access point or other remote Wi-Fi-capable device according to one or more of the wireless network protocols based on the IEEE (Institute of Electrical and Electronics Engineers) 802.11 family of standards, commonly used for local area networking of devices and Internet access. Bluetooth modem 1164 is configured to communicate with another Bluetooth-capable device according to the Bluetooth short-range wireless technology standard (s) such as IEEE 802.15.1 and / or managed by the Bluetooth Special Interest Group (SIG) .
[0144] Computing device 1102 can further include power supply 1182, LI receiver 1184, accelerometer 1186, and / or one or more wired interfaces 1180. Example wired interfaces 1180 include a USB port, IEEE 1394 (FireWire) port, a RS-232 port, an HDMI (High-Definition Multimedia Interface) port (e.g., for connection to an external display) , a DisplayPort port (e.g., for connection to an external display) , an audio port, and / or an Ethernet port, the purposes and functions of each of which are well known to persons skilled in the relevant art (s) . Wired interface (s) 1180 of computing device 1102 provide for wired connections between computing device 1102 and network 1104, or between computing device 1102 and one or more devices / peripherals when such devices / peripherals are external to computing device 1102 (e.g., a pointing device, display 1154, speaker 1152, camera 1136, physical keyboard 1138, etc. ) . Power supply 1182 is configured to supply power to each of the components of computing device 1102 and receives power from a battery internal to computing device 1102, and / or from a power cord plugged into a power port of computing device 1102 (e.g., a USB port, an A / C power port) . LI receiver 1184 is useable for location determination of computing device 1102 and in examples includes a satellite navigation receiver such as a Global Positioning System (GPS) receiver and / or includes other type of location determiner configured to determine location of computing device 1102 based on received information (e.g., using cell tower triangulation, etc. ) . Accelerometer 1186, when present, is configured to determine an orientation of computing device 1102.
[0145] Note that the illustrated components of computing device 1102 are not required or all-inclusive, and fewer or greater numbers of components can be present as would be recognized by one skilled in the art. In examples, computing device 1102 includes one or more of a gyroscope, barometer, proximity sensor, ambient light sensor, digital compass, etc. In an example, processor 1110 and memory 1156 are co-located in a same semiconductor device package, such as being included together in an integrated circuit chip, FPGA, or system-on-chip (SOC) , optionally along with further components of computing device 1102.
[0146] In embodiments, computing device 1102 is configured to implement any of the above-described features of flowcharts herein. Computer program logic for performing any of the operations, steps, and / or functions described herein is stored in storage 1120 and executed by processor 1110.
[0147] In some embodiments, server infrastructure 1170 is present in computing environment 1100 and is communicatively coupled with computing device 1102 via network 1104. Server infrastructure 1170, when present, is a network-accessible server set (e.g., a cloud-based environment or platform) . As shown in FIG. 11, server infrastructure 1170 includes clusters 1172. Each of clusters 1172 comprises a group of one or more compute nodes and / or a group of one or more storage nodes. For example, as shown in FIG. 11, cluster 1172 includes nodes 1174. Each of nodes 1174 are accessible via network 1104 (e.g., in a “cloud-based” embodiment) to build, deploy, and manage applications and services. In examples, any of nodes 1174 is a storage node that comprises a plurality of physical storage disks, SSDs, and / or other physical storage devices that are accessible via network 1104 and are configured to store data associated with the applications and services managed by nodes 1174.
[0148] Each of nodes 1174, as a compute node, comprises one or more server computers, server systems, and / or computing devices. For instance, a node 1174 in accordance with an embodiment includes one or more of the components of computing device 1102 disclosed herein. Each of nodes 1174 is configured to execute one or more software applications (or “applications” ) and / or services and / or manage hardware resources (e.g., processors, memory, etc. ) , which are utilized by users (e.g., customers) of the network-accessible server set. In examples, as shown in FIG. 11, nodes 1174 includes a node 1146 that includes storage 1148 and / or one or more of a processor 1158 (e.g., similar to processor 1110, GPU 1142, and / or NPU 1144 of computing device 1102) . Storage 1148 stores application programs 1176 and application data 1178. Processor (s) 1158 operate application programs 1176 which access and / or generate related application data 1178. In an implementation, nodes such as node 1146 of nodes 1174 operate or comprise one or more virtual machines, with each virtual machine emulating a system architecture (e.g., an operating system) , in an isolated manner, upon which applications such as application programs 1176 are executed.
[0149] In embodiments, one or more of clusters 1172 are located / co-located (e.g., housed in one or more nearby buildings with associated components such as backup power supplies, redundant data communications, environmental controls, etc. ) to form a datacenter, or are arranged in other manners. Accordingly, in an embodiment, one or more of clusters 1172 are included in a datacenter in a distributed collection of datacenters. In embodiments, exemplary computing environment 1100 comprises part of a cloud-based platform.
[0150] In an embodiment, computing device 1102 accesses application programs 1176 for execution in any manner, such as by a client application and / or a browser at computing device 1102.
[0151] In an example, for purposes of network (e.g., cloud) backup and data security, computing device 1102 additionally and / or alternatively synchronizes copies of application programs 1114 and / or application data 1116 to be stored at network-based server infrastructure 1170 as application programs 1176 and / or application data 1178. In examples, operating system 1112 and / or application programs 1114 include a file hosting service client configured to synchronize applications and / or data stored in storage 1120 at network-based server infrastructure 1170.
[0152] In some embodiments, on-premises servers 1192 are present in computing environment 1100 and are communicatively coupled with computing device 1102 via network 1104. On-premises servers 1192, when present, are hosted within an organization’s infrastructure and, in many cases, physically onsite of a facility of that organization. On-premises servers 1192 are controlled, administered, and maintained by IT (Information Technology) personnel of the organization or an IT partner to the organization. Application data 1198 can be shared by on-premises servers 1192 between computing devices of the organization, including computing device 1102 (when part of an organization) through a local network of the organization, and / or through further networks accessible to the organization (including the Internet) . Furthermore, in examples, on-premises servers 1192 serve applications such as application programs 1196 to the computing devices of the organization, including computing device 1102. Accordingly, in examples, on-premises servers 1192 include storage 1194 (which includes one or more physical storage devices such as storage disks and / or SSDs) for storage of application programs 1196 and application data 1198 and include a processor 1190 (e.g., similar to processor 1110, GPU 1142, and / or NPU 1144 of computing device 1102) for execution of application programs 1196. In some embodiments, multiple processors 1190 are present for execution of application programs 1196 and / or for other purposes. In further examples, computing device 1102 is configured to synchronize copies of application programs 1114 and / or application data 1116 for backup storage at on-premises servers 1192 as application programs 1196 and / or application data 1198.
[0153] Embodiments described herein may be implemented in one or more of computing device 1102, network-based server infrastructure 1170, and on-premises servers 1192. For example, in some embodiments, computing device 1102 is used to implement systems, clients, or devices, or components / subcomponents thereof, disclosed elsewhere herein. In other embodiments, a combination of computing device 1102, network-based server infrastructure 1170, and / or on-premises servers 1192 is used to implement the systems, clients, or devices, or components / subcomponents thereof, disclosed elsewhere herein.
[0154] As used herein, the terms “computer program medium, ” “computer-readable medium, ” “computer-readable storage medium, ” and “computer-readable storage device, ” etc., are used to refer to physical hardware media. Examples of such physical hardware media include any hard disk, optical disk, SSD, other physical hardware media such as RAMs, ROMs, flash memory, digital video disks, zip disks, MEMs (microelectronic machine) memory, nanotechnology-based storage devices, and further types of physical / tangible hardware storage media of storage 1120. Such computer-readable media and / or storage media are distinguished from and non-overlapping with communication media, propagating signals, and signals per se. Stated differently, “computer program medium, ” “computer-readable medium, ” “computer-readable storage medium, ” and “computer-readable storage device” do not encompass communication media, propagating signals, and signals per se. Communication media embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wireless media such as acoustic, RF, infrared, and other wireless media, as well as wired media. Embodiments are also directed to such communication media that are separate and non-overlapping with embodiments directed to computer-readable storage media.
[0155] As noted above, computer programs and modules (including application programs 1114) are stored in storage 1120. Such computer programs can also be received via wired interface (s) 1160 and / or wireless modem (s) 1160 over network 1104. Such computer programs, when executed or loaded by an application, enable computing device 1102 to implement features of embodiments discussed herein. Accordingly, such computer programs represent controllers of the computing device 1102.
[0156] Embodiments are also directed to computer program products comprising computer code or instructions stored on any computer-readable medium or computer-readable storage medium. Such computer program products include the physical storage of storage 1120 as well as further physical storage types. IV. Additional Example Embodiments
[0157] A system for adjusting a demura configuration in a display is disclosed herein. The system includes: a processor; and a memory device that stores program code structured to cause the processor to: analyze input pixel data to determine pixel data characteristics, the input pixel data received from a display controller of a computing device; analyze contextual data corresponding to a generation of the input pixel data; determine a demura mode for the input pixel data based on the pixel data characteristics and the contextual data; and energize elements of a pixel array of a light emitting diode (LED) display based on the demura mode and the input pixel data.
[0158] In one implementation of the foregoing system, the program code is structured to cause the processor to determine the demura mode for the input pixel data by selectively enabling or disabling a demura controller operation that alters the input pixel data prior to energizing the elements of the pixel array.
[0159] In another implementation of the foregoing system, the program code is structured to cause the processor to determine the demura mode for the input pixel data by adjusting a correction frequency of the demura controller that alters the input pixel data prior to energizing the elements of the pixel array.
[0160] In another implementation of the foregoing system, the correction frequency causes the demura controller to bypass a demura correction for a subset of pixels in the input pixel data.
[0161] In another implementation of the foregoing system, the program code is structured to cause the processor to: access mura measurement data stored in the display; determine compensation factoring information for the input pixel data based on the pixel measurement data; and generate output pixel data based on the compensation factoring information.
[0162] In another implementation of the foregoing system, the mura measurement data comprises values stored in a non-volatile memory of the display based on optical measurement of the LED display, the values indicative of an unevenness of the LED display.
[0163] In another implementation of the foregoing system, the program code is structured to cause the process to analyze the input pixel data by analyzing a spatial order of the input pixel data.
[0164] In another implementation of the foregoing system, the program code is structured to cause the process to analyze the input pixel data by analyzing a luminance histogram of the input pixel data.
[0165] In another implementation of the foregoing system, the program code is structured to cause the process to analyze contextual data corresponding to the generation of the pixel data by analyzing one or more of: environmental data relating to an environment in which the LED display is located; user attention information indicative of an attention detection of a user of the computing device; usage mode data indicative of a usage of the computing device; time data indicative of a time of the usage of the computing device; or power data indicative of a level of power consumed by one or more hardware components of the LED display.
[0166] In another implementation of the foregoing system, the LED display is an organic LED (OLED) display that comprises an OLED pixel array.
[0167] In another implementation of the foregoing system, the system is embedded into a timing controller circuit of the LED display.
[0168] A method for adjusting a demura configuration in a display is disclosed herein. The method includes: analyzing input pixel data to determine pixel data characteristics, the input pixel data received from a display controller of a computing device; analyzing contextual data corresponding to a generation of the input pixel data; determining a demura mode for the input pixel data based on the pixel data characteristics and the contextual data; and energizing elements of a pixel array of a light emitting diode (LED) display based on the demura mode and the input pixel data.
[0169] In one implementation of the foregoing method, the determining the demura mode for the input pixel data comprises: selectively enabling or disabling a demura controller operation that alters the input pixel data prior to energizing the elements of the pixel array.
[0170] In another implementation of the foregoing method, the determining the demura mode for the input pixel data comprises: adjusting a correction frequency of the demura controller that alters the input pixel data prior to energizing the elements of the pixel array.
[0171] In another implementation of the foregoing method, the method includes accessing mura measurement data stored in the display; determining compensation factoring information for the input pixel data based on the pixel measurement data; and generating output pixel data based on the compensation factoring information.
[0172] In another implementation of the foregoing method, the analyzing the contextual data corresponding to the generation of the pixel data comprises analyzing one or more of: environmental data relating to an environment in which the LED display is located; user attention information indicative of an attention detection of a user of the computing device; usage mode data indicative of a usage of the computing device; time data indicative of a time of the usage of the computing device; or power data indicative of a level of power consumed by one or more hardware components of the LED display.
[0173] A computer-readable storage medium is disclosed herein. The computer-readable storage medium has computer program code recorded thereon that when executed by at least one processor causes the at least one processor to perform a method comprising: analyzing input pixel data to determine pixel data characteristics, the input pixel data received from a display controller of a computing device; analyzing contextual data corresponding to a generation of the input pixel data; determining a demura mode for the input pixel data based on the pixel data characteristics and the contextual data; and energizing elements of a pixel array of a light emitting diode (LED) display based on the demura mode and the input pixel data.
[0174] In one implementation of the foregoing computer-readable storage medium, the determining the demura mode for the input pixel data comprises: selectively enabling or disabling a demura controller operation that alters the input pixel data prior to energizing the elements of the pixel array.
[0175] In another implementation of the foregoing computer-readable storage medium, the determining the demura mode for the input pixel data comprises: adjusting a correction frequency of the demura controller that alters the input pixel data prior to energizing the elements of the pixel array.
[0176] In another implementation of the foregoing computer-readable storage medium, the analyzing the contextual data corresponding to the generation of the pixel data comprises analyzing one or more of: environmental data relating to an environment in which the LED display is located; user attention information indicative of an attention detection of a user of the computing device; usage mode data indicative of a usage of the computing device; time data indicative of a time of the usage of the computing device; or power data indicative of a level of power consumed by one or more hardware components of the LED display. V. Conclusion
[0177] References in the specification to "one embodiment, " "an embodiment, " "an example embodiment, " etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
[0178] In the discussion, unless otherwise stated, adjectives such as “substantially” and “about” modifying a condition or relationship characteristic of a feature or features of an embodiment of the disclosure, are understood to mean that the condition or characteristic is defined to within tolerances that are acceptable for operation of the embodiment for an application for which it is intended. Furthermore, where “based on” and / or “in response to” are used to indicate an effect being a result of an indicated cause, it is to be understood that the effect is not required to only result from the indicated cause, but that any number of possible additional causes may also contribute to the effect. Thus, as used herein, the terms “based on” and “in response to” should be understood to be equivalent to the term “based at least on” and “at least in response to, ” respectively.
[0179] While various embodiments of the present disclosure have been described above, it should be understood that they have been presented by way of example only, and not limitation. It will be understood by those skilled in the relevant art (s) that various changes in form and details may be made therein without departing from the spirit and scope of the embodiments as defined in the appended claims. Accordingly, the breadth and scope of the claimed embodiments should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
Claims
1.A system for adjusting a demura configuration in a display, the system comprising:a processor; anda memory device that stores program code structured to cause the processor to:analyze input pixel data to determine pixel data characteristics, the input pixel data received from a display controller of a computing device;analyze contextual data corresponding to a generation of the input pixel data;determine a demura mode for the input pixel data based on the pixel data characteristics and the contextual data; andenergize elements of a pixel array of a light emitting diode (LED) display based on the demura mode and the input pixel data.2.The system of claim 1, wherein the program code is structured to cause the processor to determine the demura mode for the input pixel data by selectively enabling or disabling a demura controller operation that alters the input pixel data prior to energizing the elements of the pixel array.3.The system of claim 1, wherein the program code is structured to cause the processor to determine the demura mode for the input pixel data by adjusting a correction frequency of the demura controller that alters the input pixel data prior to energizing the elements of the pixel array.4.The system of claim 3, wherein the correction frequency causes the demura controller to bypass a demura correction for a subset of pixels in the input pixel data.5.The system of claim 1, wherein the program code is structured to cause the processor to:access mura measurement data stored in the display;determine compensation factoring information for the input pixel data based on the pixel measurement data; andgenerate output pixel data based on the compensation factoring information.6.The system of claim 5, wherein the mura measurement data comprises values stored in a non-volatile memory of the display based on optical measurement of the LED display, the values indicative of an unevenness of the LED display.7.The system of claim 1, wherein the program code is structured to cause the process to analyze the input pixel data by analyzing a spatial order of the input pixel data.8.The system of claim 1, wherein the program code is structured to cause the process to analyze the input pixel data by analyzing a luminance histogram of the input pixel data.9.The system of claim 1, wherein the program code is structured to cause the process to analyze contextual data corresponding to the generation of the pixel data by analyzing one or more of:environmental data relating to an environment in which the LED display is located;user attention information indicative of an attention detection of a user of the computing device;usage mode data indicative of a usage of the computing device;time data indicative of a time of the usage of the computing device; orpower data indicative of a level of power consumed by one or more hardware components of the LED display.10.The system of claim 1, wherein the LED display is an organic LED (OLED) display that comprises an OLED pixel array.11.The system of claim 1, wherein the system is embedded into a timing controller circuit of the LED display.12.A method for adjusting a demura configuration in a display, the method comprising:analyzing input pixel data to determine pixel data characteristics, the input pixel data received from a display controller of a computing device;analyzing contextual data corresponding to a generation of the input pixel data;determining a demura mode for the input pixel data based on the pixel data characteristics and the contextual data; andenergizing elements of a pixel array of a light emitting diode (LED) display based on the demura mode and the input pixel data.13.The method of claim 12, wherein the determining the demura mode for the input pixel data comprises:selectively enabling or disabling a demura controller operation that alters the input pixel data prior to energizing the elements of the pixel array.14.The method of claim 12, wherein the determining the demura mode for the input pixel data comprises:adjusting a correction frequency of the demura controller that alters the input pixel data prior to energizing the elements of the pixel array.15.The method of claim 12, further comprising:accessing mura measurement data stored in the display;determining compensation factoring information for the input pixel data based on the pixel measurement data; andgenerating output pixel data based on the compensation factoring information.16.The method of claim 12, wherein the analyzing the contextual data corresponding to the generation of the pixel data comprises analyzing one or more of:environmental data relating to an environment in which the LED display is located;user attention information indicative of an attention detection of a user of the computing device;usage mode data indicative of a usage of the computing device;time data indicative of a time of the usage of the computing device; orpower data indicative of a level of power consumed by one or more hardware components of the LED display.17.A computer-readable storage medium having computer program code recorded thereon that when executed by at least one processor causes the at least one processor to perform a method comprising:analyzing input pixel data to determine pixel data characteristics, the input pixel data received from a display controller of a computing device;analyzing contextual data corresponding to a generation of the input pixel data;determining a demura mode for the input pixel data based on the pixel data characteristics and the contextual data; andenergizing elements of a pixel array of a light emitting diode (LED) display based on the demura mode and the input pixel data.18.The computer-readable storage medium of claim 17, wherein the determining the demura mode for the input pixel data comprises:selectively enabling or disabling a demura controller operation that alters the input pixel data prior to energizing the elements of the pixel array.19.The computer-readable storage medium of claim 17, wherein the determining the demura mode for the input pixel data comprises:adjusting a correction frequency of the demura controller that alters the input pixel data prior to energizing the elements of the pixel array.20.The computer-readable storage medium of claim 17, wherein the analyzing the contextual data corresponding to the generation of the pixel data comprises analyzing one or more of:environmental data relating to an environment in which the LED display is located;user attention information indicative of an attention detection of a user of the computing device;usage mode data indicative of a usage of the computing device;time data indicative of a time of the usage of the computing device; orpower data indicative of a level of power consumed by one or more hardware components of the LED display.
Citation Information
Patent Citations
Display device selectively performing a MURA correction operation, and method of operating a display device
US20210327334A1