Patent Description:
A color may include a matte finish or have various levels of shine. Such effects on a color may have a direct impact on the way a human eye will see the color. For example, a color with a matte finish may appear flat. However, the appearance of the same color with a shiny finish may produce more variations in color as it will reflect more light. This difference may be easy to see in a video or in a moving three-dimensional image because a shiny color may variate as a function of the camera or eye position.

United States Patent Application number <CIT>) discloses use of a compass, MEMS accelerometer, GPS module, and MEMS gyrometer to infer a frame of reference for a hand-held device. This can provide a true Frenet frame, i.e., X- and Y-vectors for the display, and also a Z-vector that points perpendicularly to the display. In fact, with various inertial clues from accelerometer, gyrometer, and other instruments that report their states in real time, it is possible to track the Frenet frame of the device in real time to provide a continuous 3D frame-of-reference. Once this continuous frame of reference is known, the position of a user's eyes may either be inferred or calculated directly by using a device's front-facing camera. With the position of the user's eyes and a continuous 3D frame-of-reference for the display, more realistic virtual 3D depictions of the objects on the device's display may be created and interacted with by the user.

According to the present invention there are provided a method, a system, a computer program product and a computer program according to the independent claims.

Preferred embodiments of the present invention will now be described, by way of example only, and with reference to the following drawings:.

The various features of the drawings are not to scale as the illustrations are for clarity in facilitating one skilled in the art in understanding the invention in conjunction with the detailed description.

Detailed embodiments of the claimed structures and methods are disclosed herein; however, it can be understood that the disclosed embodiments are merely illustrative of the claimed structures and methods that may be embodied in various forms. This invention may, however, be embodied in many different forms and should not be construed as limited to the exemplary embodiments set forth herein. Rather, these exemplary embodiments are provided so that this disclosure will be thorough and complete and will fully convey the scope of this invention to those skilled in the art. In the description, details of well-known features and techniques may be omitted to avoid unnecessarily obscuring the presented embodiments.

Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuitry, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, Python, C++, or the like, and procedural programming languages, such as the "C" programming language or similar programming languages.

The following described exemplary embodiments provide a system, method and program product for shine visualization. As such, the present embodiment has the capacity to improve the technical field of digital image processing by visualizing shining objects in static digital images. More specifically, a shine visualization program may recognize an object in a digital image and determine an associated shine index corresponding to the recognized object. Then, in response to the determined shine index meeting a threshold shine index, the shine visualization program may extract pixel values of a plurality of pixels associated with the recognized object in the digital image. Next, the shine visualization program may detect any variations in the extracted pixel values of the plurality of pixels associated with the recognized object, where the detected variation in the extracted pixel values may be associated with light reflecting from the recognized object in the digital image. Then, the shine visualization program may determine, based on the detected variation in the extracted color values, a light source position relative to the recognized object in the digital image. Next, the shine visualization program may track a position of a user's eyes viewing the digital image on a user device. Thereafter, in response to detecting a movement in the position of the user's eyes, the shine visualization program may apply a filter to a subset of the plurality of pixels of the recognized object to simulate a shine effect on the recognized object in the digital image.

As described previously, a color may include a matte finish or have various levels of shine. Such effects on a color may have a direct impact on the way a human eye will see the color. For example, a color with a matte finish may appear flat. However, the appearance of the same color with a shiny finish may produce more variations in color as it will reflect more light. This difference may be easy to see in a video or in a moving three-dimensional image because a shiny color may variate as a function of the camera or eye position. However, in a fixed digital image, the shining effect of an object is impossible to see because the static nature of the medium.

Therefore, it may be advantageous to, among other things, provide a way to detect if a user viewing a digital image on a user device (with a camera) is moving and to simulate the shining effect of an object in the digital image if movement is detected. Accordingly, the disclosed embodiments may enhance user experience and provide more information to a user interacting with a digital image on a user device.

In real life, a viewer may observe the brightness of an object as a result of the viewer's position and the position of the sun or other source of light. According to at least one embodiment of the present disclosure, an extra level of data may be added to a static or fixed digital image to enable an image reader display the reflection of light on various shining objects in the image. In one embodiment, image recognition may be implemented to detect and recognize objects in a digital image. Based on the materials of the objects recognized in the image, a shine level or index may be assigned to each the objects. Objects that include a shine index which meet a threshold shine level may be further processed. In one embodiment, the further processing may include detecting variations in an object's color resulting from the reflection of the light to determine the direction of light relative to the objects in the digital image. According to one embodiment, when the image is displayed by the reader on the user device, the camera of the user device may track the movement of the user (e.g., based on the user's eye or gaze). If the user is stable, the reader may not make any changes to the image. However, if movement of the user or device is detected, the reader may apply one or more filters to the image to simulate a shining effect on various objects in the image. In one embodiment, if the user moves their head away from the light source, the reader may apply a filter to augment the brightness of the object to simulate the mirror effect with the light source. In another embodiment, if the user moves their head closer to the light source (e.g., between the light source and the object), the reader may apply a filter to decrease the brightness of the object.

Referring to <FIG>, an exemplary networked computer environment <NUM> in accordance with one embodiment is depicted. The networked computer environment <NUM> may include a computer <NUM> with a processor <NUM> and a data storage device <NUM> that is enabled to run a software program <NUM> and a shine visualization program 110a. The networked computer environment <NUM> may also include a server <NUM> that is enabled to run a shine visualization program 110b that may interact with a database <NUM> and a communication network <NUM>. The networked computer environment <NUM> may include a plurality of computers <NUM> and servers <NUM>, only one of which is shown. The communication network <NUM> may include various types of communication networks, such as a wide area network (WAN), local area network (LAN), a telecommunication network, a wireless network, a public switched network and/or a satellite network. It should be appreciated that <FIG> provides only an illustration of one implementation and does not imply any limitations with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environments may be made based on design and implementation requirements.

The client computer <NUM> may communicate with the server computer <NUM> via the communications network <NUM>. The communications network <NUM> may include connections, such as wire, wireless communication links, or fiber optic cables. As will be discussed with reference to <FIG>, server computer <NUM> may include internal components 902a and external components 904a, respectively, and client computer <NUM> may include internal components 902b and external components 904b, respectively. Server computer <NUM> may also operate in a cloud computing service model, such as Software as a Service (SaaS), Platform as a Service (PaaS), or Infrastructure as a Service (laaS). Server <NUM> may also be located in a cloud computing deployment model, such as a private cloud, community cloud, public cloud, or hybrid cloud. Client computer <NUM> may be, for example, a mobile device, a telephone, a personal digital assistant, a netbook, a laptop computer, a tablet computer, a desktop computer, or any type of computing devices capable of running a program, accessing a network, and accessing a database <NUM>. According to various implementations of the present embodiment, the shine visualization program 110a, 110b may interact with a database <NUM> that may be embedded in various storage devices, such as, but not limited to a computer/mobile device <NUM>, a networked server <NUM>, or a cloud storage service.

According to the present embodiment, a user using a client computer <NUM> or a server computer <NUM> may use the shine visualization program 110a, 110b (respectively) to animate a static digital image to simulate a shining effect on an image object. Embodiments of the present disclosure are explained in more detail below with respect to <FIG>.

Referring now to <FIG>, a schematic block diagram of a digital image processing environment <NUM> implementing the shine visualization program 110a, 110b according to at least one embodiment is depicted. According to one embodiment, the digital image processing environment <NUM> may include one or more components (e.g., client computer <NUM>; server computer <NUM>; communication network <NUM>) of the computer environment <NUM> discussed above with reference to <FIG>.

According to one embodiment, digital image processing environment <NUM> may include a camera-enabled computing device which may be referred to as a user device <NUM>. In various embodiments, user device <NUM> may include a workstation, a personal computing device, a laptop computer, a desktop computer, a tablet computer, a smart telephone, or other suitable electronic devices. According to one embodiment, user device <NUM> may include a tangible storage device (e.g., data storage device <NUM>) and a processor that is enabled to run the shine visualization program 110a, 110b.

In one embodiment, the shine visualization program 110a, 110b may include a single computer program or multiple program modules or sets of instructions being executed by the processor of user device <NUM>. The shine visualization program 110a, 110b may include routines, objects, components, units, logic, data structures, and actions that may perform particular tasks or implement particular abstract data types. The shine visualization program 110a, 110b may be practiced in distributed cloud computing environments where tasks may be performed by remote processing devices which may be linked through the communication network <NUM>. In one embodiment, the shine visualization program 110a, 110b may include program instructions that may be collectively stored on one or more computer-readable storage media. As shown in the illustrated embodiment, the shine visualization program 110a, 110b may include an image recognition module <NUM>, a shine assignment module <NUM>, a color extraction module <NUM>, a light detection module <NUM>, a motion detection module <NUM>, and an image rendering module <NUM>.

According to one embodiment, digital image processing environment <NUM> may include a digital image <NUM> (e.g., fixed or static digital image) loaded onto the user device <NUM>. Examples file types for digital image <NUM> may include, for example, Joint Photographic Experts Group (JPEG), Portable Network Graphics (PNG), Raw Image Format (RAW), or any other suitable file type for storing fixed images. In one embodiment, the shine visualization program 110a, 110b may be implemented to simulate a shining effect on any object in digital image <NUM> which may have a natural tendency to shine based on the material and/or color of the object.

According to one embodiment, the shine visualization program 110a, 110b may implement the image recognition module <NUM> to detect, classify, or recognize any object captured in the digital image <NUM>. In one embodiment, the image recognition module <NUM> may implement a trained machine learning model such as, for example, a trained convolutional neural network (CNN) to receive digital image <NUM> as an input layer and output, based on pixel features, a corresponding label for each detected or recognized object or element in the digital image <NUM>. In various embodiments, the image recognition module <NUM> may also be enabled to determine a color and a surface material or feature for each recognized object. For example, the image recognition module <NUM> may recognize a lake as one object in digital image <NUM>. In one embodiment, the image recognition module <NUM> may also indicate that the color of the lake is blue and the surface material of the lake is water.

According to one embodiment, the shine visualization program 110a, 110b may implement the shine assignment module <NUM> to assign a shine level or shine index to each object recognized by the image recognition module <NUM> in digital image <NUM>. In at least one embodiment, the shine index of an object may be associated with the amount of light that the object may reflect (e.g., based on the color, material, and/or finish of the object). In one embodiment, the shine index may range from <NUM> to <NUM> where a shine index of <NUM> may indicate that the object does not reflect any light (e.g., painted wall with matte finish) and a shine index of <NUM> may indicate that the object is very shiny (e.g., mirror, gold, water). In other embodiments, the shine index may range from <NUM> to any number (e.g., <NUM>). In some embodiments, the shine index range may be reversed such that a shine index of <NUM> may indicate the highest level of shine.

According to one embodiment, the digital image processing environment <NUM> may include an object shine index repository <NUM> which may store a corresponding shine index for various objects and materials which may be captured in digital image <NUM>. In one embodiment, the shine assignment module <NUM> may communicate with the object shine index repository <NUM> to retrieve a shine index for each object recognized by the image recognition module <NUM>.

According to one embodiment, if none of the shine indexes assigned to the objects recognized in digital image <NUM> meets a minimum shine index (e.g., threshold shine index), the shine visualization program 110a, 110b may display the digital image <NUM> as a static image. In one embodiment, if the shine indexes assigned to some of the objects recognized in digital image <NUM> meets the minimum shine index, the shine visualization program 110a, 110b may further process and animate the shine in those objects and display the other objects which did not meet the minimum shine index as-is. In one embodiment, any shine index above <NUM> may meet the minimum shine index requirement. In one embodiment, the shine visualization program 110a, 110b may include a default minimum shine index and may also enable the user to enter a user-defined minimum shine index.

According to one embodiment, the shine visualization program 110a, 110b may implement the color extraction module <NUM> and the light detection module <NUM> to determine a location of a light source and a direction of light captured in the digital image <NUM>. In one embodiment, the direction of light may be determined by the color of an object since the color is directly related to the reflection of light. Even an object that is a solid or uniform color in reality, such as, for example, a red car, may be perceived as having variations in color based on the way the light falls on the car. In one embodiment, the variations in color may be indicated by a tonal value where the tonal value of a color may be changed by adding white, black, or gray to an original color. All colors may include a tonal value associated with the lightness or darkness of the color. In one embodiment, a high key tonal value of a color may indicate a lighter variation of the color and a low key tonal value of the color may indicate a darker variation of the color. In one embodiment, the color extraction module <NUM> may extract and compare the pixel values corresponding to the pixels of each object to detect variations in the object's color (e.g., tonal variations). In one embodiment, the color extraction module <NUM> may use the red, green, blue (RGB) additive color model to compare the pixel values. In other embodiments, the color extraction module <NUM> may also be enabled to use the hue, saturation, lightness (HSL) or hue, saturation, value (HSV) color models when comparing the pixel values.

According to one embodiment, the light detection module <NUM> may use the tonal variations in color measured by the color extraction module <NUM> to calculate one or more luminosity levels of the object. In one embodiment, the luminosity may refer to a measure of the amount of light falling on a surface of an object. In one embodiment, luminosity may indicate a relative value (e.g., relative luminosity) in a range from <NUM> to <NUM>, <NUM> to <NUM>, or any other suitable range, where a higher luminosity level associated with a surface may indicate more light falling on that surface. In various embodiments, the light detection module <NUM> may calculate multiple luminosity levels for each object, where a surface of the object which receives the most amount of light may include the highest luminosity level (e.g., <NUM>) and the surface of the object which receives the least amount of light may include the lowest luminosity level (e.g., <NUM>). According to one embodiment, the portions of the object that include relatively high key tonal values (e.g., lighter variation of the color), as determined by the color extraction module <NUM>, may be determined to include relatively high luminosity levels by the light detection module <NUM>. In one embodiment, luminosity levels calculated by the light detection module <NUM> may indicate a luminosity gradient from lightness to darkness (e.g., high relative luminosity to low relative luminosity). In various embodiments, the calculated luminosity gradient may indicate the location of the light source and the direction of light. More specifically, the light detection module <NUM> may determine that the location of the light source and the direction of the light is on the side of the object with the highest luminosity level.

According to one embodiment, the processes described above (e.g., recognizing objects, assigning shine index, and identifying direction of light) with reference to the image recognition module <NUM>, shine assignment module <NUM>, the color extraction module <NUM>, and the light detection module <NUM> may be performed in real-time as soon as digital image <NUM> is loaded onto user device <NUM>. The metadata generated by the above processes may be stored in the main memory of the user device <NUM> associated with shine visualization program 110a, 110b. In one embodiment, the motion detection module <NUM> and the image rendering module <NUM> may utilize the stored metadata to simulate a shining effect on one or more objects of the digital image <NUM>, as will be further described below.

According to one embodiment, the shine visualization program 110a, 110b may implement the motion detection module <NUM> to interact with a camera of user device <NUM> to track any movements of a user viewing the digital image <NUM> on user device <NUM>. In one embodiment, the motion detection module <NUM> may track either the movement of the user's head or the movement of the device since the position of the user's eye will be different relative to the camera in both instances. In at least one embodiment, the motion detection module <NUM> may track the movement of the user's eye relative to the location of the light source determined by the light detection module <NUM>. According to one embodiment, if the motion detection module <NUM> determines that the user may be moving away from the location of the light source, the image rendering module <NUM> may be implemented to apply a filter in real-time to increase the brightness of the object to simulate an increased mirror effect with the light source. In at least one embodiment, the image rendering module <NUM> may apply any suitable filter (e.g., brightness filter, contrast filter, highlight filter, tonal value filter) to at least a subset of the pixels associated with the objects to simulate a shining effect. Similarly, if the motion detection module <NUM> determines that the user may be moving towards the location of the light source and/or between the light source and the object, the image rendering module <NUM> may be implemented to apply one or more filters in real-time to decrease the brightness of the object. According to one embodiment, the image rendering module <NUM> may use the shine index assigned to the object as a multiplier with the filter. Accordingly, the image rendering module <NUM> may apply the filters more intensively on objects having higher shine indexes.

Referring now to <FIG>, an operational flowchart illustrating the exemplary shine visualization process <NUM> used by the shine visualization program 110a, 110b according to at least one embodiment is depicted.

At <NUM>, an object is recognized in a digital image. According to one embodiment, the image recognition module <NUM> of the shine visualization program 110a, 110b may implement image recognition capabilities, such as, for example, a trained CNN model to detect and recognize the various objects captured in a digital image loaded onto a user device.

Then at <NUM>, a shine index is assigned to the recognized object. According to one embodiment, the shine assignment module <NUM> of the shine visualization program 110a, 110b may assign a shine index to each object recognized by the image recognition module <NUM> in the digital image. As described previously with reference to <FIG>, the shine assignment module <NUM> may have access to the object shine index repository <NUM> which may store corresponding shine indexes for various objects and materials.

Then at <NUM>, responsive to the assigned shine index meeting a threshold shine index, a plurality of pixel values of the recognized object are extracted. According to one embodiment, the shine visualization program 110a, 110b may implement the threshold shine index as a minimum shine index which must be met by the objects recognized in the digital image prior to further processing. As described previously with reference to <FIG>, the shine visualization program 110a, 110b may include a default minimum shine index (e.g., default threshold shine index) and may also enable the user to enter a user-defined minimum shine index (e.g., user-defined threshold shine index). In one embodiment, the color extraction module <NUM> may extract and compare the pixel values corresponding to the pixels of each object, as described previously with reference to <FIG>.

Then at <NUM>, tonal variations in the extracted plurality of pixel values of the recognized object are detected. According to one embodiment, the color extraction module <NUM> may detect tonal variations by comparing pixel values using a color model, as described previously with reference to <FIG>. Tonal variations in the color of an object may be a result of the amount of light reflecting from the object.

Then at <NUM>, a position of a light source relative to the recognized object is determined based on the extracted plurality of pixel values. According to one embodiment, the light detection module <NUM> of the shine visualization program 110a, 110b may use the tonal variations in color measured by the color extraction module <NUM> to calculate one or more luminosity levels of the object. According to one embodiment, the portions of the object that include relatively high key tonal values (e.g., lighter variation of the color), as determined by the color extraction module <NUM>, may be determined to include relatively high luminosity levels by the light detection module <NUM>. In one embodiment, luminosity levels calculated by the light detection module <NUM> may indicate a luminosity gradient from lightness to darkness (e.g., high relative luminosity to low relative luminosity). In various embodiments, the luminosity gradient may indicate the location of the light source and the direction of the light. More specifically, the light detection module <NUM> may determine that the location of the light source and the direction of the light is on the side of the object with the highest luminosity level.

Then at <NUM>, a user's eyes are tracked as the user is viewing the digital image on the user device. According to one embodiment, the motion detection module <NUM> of the shine visualization program 110a, 110b may interact with a camera of the user device to track any movements of a user viewing the digital image on the user device. In one embodiment, the motion detection module <NUM> may track either the movement of the user's head or the movement of the device since the position of the user's eye will be different relative to the camera in both instances. In at least one embodiment, the motion detection module <NUM> may also track the movement of the user's eye relative to the location of the light source determined by the light detection module <NUM> at <NUM>.

Thereafter at <NUM>, responsive to detecting a movement in the position of the user's eyes, one or more filters are applied to the recognized object to simulate a shine effect of the recognized object in the digital image. In one embodiment, the image rendering module <NUM> may apply various filters in real-time to increase or decrease the shining effect of the objects based on the movement of the user's eye. According to one embodiment, if the motion detection module <NUM> determines that the user may be moving away from the location of the light source, the image rendering module <NUM> may be implemented to apply one or more filters to increase the brightness of the object to simulate an increased mirror effect with the light source. In at least one embodiment, the image rendering module <NUM> may apply any suitable filter (e.g., brightness filter, contrast filter, highlight filter, tonal value filter) to at least a subset of the pixels associated with the objects to simulate a shining effect. Similarly, if the motion detection module <NUM> determines that the user may be moving towards the location of the light source and/or between the light source and the object, the image rendering module <NUM> may be implemented to apply one or more filters in real-time to decrease the brightness of the object. According to one embodiment, the image rendering module <NUM> may use the shine index assigned to the object as a multiplier with the filter. Accordingly, the image rendering module <NUM> may apply the filters more intensively on objects having higher shine indexes.

Referring now to <FIG>, block diagrams illustrating an example of the shine visualization process <NUM> of <FIG> used by the shine visualization program 110a, 110b according to at least one embodiment is depicted.

According to one embodiment, <FIG> illustrates an event <NUM>. At event <NUM>, the digital image <NUM> may be loaded onto a user device and the shine visualization program 110a, 110b may implement the image recognition module <NUM> to discover the various elements or objects in digital image <NUM>. In this example, the image recognition module <NUM> may recognize and label the following three objects in digital image <NUM>: first object <NUM> (a hand; color "light skin"), second object <NUM> (a ring-color "gold"), and third object <NUM> (a background-color "light grey"). As shown in <FIG>, the image recognition module <NUM> may also recognize a color and/or material of the recognized objects.

Continuing with event <NUM>, once the various objects in digital image <NUM> have been detected and recognized, the shine assignment module <NUM> may determine a corresponding shine index for each object. The shine index of an object may depend on the object's ability to reflect light. As described previously with reference to <FIG>, the shine visualization program 110a, 110b may access the object shine index repository <NUM> to look up the shine index for a corresponding object or material. Based on the object shine index repository <NUM>, the shine assignment module <NUM> may determine that the shine index of the first object <NUM> (e.g., hand; skin) is <NUM>, the shine index of the second object <NUM> (e.g., ring; gold) is <NUM>, and the shine index of the third object <NUM> (e.g., background; grey) is <NUM>. In this example, the threshold shine index may be set to <NUM> which may be met by first and second objects <NUM>, <NUM>. Since the first object <NUM> (e.g. background) is associated with shine=<NUM> (e.g., the object will not shine at all), the shine visualization program 110a, 110b may not process the third object <NUM> for simulating the shining effect. Further processing may be continued with the first and second objects <NUM>, <NUM>.

According to one embodiment, <FIG> illustrates an event <NUM>. At event <NUM>, the color extraction module <NUM> may measure and compare the pixel values corresponding to second object <NUM> to detect tonal variations in the color of the object. In one embodiment, the color extraction module <NUM> may detect any number of tonal variations <NUM> of each object.

According to one embodiment, <FIG> illustrates an event <NUM>. At event <NUM>, the light detection module <NUM> may use the tonal variations determined by the color extraction module <NUM> at event <NUM> to calculate one or more luminosity levels for second object <NUM>. As described previously, the luminosity may refer to a measure of the amount of light falling on a surface of an object. In this example, the luminosity may indicate a relative value (e.g., relative luminosity) in a range from <NUM> to <NUM>. At event <NUM>, the light detection module <NUM> may calculate two luminosity levels for the second object <NUM>, where a surface of the object which receives the most amount of light may include the highest luminosity level (e.g., luminosity=<NUM>) and the surface of the object which receives the least amount of light may include the lowest luminosity level (e.g., luminosity=<NUM>). Based on these luminosity levels, the light detection module <NUM> may determine that a location <NUM> of a light source and a direction of light <NUM> is on the side of the object with the highest luminosity level (e.g., luminosity=<NUM>).

According to one embodiment, <FIG> illustrates an event <NUM>. Similar to event <NUM>, at event <NUM>, the color extraction module <NUM> may measure and compare the pixel values corresponding to first object <NUM> to detect tonal variations in the color of the object.

According to one embodiment, <FIG> illustrates an event <NUM>. Similar to event <NUM>, at event <NUM>, the light detection module <NUM> may use the tonal variations determined by the color extraction module <NUM> at event <NUM> to calculate one or more luminosity levels for first object <NUM>. At event <NUM>, the light detection module <NUM> may calculate three luminosity levels for the first object <NUM>, where a surface of the object which receives the most amount of light may include the highest luminosity level (e.g., luminosity=<NUM>), the surface of the object which receives the least amount of light may include the lowest luminosity level (e.g., luminosity=<NUM>), and the surface of the object which receives an intermediate amount of light may include an intermediate luminosity level (e.g., luminosity=<NUM>). Based on these luminosity levels, the light detection module <NUM> may maintain its determination (e.g., from event <NUM>) that the light source is at the location <NUM> and the direction <NUM> of the light is on the side of the object with the highest luminosity level (e.g., luminosity=<NUM>).

According to one embodiment, <FIG> illustrates an event <NUM>. At event <NUM>, the shine visualization program 110a, 110b may implement the motion detection module <NUM> to interact with a camera <NUM> of the user device to track any movements of a user <NUM> viewing the digital image <NUM> on user device display <NUM>.

If the user <NUM> is stable (e.g., does not move), such as, for example, at time <NUM> (T1)-<NUM>, the image rendering module <NUM> of the shine visualization program 110a, 110b may render a default (e.g., original) version of the digital image <NUM> on user device display <NUM>.

If the user <NUM> moves their head to the left relative to the camera <NUM>, such as, for example, at time <NUM> (T2)-<NUM>, the image rendering module <NUM> may be implemented to apply one or more filters in real-time to increase the brightness of the first and second objects <NUM>, <NUM> to simulate an increased mirror effect with the light source. As described previously, the image rendering module <NUM> may use the shine index assigned to the first and second objects <NUM>, <NUM> as a multiplier with the filters. Accordingly, since the second object <NUM> included a shine index of <NUM>, the image rendering module <NUM> may apply the filters more intensively on the pixels of the second object <NUM> relative to the first object <NUM> which had a shine index of <NUM>.

Thereafter, if the user <NUM> moves their head to the right relative to the camera <NUM>, such as, for example, at time <NUM> (T3)-<NUM>, the image rendering module <NUM> may be implemented to apply one or more filters in real-time to decrease the brightness of the first and second objects <NUM>, <NUM>.

The shine visualization program 110a, 110b may improve the functionality of a computer because shine visualization program 110a, 110b may enable a computer to detect if a user viewing a digital image on the computer (with a camera) is moving and to simulate the shining effect of an object in the digital image if movement is detected. Accordingly, the shine visualization program 110a, 110b may enhance user experience and provide more information to a user interacting with a digital image on a computer.

It may be appreciated that <FIG> provide only an illustration of one embodiment and do not imply any limitations with regard to how different embodiments may be implemented. Many modifications to the depicted embodiment(s) may be made based on design and implementation requirements.

<FIG> is a block diagram <NUM> of internal and external components of computers depicted in <FIG> in accordance with an illustrative embodiment of the present invention. It should be appreciated that <FIG> provides only an illustration of one implementation and does not imply any limitations with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environments may be made based on design and implementation requirements.

Data processing system <NUM>, <NUM> is representative of any electronic device capable of executing machine-readable program instructions. Data processing system <NUM>, <NUM> may be representative of a smart phone, a computer system, PDA, or other electronic devices. Examples of computing systems, environments, and/or configurations that may represented by data processing system <NUM>, <NUM> include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, network PCs, minicomputer systems, and distributed cloud computing environments that include any of the above systems or devices.

User client computer <NUM> and network server <NUM> may include respective sets of internal components <NUM> a, b and external components <NUM> a, b illustrated in <FIG>. Each of the sets of internal components <NUM> a, b includes one or more processors <NUM>, one or more computer-readable RAMs <NUM> and one or more computer-readable ROMs <NUM> on one or more buses <NUM>, and one or more operating systems <NUM> and one or more computer-readable tangible storage devices <NUM>. The one or more operating systems <NUM>, the software program <NUM>, and the shine visualization program 110a in client computer <NUM>, and the shine visualization program 110b in network server <NUM>, may be stored on one or more computer-readable tangible storage devices <NUM> for execution by one or more processors <NUM> via one or more RAMs <NUM> (which typically include cache memory). In the embodiment illustrated in <FIG>, each of the computer-readable tangible storage devices <NUM> is a magnetic disk storage device of an internal hard drive. Alternatively, each of the computer-readable tangible storage devices <NUM> is a semiconductor storage device such as ROM <NUM>, EPROM, flash memory or any other computer-readable tangible storage device that can store a computer program and digital information.

Each set of internal components <NUM> a, b also includes a R/W drive or interface <NUM> to read from and write to one or more portable computer-readable tangible storage devices <NUM> such as a CD-ROM, DVD, memory stick, magnetic tape, magnetic disk, optical disk or semiconductor storage device. A software program, such as the software program <NUM> and the shine visualization program 110a and 110b can be stored on one or more of the respective portable computer-readable tangible storage devices <NUM>, read via the respective R/W drive or interface <NUM> and loaded into the respective hard drive <NUM>.

Each set of internal components <NUM> a, b may also include network adapters (or switch port cards) or interfaces <NUM> such as a TCP/IP adapter cards, wireless wi-fi interface cards, or <NUM> or <NUM> wireless interface cards or other wired or wireless communication links. The software program <NUM> and the shine visualization program 110a in client computer <NUM> and the shine visualization program 110b in network server computer <NUM> can be downloaded from an external computer (e.g., server) via a network (for example, the Internet, a local area network or other, wide area network) and respective network adapters or interfaces <NUM>. From the network adapters (or switch port adaptors) or interfaces <NUM>, the software program <NUM> and the shine visualization program 110a in client computer <NUM> and the shine visualization program 110b in network server computer <NUM> are loaded into the respective hard drive <NUM>. The network may comprise copper wires, optical fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers.

Each of the sets of external components <NUM> a, b can include a computer display monitor <NUM>, a keyboard <NUM>, and a computer mouse <NUM>. External components <NUM> a, b can also include touch screens, virtual keyboards, touch pads, pointing devices, and other human interface devices. Each of the sets of internal components <NUM> a, b also includes device drivers <NUM> to interface to computer display monitor <NUM>, keyboard <NUM> and computer mouse <NUM>. The device drivers <NUM>, R/W drive or interface <NUM> and network adapter or interface <NUM> comprise hardware and software (stored in storage device <NUM> and/or ROM <NUM>).

It is understood in advance that although this disclosure includes a detailed description on cloud computing, implementation of the teachings recited herein are not limited to a cloud computing environment.

Cloud computing is a model of service delivery for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g. networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with a provider of the service.

At the heart of cloud computing is an infrastructure comprising a network of interconnected nodes.

As shown, cloud computing environment <NUM> comprises one or more cloud computing nodes <NUM> with which local computing devices used by cloud consumers, such as, for example, personal digital assistant (PDA) or cellular telephone 1000A, desktop computer 1000B, laptop computer 1000C, and/or automobile computer system 1000N may communicate. It is understood that the types of computing devices 1000A-N shown in <FIG> are intended to be illustrative only and that computing nodes <NUM> and cloud computing environment <NUM> can communicate with any type of computerized device over any type of network and/or network addressable connection (e.g., using a web browser).

Referring now to <FIG>, a set of functional abstraction layers <NUM> provided by cloud computing environment <NUM> is shown.

In one example, these resources may comprise application software licenses.

Workloads layer <NUM> provides examples of functionality for which the cloud computing environment may be utilized. Examples of workloads and functions which may be provided from this layer include: mapping and navigation <NUM>; software development and lifecycle management <NUM>; virtual classroom education delivery <NUM>; data analytics processing <NUM>; transaction processing <NUM>; and shine visualization <NUM>. A shine visualization program 110a, 110b provides a way to animate a static digital image to simulate a shining effect on an image object.

Claim 1:
A computer-implemented method comprising:
recognizing (<NUM>), using a trained machine learning model, at least one object in a digital image loaded on a user device;
assigning (<NUM>) a shine index to the recognized at least one object;
determining (<NUM>), based on a plurality of pixel values corresponding to the recognized at least one object, a direction of light relative to the recognized at least one object;
tracking (<NUM>) a position of a user's eyes viewing the digital image on the user device;
in response (<NUM>) to detecting a movement in the position of the user's eyes, applying, in real-time, at least one filter to the recognized at least one object to simulate a shining effect of the recognized at least one object in the digital image;
in response (<NUM>) to the assigned shine index associated with the recognized at least one object meeting a threshold shine index, further processing the recognized at least one object for simulating the shining effect of the recognized at least one object in the digital image; and
in response to the assigned shine index associated with the recognized at least one object falling below a threshold shine index, displaying an original version of the recognized at least one object in the digital image.