US20080143739A1 - Method and System for Dynamic, Luminance-Based Color Contrasting in a Region of Interest in a Graphic Image - Google Patents
Method and System for Dynamic, Luminance-Based Color Contrasting in a Region of Interest in a Graphic Image Download PDFInfo
- Publication number
- US20080143739A1 US20080143739A1 US11/610,266 US61026606A US2008143739A1 US 20080143739 A1 US20080143739 A1 US 20080143739A1 US 61026606 A US61026606 A US 61026606A US 2008143739 A1 US2008143739 A1 US 2008143739A1
- Authority
- US
- United States
- Prior art keywords
- color space
- pixels
- luminance
- foreground image
- image
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/363—Graphics controllers
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/02—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/37—Details of the operation on graphic patterns
- G09G5/377—Details of the operation on graphic patterns for mixing or overlaying two or more graphic patterns
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2340/00—Aspects of display data processing
- G09G2340/06—Colour space transformation
Definitions
- the present invention is directed to computer systems. More particularly, it is directed to graphical image processing.
- XOR is a bitwise logical operation on two operands that results in a logical value of true if and only if one of the operands, but not both, has a value of true.
- the XOR operation is performed over each bit in the operands. Performing the same XOR operation on the same operands twice results in the original operands.
- that cursor may be erased by drawing the same cursor again in the same location.
- a foreground image is typically drawn into the frame buffer and therefore changes the actual background image accordingly.
- the background image must be restored whenever the foreground image is to be erased.
- XOR-based cursor drawing frequently causes color shifts that may interfere with the overall look of the image and that may also cause a user difficulty when working with an image, such as in a graphics or image drawing application.
- a double edge In order to ensure contrast between a foreground image element, such as a cursor, and the background, generally a double edge, one black and one white is used with the XOR drawing so that the edge of the cursor is visible over varying background colors.
- a double edge may increase the amount of the background image that is being covered by the foreground image element.
- a traditional black-over XOR is performed by XORing all 1s over an image. For example, in an 8-bit deep frame buffer using RGBX representation (alpha in the frame buffer is generally ignored) if the overlay value at a location x,y is set, then pixel x,y is set to pixel x,y XOR 0xFFFFFF00.
- Dynamic foreground images such as cursors, bounding lines, shapes, and text may be displayed over an image by selecting the actual color values for the individual pixels of the foreground image to have high contrast in comparison to the surrounding background pixels.
- the background pixels with which the foreground pixels should contrast may first be converted from a non-luminance-isolating color space, such as a red-green-blue (RGB) color space, to a luminance isolating color space, such as YUV, HSL, or the like.
- graphics hardware systems such as graphics processors (GPUs) work with pixel color information in the non-luminance-isolating color space.
- pixels around and behind where the foreground image will be displayed may be converted, according to one embodiment.
- the luminance or brightness of pixels can be adjusted (thereby adjusting the contrast between the foreground and background pixels) without cause unnecessary color shifts.
- dynamic foreground images such as cursors
- XOR-based cursor drawing frequently causes color shifts that may interfere with the overall look of the image and that may also cause a user difficulty when working with an image, such as in a graphics or image drawing application.
- the converted pixel information is copied, stored, or drawn into a separate compositing or layered window.
- the foreground image information may be blended or composited with the background image information and the resultant blending may be displayed, printed, etc., the background image information has not actually be modified and therefore no saving and restoring of background pixel information is required to update the foreground image, such as when a cursor is moving across and image.
- the luminance of the pixel information may be adjusted to increase the contrast between the foreground image and the background image.
- the luminance values may be adjusted by using modulo arithmetic to add 0.5 to the current luminance value. Please note that by using modulo arithmetic, the resulting new luminance value is guaranteed to be between 0 and 1.
- pixel information of portions of the background image may also be blurred, such as by applying a Gaussian or box blur, such as to soften the edges of the foreground image.
- the pixel information may then be converted back into the non-luminance-isolating color space, according to some embodiments.
- the pixel information of the foreground image may then be combined, composited or blended with the background image to display the foreground image.
- the blending may be performed using alpha information for the foreground and/or background images. Such blending may result in a partially transparent foreground image in some embodiments. Additionally, the alpha blending may result in anti-aliasing edge pixels of the foreground image. Such anti-aliasing may make the final display of the foreground image more pleasing to the eye, such as by removing jagged and/or blocky patterns in the image. Additionally, such anti-aliasing may help minimize the amount of the background image obscured by the foreground image.
- FIG. 1 is an image illustrating XOR based drawing of a foreground image on top of a background image, according to the prior art.
- FIG. 2 is block diagram illustrating one embodiment of a computer system capable of implementing dynamically contrasting colors in a region of interest, as described herein.
- FIGS. 3A-3F are images illustrating dynamic luminance-based contrasting of colors, according to one embodiment.
- FIGS. 4A and 4B are images illustrating the drawing of temporary foreground images including anti-aliasing and blurring, as described herein, according to one embodiment.
- FIG. 5 is a flowchart illustrating one embodiment of a method for dynamic, luminance-based contrasting of colors, as described herein.
- FIG. 1 is an image illustrating a circle drawn over a landscape background using an XOR drawing mode, according to the prior art.
- the XOR drawing may result in color changes or shifts depending upon the exact color of the background and foreground at any particular pixel.
- the XOR drawing illustrated in FIG. 1 may result in contrasting colors for the circle, the color changes from one area of the circle to another may cause the overall image to be visually disturbing, not pleasing to the eye, or even wrong.
- Such color shifts also called chroma shifts or chroma crawling
- redrawing the same foreground image in the same location using XOR generally erases a foreground image drawn with XOR. However, if something is drawn to the background at the same location as the foreground image while the foreground image is visible, re-drawing the foreground image will not fully erase the foreground image, but instead alter the background image.
- Layers are independent images that can be manipulated as if each layer were an independent image. Each layer only forms a part of the final image. Layers are like transparencies stacked one on top of one another. Each layer may have different objects, images and effects. Layers allow users to work on separate images in order to modify sections without changing the entire image. When the layers are stacked, the images appear as if they are all a single image. The final image will be made up from all of the layers within the image depending on the order of the layers.
- the actual pixel information of the background image in the frame buffer is not actually modified to display the foreground image.
- a compositing mechanism provided by a graphics system, GPU, or operating system may be used to composite the foreground image in the layered window with the background image for on-screen display without actually modifying the underlying background pixel information, according to some embodiments.
- the graphic application may dynamically calculate the contents of the window for each new location at which the cursor should be drawn.
- the term “foreground image”, as used herein, may refer to virtually any sort of image element being dynamically displayed over a background image, as described herein.
- the foreground image may be a cursor moved by a mouse or other input device.
- a foreground image may represent a set of lines, curves or other geometric primitives.
- a graphics program may allow a user to select a particular region of an image by specifying a bounding line (e.g., such as with a rubber-banding, or “lasso” tool) around the region.
- the foreground image may represent text being displayed over a background image, such as extra information for a user.
- dynamic, luminance-based color contrasting may be used with virtually any graphic information as a foreground image.
- FIG. 2 is a block diagram illustrating one embodiments of a computer system 1000 suitable for implementing the dynamically contrasting colors using luminance, as described herein.
- a graphics application such as graphics application 120 may be configured to render a foreground image using luminance to determine colors that contrast with the background onto which the foreground image is displayed. Additionally, graphics application 120 may also perform blurring, anti-aliasing and/or blending to display the foreground image, according to some embodiments. Graphics application 120 may also be configured to render the foreground image to a separate compositing or layered window rather than rendering the foreground image directly into the same frame buffer containing the background image.
- Graphics application 120 may represent various types of graphics applications, such as painting, publishing, photography, games, animation, and other applications. Additionally, graphics application 120 may utilize a graphics processor 1040 when rendering or displaying foreground images onto background images according to various embodiments.
- a graphics processing unit or GPU may be considered a dedicated graphics-rendering device for a personal computer, workstation, game console or other computer system. Modern GPUs may be very efficient at manipulating and displaying computer graphics and their highly parallel structure may make them more effective than typical CPUs for a range of complex graphical algorithms.
- graphics processor 1040 may implement a number of graphics primitive operations in a way that makes executing them must faster than drawing directly to the screen with a host central processing unit (CPU), such as CPU 1030 .
- CPU central processing unit
- graphics application 120 may, in some embodiments, be part of, or performed by, one or more graphics processors, such as graphics processor 1040 .
- graphics application 120 may be configured to render foreground images into a separate image layer or separate layered window.
- FIGS. 3A and 3B illustrate versions of an image including a foreground image (the circle) over a background image, according to some embodiments.
- graphics application 120 may be configured to draw a foreground image, such as the circle illustrated in FIGS. 3A and 3B , over the background image using luminance-based contrast, as described herein.
- graphics application 120 may first convert the pixel information of that region of the background image to be covered by the foreground image from an non-luminance-isolating color space to a luminance isolating color space.
- graphics systems and graphics processors generally work on RGB pixel information.
- pixel information may be converted from an RGB color space to a luminance isolating color space, manipulated (e.g. increased contrast, blurred, anti-aliased, etc.), then converted back into the RGB color space before being displayed.
- graphics application 120 may perform some manipulations on the foreground image after it has been converted back to the RGB color space.
- dynamic, luminance-based color contrasting may in general include converting pixel information from any non-luminance-isolating color space to any luminance-isolating color space, according to some embodiments.
- graphics application 120 may first determine which pixels of the background to convert according to a mask of the foreground image. Such a mask may indicate the shape of the foreground image. Thus, graphics application 120 may use such a mask and the location where the foreground image is to be displayed to determine which pixels of the background image to use. Graphic application 120 may then convert the pixel information from RGB color space to a luminance isolating color space, such as the YUV color space.
- the YUV model may define a color space in terms of one luminance and two chrominance components.
- the YUV color space may model human perception of color more closely than the standard RBG model generally used in computer graphics hardware.
- Y stands for the luminance component or the brightness
- U and V are the chrominance, or color, components.
- weighted values of the R, G, and B components are added together to produce a single Y component, representing the overall brightness, or luminance, of that pixel.
- the U component may be created by subtracting the Y from the original blue component of the pixel and scaling by some factor.
- the V component may be generated by subtracting the Y from the original R component and then scaling by a different factor.
- V +R* 0.615 ⁇ G* 0.515 ⁇ G* 0.100
- graphics application 120 may be configured to modify the luminance values for the pixels to increase the contrast with the surrounding background images.
- the pixels of the foreground image (the circle) have been adjusted to contrast with the surrounding background pixels.
- the contrast is created by adjusting the luminance or brightness of the pixels, the resulting pixels are still of similar color to the original background pixels, just of a different brightness.
- FIGS. 3A and 3B do not have the jarring color shifts resulting from the traditional XOR drawing illustrated in FIG. 1 .
- the amount by which the luminance of a pixel is adjusted may vary from embodiment to embodiment.
- 0.5 is added to the luminance component using modulo arithmetic so that the resulting value will remain between 0 and 1.
- graphics application 120 may, in one embodiment, add 0.5 to 0.8 using modulo arithmetic resulting in a new luminance value of 0.3.
- 0.5 added to 0.8 results in 1.3 that is then truncated by modulo arithmetic to contain only the fractional part of the result (i.e., 0.3).
- the luminance value for a pixel may be set to either 0.0 or 1.0 depending on whether the pixel's original luminance value is less than or greater than a specified value.
- the luminance value for a pixel may be set to 0.0 if the original luminance value is less than a “perceptual gray” value, such as 0.5 and if the pixel's luminance value is greater than the 0.5 perceptual gray, the pixel's luminance value may be set to 1.0, according to one embodiment.
- other specified values may be used other than 0.5. For example, in some display systems, 0.5 may not represent a perceptual gray and therefore a value that does represent a perceptual gray may be used.
- the actual amount by which the luminance component is adjusted may vary from embodiment to embodiment. In some embodiments, the actual amount by which the luminance value is adjusted may be selected so as to ensure that there is a noticeable difference in luminance between the foreground image and the background image, as illustrated in FIG. 3A .
- the amount by which the luminance of a pixel is adjusted by vary as the foreground image is displayed different times.
- graphics application 120 may be configured to animate a cursor as it is moved around the image by varying the amount by which the luminance is adjusted, according to one embodiment.
- a foreground image may be animated by changing its luminance over a short period of time, such as to make a cursor or other foreground image stand out better against the background.
- graphics application 120 may animate a cursor whenever the user has not moved the cursor for a specified amount of time, such as a few seconds.
- FIG. 3A illustrates a foreground circle drawn using luminance-based contrasting, as described above.
- graphics application 120 may also be configured to further manipulate the pixel information of the foreground image to further enhance the final, resulting image.
- graphics application 120 may also blur and or anti-alias portions of the image, as illustrated in FIG. 3B .
- FIGS. 3C and 3D illustrate enlarged views of a portion of the image in FIGS. 3A and 3B , respectively.
- a comparison of location 330 in FIG. 3C and location 335 in FIG. 3D illustrates the effect of blurring the image.
- Graphics application 120 may be configured to blur those portions of the background image that are near an edge of foreground image, as illustrated at location 335 in FIG. 3D . Thus, in some embodiments, graphics application 120 may convert portions of the background image near, not just directly under, the location of the foreground image to YUV.
- graphics application 120 may be configured to apply a Gaussian blur to portions of the image, while in other embodiments other type of blurring may be used.
- a box blur may be utilized in some embodiments.
- a box blur is an image filter in which each pixel in the resulting image has a value equal to the average value of its neighboring pixels in the input image. It is a form of low-pass (“blurring”) filter and is a convolution. Due to its property of using equal weights it can be implemented using a much simpler accumulation algorithm that is significantly faster than using a sliding window algorithm. Box blurs are frequently used to approximate a Gaussian blur. If applied 3 times on the same image it approximates the Gaussian kernel to within about 3%, error yielding the same result as a quadratic convolution kernel.
- Graphics application 120 may be configured to blur different areas of an image, according to various embodiments. For example, in one embodiment, graphics application 120 may blur the background pixel values prior to converting them to YUV, such as to reduce the effect of noise in the background image on the foreground image or to reduce the positional sensitivity of the item. In another embodiment, graphics application 120 may blur the adjusted luminance values before converting them back to RGB, such as to generate a more pleasing transition within the foreground image while retaining sharp edges.
- graphics application 120 may blur portions of the image more than once.
- graphics application 120 may be configured to first blur background pixel values prior to converting them from RGB to YUV and again after the luminance adjustment to soften any hard transitions created by the adjustment. Adjusting the luminance values may introduce hard or harsh transitions between pixels, such as when one pixel's luminance value ends up high (e.g., 0.8) while a neighboring pixel's luminance value ends up low (e.g., 0.2).
- graphics application 120 may not actually update the background image, but instead may first copy pixel values from portions of the background image at and around the location at which the foreground image will be displayed to a separate compositing window and blur those pixel values.
- graphics application 120 may blur various portions of the image before or after converting pixel values to YUV.
- blurring may be performed at various stages of generating the foreground image but generally prior to masking out the foreground image so as to ensure that the blurring does not obliterate the edge of the foreground image.
- graphics application 120 may be configured to blur the foreground image by scaling, such as via interpolation, a lower resolution version of the same image.
- any method of blurring portions of the foreground image may be utilized by graphics application 120 , according to various embodiments.
- dynamic luminance-based color contrasting may be performed without any blurring at all.
- graphics application 120 may be configured to anti-alias the edges of the foreground image, such as to create a soft transition between the foreground and background portions of the overall image.
- Anti-aliasing is frequently described as a technique for minimizing jagged or blocky patterns (called aliasing) in an image. While in some embodiments, only pixels that are part of the foreground image may be anti-aliased, in other embodiments, pixels of both the foreground and background images may be anti-aliased.
- an anti-aliased line may be a line with varying opacity along the edge in order to represent partial coverage of underlying pixels.
- graphics application 120 may be configured to smooth or anti-alias pixels at the edges of the foreground image.
- the anti-aliasing may be performed at the same time as blending or compositing the final foreground image with the background.
- graphics application 120 may be configured to convert the foreground image back into RGB color space and then blend the foreground image with the background—including anti-aliasing the edges.
- graphics application 120 may be configured to not convert the pixel information back to RGB color space. Instead, graphics application 120 may be configured to use the new luminance value for each of the red, green and blue color components and therefore have a grayscale foreground image, such as a grayscale cursor. In other words, if the new luminance or brightness values for a pixel of the foreground image is used for the red, green and blue color values, the resulting pixel would have red, green and blue color components of equal value, hence a value of gray. In some embodiments a grayscale foreground image may still be blended with the background, including anti-aliasing.
- any of various formulae may be used to convert the pixel information back to RGB color space.
- the following formulae illustrate one method for converting YUV pixel information to RGB pixel information, according to one embodiment.
- the contents of the compositing window may be blended with the background image to display the full, final image.
- FIGS. 4A and 4B illustrate enlarged detail images of a foreground circle drawn over a varying grayscale background, according to one embodiment.
- a portion of foreground circle is illustrated over a striped grayscale background.
- FIG. 4A illustrates luminance-based contrasting, as described herein, but without any blurring of the image.
- FIG. 4B illustrates the same circle but with blurring. Comparing location 410 of FIG. 4A with location 420 of FIG. 4B , the effect of blurring the foreground image is illustrated, according to one embodiment.
- the luminance values of the background image may be adjusted in the foreground image for contrast, as illustrated at location 410 .
- the foreground pixels have been adjusted to have luminance values noticeably different from the luminance value of nearby background pixels.
- the foreground circle includes stripes that coincide with, but of different luminance value than, the stripes in the background.
- the foreground image in FIG. 4B has been blurred to smooth out the color changes caused by the luminance-based contrasting, according to one embodiment.
- the foreground image has been blurred to remove the stripes illustrated in FIG. 4A .
- some pixels may not contrast as heavily against nearby background pixels as they did before blurring, blurring may resulting a more eye-pleasing overall image, according to some embodiments.
- the foreground image such as a cursor
- FIGS. 4A and 4B illustrate anti-aliasing performed on the edges of the foreground circle, as described above.
- FIG. 5 is a flowchart illustrating one embodiment of a method for dynamic, luminance-based contrasting of colors, as described herein.
- graphics application 120 may be configured to display a dynamic foreground image, such as a cursor, a bounding rectangle around a user-selected region, floating text, or other dynamic foreground image elements.
- graphics application 120 may include functionality allowing a user to create and/or manipulate images.
- graphics applications allow the user to select or indicate regions of an image using dynamic foreground elements, such as by using a “rubber-banding” tool to draw a boundary line around a selected region of the image.
- graphics application 120 may be configured to use various techniques, such as luminance-based color contrasting, blurring, blending and/or anti-aliasing, when generating and displaying the foreground image (e.g., a cursor, bounding rectangle, or rubber-banding line).
- various techniques such as luminance-based color contrasting, blurring, blending and/or anti-aliasing, when generating and displaying the foreground image (e.g., a cursor, bounding rectangle, or rubber-banding line).
- graphics application 120 may be configured to convert pixel information of a background image from RGB color space to YUV (or another luminance isolating color space) according to a mask of a foreground image, according to one embodiment.
- graphics application 120 may use a mask defining the shape of the foreground image to determine which pixels to convert to YUV color space.
- graphics application 120 may convert those pixels under and around where the foreground image will be displayed to YUV color space.
- graphics application 120 may blur portions of the image prior to performing the RGB to YUV conversion, as described above.
- graphics application 120 may adjust the luminance values for the converted pixels, as illustrated by block 520 , to generate contrast between the pixels of the foreground image and nearby or surrounding background pixels. Please note that graphics application 120 is generating the color information for the foreground image by adjusting the luminance value of the background pixel at the same location. Thus, as illustrated in FIGS. 3A and 3B , discussed above, the colors of the foreground image may be in the same hue as the background pixels below, but with a different luminance or brightness.
- graphics application 120 may adjust the luminance by adding a scalar or offset, using modulo arithmetic, to the current luminance value of a pixel. Due to the use of modulo arithmetic, some pixels may end up brighter than they were and others may end up darker. For instance, graphics application 120 may, in one embodiment, add, using modulo arithmetic, 0.5 to the current luminance value of pixels. Therefore a pixel with a current luminance value of 0.4 would end up with a brighter luminance value of 0.9, while a pixel with a current luminance value of 0.8 would end up with a darker luminance value of 0.3. Please note that in other embodiments, graphics application 120 may be configured to adjust luminance values in other manners.
- Graphics application 120 may also be configured to blur the pixel information of the foreground image, as indicated by block 540 .
- any of various types of blurring functions or filters may be used by graphics application 120 , according to different embodiments.
- graphics application 120 may apply a Gaussian blur to the foreground image pixels.
- graphics application 120 may apply a box blur one or more times to the foreground image pixels.
- a lower resolution version of the same foreground image may be scaled and/or interpolated in order to blur the pixels.
- graphics application 120 may blur both before converting the pixel values to YUV and after adjusting the luminance values, according to some embodiments.
- graphics application 120 may be configured to blur pixels only prior to converting the pixel to YUV. Additionally, in some embodiments, graphics application 120 may not perform any blurring at all.
- graphics application 120 may be configured to convert the pixels back to the RGB color space, as described above.
- graphics application 120 may be configured to utilize a graphics processor, such as GPU 1040 , which performs various graphics techniques using RGB color space. Therefore, in some embodiments, graphics application 120 may convert the luminance adjusted and blurred pixels back to RGB space in order to blend the foreground pixels with the background pixels, as illustrated by block 580 .
- graphics application 120 may be configured to use alpha or opacity information for the pixels of the foreground and background images for the blending. For instance, as noted above, alpha information for a pixel may represent the relative opacity (or transparency) of the pixel compared to other pixels.
- graphics application 120 may be configured to take into account the respective alpha values for each pixel when determining how much color from each source pixel contributes to the color of the resulting pixel. For example, if the alpha values for the foreground pixels are 0.5, indicating half opacity, portions of the background image may be visible though the foreground image. Conversely, if the alpha values for the foreground pixels are 1.0, indicating full opacity, the foreground pixels may completely replace the background pixels during blending. Graphics application 120 may utilize the alpha information for various effects in the final image. For example, in one embodiment, the inner part of a cursor may be solid while the edges get progressively transparent.
- the inner portion of a cursor may be transparent while the edges may be opaque.
- different foreground images may be blended onto the background using different levels of alpha.
- an application that allows multiple people to collaborate across the Internet may, in one embodiment, display different people's cursors using different alpha values.
- the cursor of the collaboration leader may be displayed more opaquely than others.
- each person's computer may display the local cursor opaquely, but display the other collaborators'cursors more transparently, according to various embodiments.
- graphics application 120 may be configured to utilize a pixel shader, such as may be implemented on GPU 1040 to perform the blending.
- a graphics processing unit or GPU such as GPU 1040
- GPU 1040 is a dedicated graphics-rendering device for a personal computer, workstation or game console.
- Modern GPUs may be very efficient at manipulating and displaying computer graphics and their highly parallel structure may make them more effective than typical central processing units (CPUs) for a range of complex graphical algorithms.
- CPUs central processing units
- a GPU may implement a number of graphics primitive operations in a way that makes executing them must faster than drawing directly to the screen with the host CPU.
- Many GPUs have programmable shading as part of their capabilities.
- each pixel may be processed by a short program that could include additional image textures as inputs, and each geometric vertex could likewise be processed by a short program before it was projected onto the screen.
- These pixel and vertex programs may be called ‘shaders’ and may implement looping and lengthy floating-point math, and in general are quickly becoming as flexible as CPUs and orders of magnitude faster for image-array operations.
- GPUs may include support for programmable shaders that can manipulate and vertices and textures with many of the same operations supported by CPUs, oversampling and interpolation techniques to reduce aliasing, and very high-precision color spaces.
- OpenGL pseudo code represents one possible implementation of a pixel shader program for performing the method described above regarding FIG. 5 :
- graphics application 120 may convert the pixels back to RGB color space
- graphics application 120 may be configured to use the new luminance values for the pixels as the RGB values of the pixels for blending purposes.
- graphics application 120 may blend the foreground image with the background image using the adjusted luminance value of a pixel as the red, green and blue color components for that pixel, resulting in a grayscale foreground image.
- Luminance-based color contrasting may be implemented on various types of computer systems.
- computer system 1000 may be any of various types of devices, including, but not limited to, a personal computer system, desktop computer, laptop or notebook computer, mainframe computer system, handheld computer, workstation, network computer, a consumer device, video game console, handheld video game device, application server, storage device, a peripheral device such as a switch, modem, router, or in general any type of computing device.
- Graphics application 120 described herein may be provided as a computer program product, or software, that may include a computer-readable storage medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to implement luminance-based color contrasting, as described herein.
- a computer-readable storage medium includes any mechanism for storing information in a form (e.g., software, processing application) readable by a machine (e.g., a computer).
- the machine-readable storage medium may include, but is not limited to, magnetic storage medium (e.g., floppy diskette); optical storage medium (e.g., CD-ROM); magneto optical storage medium; read only memory (ROM); random access memory (RAM); erasable programmable memory (e.g., EPROM and EEPROM); flash memory; electrical, or other types of medium suitable for storing program instructions.
- program instructions may be communicated using optical, acoustical or other form of propagated signal (e.g., carrier waves, infrared signals, digital signals, or other types of signals or mediums.).
- a computer system 1000 may include a processor unit (CPU) 1030 (possibly including multiple processors, a single threaded processor, a multi-threaded processor, a multi-core processor, or other type of processor).
- the computer system 1000 may also include one or more system memories 1010 (e.g., one or more of cache, SRAM DRAM, RDRAM, EDO RAM, DDR RAM, SDRAM, Rambus RAM, EEPROM, or other memory type), an interconnect 1040 (e.g., a system bus, LDT, PCI, ISA, or other bus type), and a network interface 1050 (e.g., an ATM interface, an Ethernet interface, a Frame Relay interface, or other interface).
- system memories 1010 e.g., one or more of cache, SRAM DRAM, RDRAM, EDO RAM, DDR RAM, SDRAM, Rambus RAM, EEPROM, or other memory type
- an interconnect 1040 e.g., a system bus, LDT, PCI, ISA
- the memory medium 1010 may include other types of memory as well, or combinations thereof.
- the CPU 1030 , the network interface 1050 , and the memory 1010 may be coupled to the interconnect 1040 . It should also be noted that one or more components of system 1000 might be located remotely and accessed via a network.
- One or more of the memories 1010 may embody a graphics application 120 .
- memory 1010 may include program instructions configured to implement graphics application 120 , as described herein.
- Graphics application 120 may be implemented in any of various programming languages or methods.
- graphics application 120 may be JAVA based, while in another embodiments, it may be implemented using the C or C++ programming languages.
- graphics application 120 may be implemented using specific graphic languages specifically for developing programs executed by specialize graphics hardware, such as GPU 1040 .
- graphics application 120 may be embodied on memory specifically allocated for use by graphics processor(s) 1040 , such as memory on a graphics board including graphics processor(s) 1040 .
- memory 1010 may represent dedicated graphics memory as well as general-purpose system RAM.
- Network interface 1040 may be configured to enable computer system 1000 to communicate with other computers, systems or machines, such as across network 100 , described above.
- Network interface 1040 may use standard communications technologies and/or protocols.
- Network 100 may include, and network interface 1040 may utilize, links using technologies such as Ethernet, 802.11, integrated services digital network (ISDN), digital subscriber line (DSL), and asynchronous transfer mode (ATM) as well as other communications technologies.
- the networking protocols used on network 100 may include multiprotocol label switching (MPLS), the transmission control protocol/Internet protocol (TCP/IP), the User Datagram Protocol (UDP), the hypertext transport protocol (HTTP), the simple mail transfer protocol (SMTP), and the file transfer protocol (FTP), among other network protocols.
- MPLS multiprotocol label switching
- TCP/IP transmission control protocol/Internet protocol
- UDP User Datagram Protocol
- HTTP hypertext transport protocol
- SMTP simple mail transfer protocol
- FTP file transfer protocol
- the data exchanged over network 100 by network interface 1040 may be represented using technologies, languages, and/or formats, such as the hypertext markup language (HTML), the extensible markup language (XML), and the simple object access protocol (SOAP) among other data representation technologies. Additionally, all or some of the links or data may be encrypted using any suitable encryption technologies, such as the secure sockets layer (SSL), Secure HTTP and/or virtual private networks (VPNs), the international data encryption standard (DES or IDEA), triple DES, Blowfish, RC2, RC4, RC5, RC6, as well as other data encryption standards and protocols. In other embodiments, custom and/or dedicated data communications, representation, and encryption technologies and/or protocols may be used instead of, or in addition to, the particular ones described above.
- SSL secure sockets layer
- VPNs virtual private networks
- DES or IDEA international data encryption standard
- triple DES Blowfish
- Blowfish RC2, RC4, RC5, RC6, as well as other data encryption standards and protocols.
- GPUs such as GPU 1040 may be implemented in a number of different physical forms.
- GPU 1040 may take the form of a dedicated graphics card, an integrated graphics solution and/or a hybrid solution.
- GPU 1040 may interface with the motherboard by means of an expansion slot such as PCI Express Graphics or Accelerated Graphics Port (AGP) and thus may be replaced or upgraded with relative ease, assuming the motherboard is capable of supporting the upgrade.
- AGP Accelerated Graphics Port
- a dedicated GPU is not necessarily removable, nor does it necessarily interface the motherboard in a standard fashion.
- the term “dedicated” refers to the fact that hardware graphics solution may have RAM that is dedicated for graphics use, not to whether the graphics solution is removable or replaceable.
- memory 1010 may represent any of various types and arrangements of memory, including general-purpose system RAM and/or dedication graphics or video memory.
- Integrated graphics solutions, or shared graphics solutions are graphics processors that utilize a portion of a computer's system RAM rather than dedicated graphics memory.
- modern desktop motherboards normally include an integrated graphics solution and have expansion slots available to add a dedicated graphics card later.
- a GPU may be extremely memory intensive, an integrated solution finds itself competing for the already slow system RAM with the CPU as the integrated solution has no dedicated video memory.
- system RAM may experience a bandwidth between 2 GB/s and 8 GB/s, while most dedicated GPUs enjoy from 15 GB/s to 30 GB/s of bandwidth.
- Hybrid solutions also share memory with the system memory, but have a smaller amount of memory on-board than discrete or dedicated graphics cards to make up for the high latency of system RAM.
- Data communicated between the graphics processing unit and the rest of the computer may travel through the graphics card slot or other interface, such as interconnect 1040 of FIG. 2 .
- graphics application 100 has been described herein with reference to various embodiments, it will be understood that these embodiments are illustrative and that the scope of the present invention is not limited to them. Many variations, modifications, additions, and improvements are possible. More generally, the present invention is described in the context of particular embodiments. For example, the blocks and logic units identified in the description are for ease of understanding and not meant to limit the invention to any particular embodiment. Functionality may be separated or combined in blocks differently in various realizations or described with different terminology.
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Processing (AREA)
Abstract
Description
- 1. Field of the Invention
- The present invention is directed to computer systems. More particularly, it is directed to graphical image processing.
- 2. Description of the Related Art
- Traditionally, dynamic foreground image elements, such as cursors or user-defined bounding lines, are drawn using an XOR drawing mode that allows the same drawing function to both draw and erase the foreground image. XOR is a bitwise logical operation on two operands that results in a logical value of true if and only if one of the operands, but not both, has a value of true. The XOR operation is performed over each bit in the operands. Performing the same XOR operation on the same operands twice results in the original operands. Thus, when a cursor is drawn using an XOR mode, that cursor may be erased by drawing the same cursor again in the same location. When drawing foreground images using XOR, a foreground image is typically drawn into the frame buffer and therefore changes the actual background image accordingly. Thus, the background image must be restored whenever the foreground image is to be erased. However, XOR-based cursor drawing frequently causes color shifts that may interfere with the overall look of the image and that may also cause a user difficulty when working with an image, such as in a graphics or image drawing application.
- When using XOR drawing, in order to ensure contrast between a foreground image element, such as a cursor, and the background, generally a double edge, one black and one white is used with the XOR drawing so that the edge of the cursor is visible over varying background colors. However, using such a double edge may increase the amount of the background image that is being covered by the foreground image element.
- A traditional black-over XOR is performed by XORing all 1s over an image. For example, in an 8-bit deep frame buffer using RGBX representation (alpha in the frame buffer is generally ignored) if the overlay value at a location x,y is set, then pixel x,y is set to pixel x,y XOR 0xFFFFFF00.
- AddOver is a variant of XOR that uses 0x80 instead of 0xFF per component. When using AddOver parts that are XORed with 0x80 are guaranteed to always change. AddOver can be thought of as “if (r<½ intensity) r+=half intensity else f −=half intensity.” Like XOR, AddOver may generate color shifts and must be performed a second time undo or erase the effects of a first AddOver operation.
- Dynamic foreground images, such as cursors, bounding lines, shapes, and text may be displayed over an image by selecting the actual color values for the individual pixels of the foreground image to have high contrast in comparison to the surrounding background pixels. In order to select high-contrast colors, the background pixels with which the foreground pixels should contrast may first be converted from a non-luminance-isolating color space, such as a red-green-blue (RGB) color space, to a luminance isolating color space, such as YUV, HSL, or the like. In general, graphics hardware systems, such as graphics processors (GPUs) work with pixel color information in the non-luminance-isolating color space. Only pixels around and behind where the foreground image will be displayed may be converted, according to one embodiment. By converting the pixel information into a luminance isolating color space, the luminance or brightness of pixels can be adjusted (thereby adjusting the contrast between the foreground and background pixels) without cause unnecessary color shifts. As noted above, dynamic foreground images, such as cursors, are traditionally drawn using an XOR drawing mode that allows the same drawing function to both draw and erase the foreground image. However, XOR-based cursor drawing frequently causes color shifts that may interfere with the overall look of the image and that may also cause a user difficulty when working with an image, such as in a graphics or image drawing application.
- In some embodiments, the converted pixel information is copied, stored, or drawn into a separate compositing or layered window. By using a separate compositing or layered window, the foreground image information may be blended or composited with the background image information and the resultant blending may be displayed, printed, etc., the background image information has not actually be modified and therefore no saving and restoring of background pixel information is required to update the foreground image, such as when a cursor is moving across and image.
- After converting the pixel information from the non-luminance-isolating color space, such as RGB, to the luminance isolating color space, the luminance of the pixel information may be adjusted to increase the contrast between the foreground image and the background image. In some embodiments, the luminance values may be adjusted by using modulo arithmetic to add 0.5 to the current luminance value. Please note that by using modulo arithmetic, the resulting new luminance value is guaranteed to be between 0 and 1. In some embodiments, pixel information of portions of the background image may also be blurred, such as by applying a Gaussian or box blur, such as to soften the edges of the foreground image.
- The pixel information may then be converted back into the non-luminance-isolating color space, according to some embodiments. The pixel information of the foreground image may then be combined, composited or blended with the background image to display the foreground image. The blending may be performed using alpha information for the foreground and/or background images. Such blending may result in a partially transparent foreground image in some embodiments. Additionally, the alpha blending may result in anti-aliasing edge pixels of the foreground image. Such anti-aliasing may make the final display of the foreground image more pleasing to the eye, such as by removing jagged and/or blocky patterns in the image. Additionally, such anti-aliasing may help minimize the amount of the background image obscured by the foreground image.
-
FIG. 1 is an image illustrating XOR based drawing of a foreground image on top of a background image, according to the prior art. -
FIG. 2 is block diagram illustrating one embodiment of a computer system capable of implementing dynamically contrasting colors in a region of interest, as described herein. -
FIGS. 3A-3F are images illustrating dynamic luminance-based contrasting of colors, according to one embodiment. -
FIGS. 4A and 4B are images illustrating the drawing of temporary foreground images including anti-aliasing and blurring, as described herein, according to one embodiment. -
FIG. 5 is a flowchart illustrating one embodiment of a method for dynamic, luminance-based contrasting of colors, as described herein. - While the invention is described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that the invention is not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present invention as defined by the appended claims. Any headings used herein are for organizational purposes only and are not meant to limit the scope of the description or the claims. As used herein, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include”, “including”, and “includes” mean including, but not limited to.
- As described above, traditionally cursors and other dynamic foreground images are drawing using an XOR drawing mode.
FIG. 1 is an image illustrating a circle drawn over a landscape background using an XOR drawing mode, according to the prior art. As can be seen inFIG. 1 , the XOR drawing may result in color changes or shifts depending upon the exact color of the background and foreground at any particular pixel. While the XOR drawing illustrated inFIG. 1 may result in contrasting colors for the circle, the color changes from one area of the circle to another may cause the overall image to be visually disturbing, not pleasing to the eye, or even wrong. Such color shifts (also called chroma shifts or chroma crawling) may even interfere with a user's perception of the colors in the background image. For example, if a user is adjusting the colors of the background image the cursor used to select pixels of the background image for adjustment may include various colors and color shifts and thus may interfere with the user's color corrections. - Additionally, redrawing the same foreground image in the same location using XOR generally erases a foreground image drawn with XOR. However, if something is drawn to the background at the same location as the foreground image while the foreground image is visible, re-drawing the foreground image will not fully erase the foreground image, but instead alter the background image.
- As described above, cursors and other foreground image may be drawn to a separate compositing or layered window, according to some embodiments. Large complex images may be defined using layers. Layers are independent images that can be manipulated as if each layer were an independent image. Each layer only forms a part of the final image. Layers are like transparencies stacked one on top of one another. Each layer may have different objects, images and effects. Layers allow users to work on separate images in order to modify sections without changing the entire image. When the layers are stacked, the images appear as if they are all a single image. The final image will be made up from all of the layers within the image depending on the order of the layers.
- When drawing to a separate compositing or layered window, the actual pixel information of the background image in the frame buffer is not actually modified to display the foreground image. Instead, a compositing mechanism provided by a graphics system, GPU, or operating system may be used to composite the foreground image in the layered window with the background image for on-screen display without actually modifying the underlying background pixel information, according to some embodiments. For example, when using a separate compositing or layered window to draw and update an onscreen cursor, the graphic application may dynamically calculate the contents of the window for each new location at which the cursor should be drawn.
- Please note that the term “foreground image”, as used herein, may refer to virtually any sort of image element being dynamically displayed over a background image, as described herein. For example, in one embodiment, the foreground image may be a cursor moved by a mouse or other input device. In other embodiments, a foreground image may represent a set of lines, curves or other geometric primitives. For example, a graphics program may allow a user to select a particular region of an image by specifying a bounding line (e.g., such as with a rubber-banding, or “lasso” tool) around the region. In yet other embodiments, the foreground image may represent text being displayed over a background image, such as extra information for a user. In general, dynamic, luminance-based color contrasting may be used with virtually any graphic information as a foreground image.
-
FIG. 2 is a block diagram illustrating one embodiments of acomputer system 1000 suitable for implementing the dynamically contrasting colors using luminance, as described herein. As noted above, a graphics application such asgraphics application 120 may be configured to render a foreground image using luminance to determine colors that contrast with the background onto which the foreground image is displayed. Additionally,graphics application 120 may also perform blurring, anti-aliasing and/or blending to display the foreground image, according to some embodiments.Graphics application 120 may also be configured to render the foreground image to a separate compositing or layered window rather than rendering the foreground image directly into the same frame buffer containing the background image. -
Graphics application 120 may represent various types of graphics applications, such as painting, publishing, photography, games, animation, and other applications. Additionally,graphics application 120 may utilize agraphics processor 1040 when rendering or displaying foreground images onto background images according to various embodiments. A graphics processing unit or GPU may be considered a dedicated graphics-rendering device for a personal computer, workstation, game console or other computer system. Modern GPUs may be very efficient at manipulating and displaying computer graphics and their highly parallel structure may make them more effective than typical CPUs for a range of complex graphical algorithms. For example,graphics processor 1040 may implement a number of graphics primitive operations in a way that makes executing them must faster than drawing directly to the screen with a host central processing unit (CPU), such asCPU 1030. Please note that functionality and/or features described herein as being part of, or performed by,graphics application 120 may, in some embodiments, be part of, or performed by, one or more graphics processors, such asgraphics processor 1040. As described above, in someembodiments graphics application 120 may be configured to render foreground images into a separate image layer or separate layered window. -
FIGS. 3A and 3B illustrate versions of an image including a foreground image (the circle) over a background image, according to some embodiments. As described above,graphics application 120 may be configured to draw a foreground image, such as the circle illustrated inFIGS. 3A and 3B , over the background image using luminance-based contrast, as described herein. For instance,graphics application 120 may first convert the pixel information of that region of the background image to be covered by the foreground image from an non-luminance-isolating color space to a luminance isolating color space. Please note that graphics systems and graphics processors generally work on RGB pixel information. Thus, in some embodiments, pixel information may be converted from an RGB color space to a luminance isolating color space, manipulated (e.g. increased contrast, blurred, anti-aliased, etc.), then converted back into the RGB color space before being displayed. Please note that in some embodiments,graphics application 120 may perform some manipulations on the foreground image after it has been converted back to the RGB color space. Please note that while described herein as converting from RGB to YUV, dynamic, luminance-based color contrasting may in general include converting pixel information from any non-luminance-isolating color space to any luminance-isolating color space, according to some embodiments. - When converting pixel information from the RGB color space to a luminance isolating color space,
graphics application 120 may first determine which pixels of the background to convert according to a mask of the foreground image. Such a mask may indicate the shape of the foreground image. Thus,graphics application 120 may use such a mask and the location where the foreground image is to be displayed to determine which pixels of the background image to use.Graphic application 120 may then convert the pixel information from RGB color space to a luminance isolating color space, such as the YUV color space. - The YUV model may define a color space in terms of one luminance and two chrominance components. The YUV color space may model human perception of color more closely than the standard RBG model generally used in computer graphics hardware. In the YUV color space, Y stands for the luminance component or the brightness, while U and V are the chrominance, or color, components. When converting a pixel from RGB to YUV, weighted values of the R, G, and B components are added together to produce a single Y component, representing the overall brightness, or luminance, of that pixel. The U component may be created by subtracting the Y from the original blue component of the pixel and scaling by some factor. The V component may be generated by subtracting the Y from the original R component and then scaling by a different factor. There are various formula for converting between RGB and YUV and for converting between RGB and other luminance isolating color spaces. While any of various luminance isolating color spaces may be used by
graphics application 120, in one embodiment,graphics application 120 may use a color space (such as YUV) that requires only a simple matrix multiplication to convert to and from RGB. Please note that while described herein regarding YUV color space, luminance-based contrasting may be performed using any of various luminance isolating color spaces. - The following set of formulas represent one possible way to convert a pixel's color information from RGB to YUV, according to some embodiments:
-
Y=+R*0.299+G*0.587+B*0.114 -
U=−R*0.147−G*0.289+B*0.436 -
V=+R*0.615−G*0.515−G*0.100 - Please note that after the conversion from RGB to YUV, the pixel information still represents the same color information, just using different components. After converting the pixel information from the RGB color space to YUV color space (or some other luminance isolating color space),
graphics application 120 may be configured to modify the luminance values for the pixels to increase the contrast with the surrounding background images. As illustrated inFIGS. 3A and 3B , the pixels of the foreground image (the circle) have been adjusted to contrast with the surrounding background pixels. Furthermore, since the contrast is created by adjusting the luminance or brightness of the pixels, the resulting pixels are still of similar color to the original background pixels, just of a different brightness. In other words, the portion of the foreground circle shown inFIG. 3A that is above the horizon is blue—like the background above the horizon, but of a different shade or brightness of blue. Similarly, the portion of the foreground circle shown below the horizon is not blue, but is white or light grey in contrast the to darker grey of the background. When compared to the circle in prior artFIG. 1 , the circles inFIGS. 3A and 3B do not have the jarring color shifts resulting from the traditional XOR drawing illustrated inFIG. 1 . - The amount by which the luminance of a pixel is adjusted may vary from embodiment to embodiment. In one embodiment, 0.5 is added to the luminance component using modulo arithmetic so that the resulting value will remain between 0 and 1. For example, if a pixel, after being converted to YUV color space, has a luminance (Y) component of 0.8,
graphics application 120 may, in one embodiment, add 0.5 to 0.8 using modulo arithmetic resulting in a new luminance value of 0.3. In other words, 0.5 added to 0.8 results in 1.3 that is then truncated by modulo arithmetic to contain only the fractional part of the result (i.e., 0.3). In other embodiments, other method for adjusting the luminance component of a pixel may be used. For instance, in one embodiment, the luminance value for a pixel may be set to either 0.0 or 1.0 depending on whether the pixel's original luminance value is less than or greater than a specified value. For example, the luminance value for a pixel may be set to 0.0 if the original luminance value is less than a “perceptual gray” value, such as 0.5 and if the pixel's luminance value is greater than the 0.5 perceptual gray, the pixel's luminance value may be set to 1.0, according to one embodiment. Additionally, other specified values may be used other than 0.5. For example, in some display systems, 0.5 may not represent a perceptual gray and therefore a value that does represent a perceptual gray may be used. - As noted above, the actual amount by which the luminance component is adjusted may vary from embodiment to embodiment. In some embodiments, the actual amount by which the luminance value is adjusted may be selected so as to ensure that there is a noticeable difference in luminance between the foreground image and the background image, as illustrated in
FIG. 3A . - In some embodiments, the amount by which the luminance of a pixel is adjusted by vary as the foreground image is displayed different times. For example,
graphics application 120 may be configured to animate a cursor as it is moved around the image by varying the amount by which the luminance is adjusted, according to one embodiment. In another embodiments, a foreground image may be animated by changing its luminance over a short period of time, such as to make a cursor or other foreground image stand out better against the background. In yet other embodiments,graphics application 120 may animate a cursor whenever the user has not moved the cursor for a specified amount of time, such as a few seconds. -
FIG. 3A illustrates a foreground circle drawn using luminance-based contrasting, as described above. In addition to adjusting the luminance to generate contrast,graphics application 120 may also be configured to further manipulate the pixel information of the foreground image to further enhance the final, resulting image. For instance, as noted above,graphics application 120 may also blur and or anti-alias portions of the image, as illustrated inFIG. 3B .FIGS. 3C and 3D illustrate enlarged views of a portion of the image inFIGS. 3A and 3B , respectively. A comparison oflocation 330 inFIG. 3C andlocation 335 inFIG. 3D illustrates the effect of blurring the image.Graphics application 120 may be configured to blur those portions of the background image that are near an edge of foreground image, as illustrated atlocation 335 inFIG. 3D . Thus, in some embodiments,graphics application 120 may convert portions of the background image near, not just directly under, the location of the foreground image to YUV. - In some embodiments,
graphics application 120 may be configured to apply a Gaussian blur to portions of the image, while in other embodiments other type of blurring may be used. For example, a box blur may be utilized in some embodiments. A box blur is an image filter in which each pixel in the resulting image has a value equal to the average value of its neighboring pixels in the input image. It is a form of low-pass (“blurring”) filter and is a convolution. Due to its property of using equal weights it can be implemented using a much simpler accumulation algorithm that is significantly faster than using a sliding window algorithm. Box blurs are frequently used to approximate a Gaussian blur. If applied 3 times on the same image it approximates the Gaussian kernel to within about 3%, error yielding the same result as a quadratic convolution kernel. -
Graphics application 120 may be configured to blur different areas of an image, according to various embodiments. For example, in one embodiment,graphics application 120 may blur the background pixel values prior to converting them to YUV, such as to reduce the effect of noise in the background image on the foreground image or to reduce the positional sensitivity of the item. In another embodiment,graphics application 120 may blur the adjusted luminance values before converting them back to RGB, such as to generate a more pleasing transition within the foreground image while retaining sharp edges. - In some embodiments,
graphics application 120 may blur portions of the image more than once. For example, in one embodiment,graphics application 120 may be configured to first blur background pixel values prior to converting them from RGB to YUV and again after the luminance adjustment to soften any hard transitions created by the adjustment. Adjusting the luminance values may introduce hard or harsh transitions between pixels, such as when one pixel's luminance value ends up high (e.g., 0.8) while a neighboring pixel's luminance value ends up low (e.g., 0.2). - Please note
graphics application 120 may not actually update the background image, but instead may first copy pixel values from portions of the background image at and around the location at which the foreground image will be displayed to a separate compositing window and blur those pixel values. In general,graphics application 120 may blur various portions of the image before or after converting pixel values to YUV. In some embodiment, blurring may be performed at various stages of generating the foreground image but generally prior to masking out the foreground image so as to ensure that the blurring does not obliterate the edge of the foreground image. - In yet another embodiment,
graphics application 120 may be configured to blur the foreground image by scaling, such as via interpolation, a lower resolution version of the same image. In general any method of blurring portions of the foreground image may be utilized bygraphics application 120, according to various embodiments. Please note however that in some embodiments, dynamic luminance-based color contrasting may be performed without any blurring at all. - Additionally, as illustrated by
FIGS. 3E and 3F ,graphics application 120 may be configured to anti-alias the edges of the foreground image, such as to create a soft transition between the foreground and background portions of the overall image. Anti-aliasing is frequently described as a technique for minimizing jagged or blocky patterns (called aliasing) in an image. While in some embodiments, only pixels that are part of the foreground image may be anti-aliased, in other embodiments, pixels of both the foreground and background images may be anti-aliased. For example, an anti-aliased line may be a line with varying opacity along the edge in order to represent partial coverage of underlying pixels. As will be discussed in more detail below,graphics application 120 may be configured to smooth or anti-alias pixels at the edges of the foreground image. In one embodiment, the anti-aliasing may be performed at the same time as blending or compositing the final foreground image with the background. Thus, in some embodiments,graphics application 120 may be configured to convert the foreground image back into RGB color space and then blend the foreground image with the background—including anti-aliasing the edges. - In some embodiments,
graphics application 120 may be configured to not convert the pixel information back to RGB color space. Instead,graphics application 120 may be configured to use the new luminance value for each of the red, green and blue color components and therefore have a grayscale foreground image, such as a grayscale cursor. In other words, if the new luminance or brightness values for a pixel of the foreground image is used for the red, green and blue color values, the resulting pixel would have red, green and blue color components of equal value, hence a value of gray. In some embodiments a grayscale foreground image may still be blended with the background, including anti-aliasing. - Any of various formulae may be used to convert the pixel information back to RGB color space. For instance, the following formulae illustrate one method for converting YUV pixel information to RGB pixel information, according to one embodiment.
-
R=Y+1.140*V -
G=Y−0.395*U−0.581*V -
B=Y+2.032*U - After converting the foreground image back into RGB color space, the contents of the compositing window may be blended with the background image to display the full, final image.
-
FIGS. 4A and 4B illustrate enlarged detail images of a foreground circle drawn over a varying grayscale background, according to one embodiment. InFIGS. 4A and 4B , a portion of foreground circle is illustrated over a striped grayscale background.FIG. 4A illustrates luminance-based contrasting, as described herein, but without any blurring of the image. In contrast,FIG. 4B illustrates the same circle but with blurring. Comparinglocation 410 ofFIG. 4A withlocation 420 ofFIG. 4B , the effect of blurring the foreground image is illustrated, according to one embodiment. As described above, the luminance values of the background image may be adjusted in the foreground image for contrast, as illustrated atlocation 410. Where the foreground circle crosses the darker background stripes, the foreground pixels have been adjusted to have luminance values noticeably different from the luminance value of nearby background pixels. Thus, the foreground circle includes stripes that coincide with, but of different luminance value than, the stripes in the background. - In contrast to
FIG. 4A , the foreground image inFIG. 4B has been blurred to smooth out the color changes caused by the luminance-based contrasting, according to one embodiment. Thus, atlocation 420, the foreground image has been blurred to remove the stripes illustrated inFIG. 4A . While, after blurring, some pixels may not contrast as heavily against nearby background pixels as they did before blurring, blurring may resulting a more eye-pleasing overall image, according to some embodiments. For example, after blurring the foreground image, such as a cursor, may not be as visually distracting as a non-blurred version of the same foreground image, as illustrated by FIGS. 4A and 4B. Additionally, bothFIGS. 4A and 4B illustrate anti-aliasing performed on the edges of the foreground circle, as described above. -
FIG. 5 is a flowchart illustrating one embodiment of a method for dynamic, luminance-based contrasting of colors, as described herein. As described above,graphics application 120 may be configured to display a dynamic foreground image, such as a cursor, a bounding rectangle around a user-selected region, floating text, or other dynamic foreground image elements. For example,graphics application 120 may include functionality allowing a user to create and/or manipulate images. Frequently graphics applications allow the user to select or indicate regions of an image using dynamic foreground elements, such as by using a “rubber-banding” tool to draw a boundary line around a selected region of the image. According to some embodiments,graphics application 120 may be configured to use various techniques, such as luminance-based color contrasting, blurring, blending and/or anti-aliasing, when generating and displaying the foreground image (e.g., a cursor, bounding rectangle, or rubber-banding line). - As illustrated by
block 500,graphics application 120 may be configured to convert pixel information of a background image from RGB color space to YUV (or another luminance isolating color space) according to a mask of a foreground image, according to one embodiment. Thus,graphics application 120 may use a mask defining the shape of the foreground image to determine which pixels to convert to YUV color space. Thus,graphics application 120 may convert those pixels under and around where the foreground image will be displayed to YUV color space. Please note that in some embodiments,graphics application 120 may blur portions of the image prior to performing the RGB to YUV conversion, as described above. - Once the pixel information is in YUV color space,
graphics application 120 may adjust the luminance values for the converted pixels, as illustrated byblock 520, to generate contrast between the pixels of the foreground image and nearby or surrounding background pixels. Please note thatgraphics application 120 is generating the color information for the foreground image by adjusting the luminance value of the background pixel at the same location. Thus, as illustrated inFIGS. 3A and 3B , discussed above, the colors of the foreground image may be in the same hue as the background pixels below, but with a different luminance or brightness. - As described above,
graphics application 120 may adjust the luminance by adding a scalar or offset, using modulo arithmetic, to the current luminance value of a pixel. Due to the use of modulo arithmetic, some pixels may end up brighter than they were and others may end up darker. For instance,graphics application 120 may, in one embodiment, add, using modulo arithmetic, 0.5 to the current luminance value of pixels. Therefore a pixel with a current luminance value of 0.4 would end up with a brighter luminance value of 0.9, while a pixel with a current luminance value of 0.8 would end up with a darker luminance value of 0.3. Please note that in other embodiments,graphics application 120 may be configured to adjust luminance values in other manners. -
Graphics application 120 may also be configured to blur the pixel information of the foreground image, as indicated byblock 540. As noted above, any of various types of blurring functions or filters may be used bygraphics application 120, according to different embodiments. For example, in oneembodiment graphics application 120 may apply a Gaussian blur to the foreground image pixels. In another embodiment,graphics application 120 may apply a box blur one or more times to the foreground image pixels. In yet another embodiment, a lower resolution version of the same foreground image may be scaled and/or interpolated in order to blur the pixels. As noted above,graphics application 120 may blur both before converting the pixel values to YUV and after adjusting the luminance values, according to some embodiments. In other embodiments,graphics application 120 may be configured to blur pixels only prior to converting the pixel to YUV. Additionally, in some embodiments,graphics application 120 may not perform any blurring at all. - In some embodiments,
graphics application 120 may be configured to convert the pixels back to the RGB color space, as described above. For example,graphics application 120 may be configured to utilize a graphics processor, such asGPU 1040, which performs various graphics techniques using RGB color space. Therefore, in some embodiments,graphics application 120 may convert the luminance adjusted and blurred pixels back to RGB space in order to blend the foreground pixels with the background pixels, as illustrated byblock 580. When blending the foreground pixels with the background pixels,graphics application 120 may be configured to use alpha or opacity information for the pixels of the foreground and background images for the blending. For instance, as noted above, alpha information for a pixel may represent the relative opacity (or transparency) of the pixel compared to other pixels. - When blending two pixels,
graphics application 120 may be configured to take into account the respective alpha values for each pixel when determining how much color from each source pixel contributes to the color of the resulting pixel. For example, if the alpha values for the foreground pixels are 0.5, indicating half opacity, portions of the background image may be visible though the foreground image. Conversely, if the alpha values for the foreground pixels are 1.0, indicating full opacity, the foreground pixels may completely replace the background pixels during blending.Graphics application 120 may utilize the alpha information for various effects in the final image. For example, in one embodiment, the inner part of a cursor may be solid while the edges get progressively transparent. In another embodiments, the inner portion of a cursor may be transparent while the edges may be opaque. Additionally, different foreground images may be blended onto the background using different levels of alpha. For instance, an application that allows multiple people to collaborate across the Internet may, in one embodiment, display different people's cursors using different alpha values. For example, the cursor of the collaboration leader may be displayed more opaquely than others. Alternatively, each person's computer may display the local cursor opaquely, but display the other collaborators'cursors more transparently, according to various embodiments. - When blending the foreground pixels with the background pixels,
graphics application 120 may be configured to utilize a pixel shader, such as may be implemented onGPU 1040 to perform the blending. As noted above, a graphics processing unit or GPU, such asGPU 1040, is a dedicated graphics-rendering device for a personal computer, workstation or game console. Modern GPUs may be very efficient at manipulating and displaying computer graphics and their highly parallel structure may make them more effective than typical central processing units (CPUs) for a range of complex graphical algorithms. For example, a GPU may implement a number of graphics primitive operations in a way that makes executing them must faster than drawing directly to the screen with the host CPU. Many GPUs have programmable shading as part of their capabilities. For example, each pixel may be processed by a short program that could include additional image textures as inputs, and each geometric vertex could likewise be processed by a short program before it was projected onto the screen. These pixel and vertex programs may be called ‘shaders’ and may implement looping and lengthy floating-point math, and in general are quickly becoming as flexible as CPUs and orders of magnitude faster for image-array operations. GPUs may include support for programmable shaders that can manipulate and vertices and textures with many of the same operations supported by CPUs, oversampling and interpolation techniques to reduce aliasing, and very high-precision color spaces. The following OpenGL pseudo code represents one possible implementation of a pixel shader program for performing the method described above regardingFIG. 5 : -
Uniform sampler2D SourceImage; Uniform sampler2D CursorTexture; Uniform float normalizedCursorX; Uniform float normalizedCursorY; void main(void) { vec4 yuvcolor; vec4 outcolor; vec2 cursorTextureOffset = gl_TexCoord[0].st − vec2(normalizedCursorX,normalizedCursorY); vec4 inColor = texture2D(SourceImage, gl_TexCoord[0].st); float cursorAlpha = texture2D(CursorTexture, cursorTextureOffset).r; // soften the image with a simple blur vec4 inColorTop = texture2D(SourceImage, gl_TexCoord[0].st+ vec2(0,−1))); vec4 inColorLeft = texture2D(SourceImage, gl_TexCoord[0].st+ vec2(−1,0)); vec4 inColorRight = texture2D(SourceImage, gl_TexCoord[0].st + vec2(1,0)); vec4 inColorBottom = texture2D(SourceImage, gl_TexCoord[0].st+ vec2(0,1)); vec4 blurColor = .125 * (inColor*4.0 + inColorTop + inColorLeft + inColorRight + inColorBottom); // Convert image to YUV yuvcolor.r = blurColor .r * 0.299 + blurColor .g * 0.587 + blurColor .b * 0.114; yuvcolor.g = − blurColor .r * 0.147 − blurColor .g * 0.289 + blurColor .b * 0.436; yuvcolor.b = blurColor .r * 0.615 − blurColor .g * 0.515 − blurColor .b* 0.100; // Roll intensity for contrasting visibility yuvcolor.5 r += 0.5; if (yuvcolor.r > 1.0) yuvcolor.r −= 1.0; // Back to RGB outcolor.r = yuvcolor.r + 1.140 * yuvcolor.b; outcolor.g = yuvcolor.r − 0.395 * yuvcolor.g − 0.581 * yuvcolor.b; outcolor.b = yuvcolor.r + 2.032 & yuvcolor.g; // use cursor alpha to select visility and anti-aliasing gl_FragColor = mix(incolor, outcolor, cursorAlpha); } - While in some embodiments, as described above,
graphics application 120 may convert the pixels back to RGB color space, in other embodiments,graphics application 120 may be configured to use the new luminance values for the pixels as the RGB values of the pixels for blending purposes. Thus, in some embodiments,graphics application 120 may blend the foreground image with the background image using the adjusted luminance value of a pixel as the red, green and blue color components for that pixel, resulting in a grayscale foreground image. - Luminance-based color contrasting, as described herein may be implemented on various types of computer systems. Referring again to
FIG. 2 ,computer system 1000 may be any of various types of devices, including, but not limited to, a personal computer system, desktop computer, laptop or notebook computer, mainframe computer system, handheld computer, workstation, network computer, a consumer device, video game console, handheld video game device, application server, storage device, a peripheral device such as a switch, modem, router, or in general any type of computing device. -
Graphics application 120 described herein may be provided as a computer program product, or software, that may include a computer-readable storage medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to implement luminance-based color contrasting, as described herein. A computer-readable storage medium includes any mechanism for storing information in a form (e.g., software, processing application) readable by a machine (e.g., a computer). The machine-readable storage medium may include, but is not limited to, magnetic storage medium (e.g., floppy diskette); optical storage medium (e.g., CD-ROM); magneto optical storage medium; read only memory (ROM); random access memory (RAM); erasable programmable memory (e.g., EPROM and EEPROM); flash memory; electrical, or other types of medium suitable for storing program instructions. In addition, program instructions may be communicated using optical, acoustical or other form of propagated signal (e.g., carrier waves, infrared signals, digital signals, or other types of signals or mediums.). - A
computer system 1000 may include a processor unit (CPU) 1030 (possibly including multiple processors, a single threaded processor, a multi-threaded processor, a multi-core processor, or other type of processor). Thecomputer system 1000 may also include one or more system memories 1010 (e.g., one or more of cache, SRAM DRAM, RDRAM, EDO RAM, DDR RAM, SDRAM, Rambus RAM, EEPROM, or other memory type), an interconnect 1040 (e.g., a system bus, LDT, PCI, ISA, or other bus type), and a network interface 1050 (e.g., an ATM interface, an Ethernet interface, a Frame Relay interface, or other interface). Thememory medium 1010 may include other types of memory as well, or combinations thereof. TheCPU 1030, thenetwork interface 1050, and thememory 1010 may be coupled to theinterconnect 1040. It should also be noted that one or more components ofsystem 1000 might be located remotely and accessed via a network. One or more of thememories 1010 may embody agraphics application 120. - In some embodiments,
memory 1010 may include program instructions configured to implementgraphics application 120, as described herein.Graphics application 120 may be implemented in any of various programming languages or methods. For example, in one embodiment,graphics application 120 may be JAVA based, while in another embodiments, it may be implemented using the C or C++ programming languages. In other embodiments,graphics application 120 may be implemented using specific graphic languages specifically for developing programs executed by specialize graphics hardware, such asGPU 1040. In addition,graphics application 120 may be embodied on memory specifically allocated for use by graphics processor(s) 1040, such as memory on a graphics board including graphics processor(s) 1040. Thus,memory 1010 may represent dedicated graphics memory as well as general-purpose system RAM. -
Network interface 1040 may be configured to enablecomputer system 1000 to communicate with other computers, systems or machines, such as across network 100, described above.Network interface 1040 may use standard communications technologies and/or protocols. Network 100 may include, andnetwork interface 1040 may utilize, links using technologies such as Ethernet, 802.11, integrated services digital network (ISDN), digital subscriber line (DSL), and asynchronous transfer mode (ATM) as well as other communications technologies. Similarly, the networking protocols used on network 100 may include multiprotocol label switching (MPLS), the transmission control protocol/Internet protocol (TCP/IP), the User Datagram Protocol (UDP), the hypertext transport protocol (HTTP), the simple mail transfer protocol (SMTP), and the file transfer protocol (FTP), among other network protocols. The data exchanged over network 100 bynetwork interface 1040 may be represented using technologies, languages, and/or formats, such as the hypertext markup language (HTML), the extensible markup language (XML), and the simple object access protocol (SOAP) among other data representation technologies. Additionally, all or some of the links or data may be encrypted using any suitable encryption technologies, such as the secure sockets layer (SSL), Secure HTTP and/or virtual private networks (VPNs), the international data encryption standard (DES or IDEA), triple DES, Blowfish, RC2, RC4, RC5, RC6, as well as other data encryption standards and protocols. In other embodiments, custom and/or dedicated data communications, representation, and encryption technologies and/or protocols may be used instead of, or in addition to, the particular ones described above. - GPUs, such as
GPU 1040 may be implemented in a number of different physical forms. For example,GPU 1040 may take the form of a dedicated graphics card, an integrated graphics solution and/or a hybrid solution.GPU 1040 may interface with the motherboard by means of an expansion slot such as PCI Express Graphics or Accelerated Graphics Port (AGP) and thus may be replaced or upgraded with relative ease, assuming the motherboard is capable of supporting the upgrade. However, a dedicated GPU is not necessarily removable, nor does it necessarily interface the motherboard in a standard fashion. The term “dedicated” refers to the fact that hardware graphics solution may have RAM that is dedicated for graphics use, not to whether the graphics solution is removable or replaceable. Dedicated GPUs for portable computers may be interfaced through a non-standard and often proprietary slot due to size and weight constraints. Such ports may still be considered AGP or PCI express, even if they are not physically interchangeable with their counterparts. As illustrated inFIG. 2 ,memory 1010 may represent any of various types and arrangements of memory, including general-purpose system RAM and/or dedication graphics or video memory. - Integrated graphics solutions, or shared graphics solutions are graphics processors that utilize a portion of a computer's system RAM rather than dedicated graphics memory. For instance, modern desktop motherboards normally include an integrated graphics solution and have expansion slots available to add a dedicated graphics card later. As a GPU may be extremely memory intensive, an integrated solution finds itself competing for the already slow system RAM with the CPU as the integrated solution has no dedicated video memory. For instance, system RAM may experience a bandwidth between 2 GB/s and 8 GB/s, while most dedicated GPUs enjoy from 15 GB/s to 30 GB/s of bandwidth.
- Hybrid solutions also share memory with the system memory, but have a smaller amount of memory on-board than discrete or dedicated graphics cards to make up for the high latency of system RAM. Data communicated between the graphics processing unit and the rest of the computer may travel through the graphics card slot or other interface, such as
interconnect 1040 ofFIG. 2 . - While graphics application 100 has been described herein with reference to various embodiments, it will be understood that these embodiments are illustrative and that the scope of the present invention is not limited to them. Many variations, modifications, additions, and improvements are possible. More generally, the present invention is described in the context of particular embodiments. For example, the blocks and logic units identified in the description are for ease of understanding and not meant to limit the invention to any particular embodiment. Functionality may be separated or combined in blocks differently in various realizations or described with different terminology.
- The embodiments described herein are meant to be illustrative and not limiting. Accordingly, plural instances may be provided for components described herein as a single instance. Boundaries between various components, operations and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of claims that follow. Finally, structures and functionality presented as discrete components in the exemplary configurations may be implemented as a combined structure or component. These and other variations, modifications, additions, and improvements may fall within the scope of the invention as defined in the claims that follow.
- Although the embodiments above have been described in detail, numerous variations and modifications will become apparent once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.
Claims (40)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/610,266 US7970206B2 (en) | 2006-12-13 | 2006-12-13 | Method and system for dynamic, luminance-based color contrasting in a region of interest in a graphic image |
PCT/US2007/087414 WO2008076816A2 (en) | 2006-12-13 | 2007-12-13 | Method and systems for dynamic, luminance-based color contrasting in a region of interest in a graphic image |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/610,266 US7970206B2 (en) | 2006-12-13 | 2006-12-13 | Method and system for dynamic, luminance-based color contrasting in a region of interest in a graphic image |
Publications (2)
Publication Number | Publication Date |
---|---|
US20080143739A1 true US20080143739A1 (en) | 2008-06-19 |
US7970206B2 US7970206B2 (en) | 2011-06-28 |
Family
ID=39526586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/610,266 Active 2030-04-27 US7970206B2 (en) | 2006-12-13 | 2006-12-13 | Method and system for dynamic, luminance-based color contrasting in a region of interest in a graphic image |
Country Status (2)
Country | Link |
---|---|
US (1) | US7970206B2 (en) |
WO (1) | WO2008076816A2 (en) |
Cited By (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080284915A1 (en) * | 2007-05-15 | 2008-11-20 | Figueroa Samuel A | Method and apparatus for adjusting chroma and luma for a video signal |
US20100054584A1 (en) * | 2008-08-28 | 2010-03-04 | Microsoft Corporation | Image-based backgrounds for images |
CN102158644A (en) * | 2009-12-25 | 2011-08-17 | 卡西欧计算机株式会社 | Image synthesizing apparatus and image synthesizing method |
WO2011134105A1 (en) * | 2010-04-29 | 2011-11-03 | Thomson Licensing | Method of processing an image |
US20120011280A1 (en) * | 2010-07-08 | 2012-01-12 | Arnon Gilboa | Method And System For Transforming Cursor Graphics Information |
CN101533512B (en) * | 2009-04-24 | 2012-05-09 | 西安电子科技大学 | Image region-of-interest automatic extraction method based on human visual attention system |
US20120306904A1 (en) * | 2011-06-02 | 2012-12-06 | Yoostar Entertainment Group, Inc. | Image processing |
US20130129206A1 (en) * | 2011-05-31 | 2013-05-23 | John W. Worthington | Methods and Apparatus for Improved Display of Foreground Elements |
US20140218476A1 (en) * | 2013-02-01 | 2014-08-07 | Autodesk, Inc. | Zebra Lights |
US8842913B2 (en) | 2007-03-09 | 2014-09-23 | Pixar | Saturation varying color space |
US20140294299A1 (en) * | 2013-03-28 | 2014-10-02 | Samsung Electronics Co., Ltd. | Image processing apparatus and method |
US8875035B2 (en) | 2009-05-29 | 2014-10-28 | Apple Inc. | Graphical representation of out-of-bound image selection |
US20140337753A1 (en) * | 2013-05-07 | 2014-11-13 | Brian McKellar | System and method for editing the appearance of a user interface |
US8942476B1 (en) * | 2007-03-09 | 2015-01-27 | Pixar | Saturation varying and lighting independent color color control for computer graphics |
US20150106755A1 (en) * | 2013-10-16 | 2015-04-16 | 3M Innovative Properties Company | Editing digital notes representing physical notes |
US20150176846A1 (en) * | 2012-07-16 | 2015-06-25 | Rational Aktiengesellschaft | Method for Displaying Parameters of a Cooking Process and Display Device for a Cooking Appliance |
US20160012622A1 (en) * | 2014-07-08 | 2016-01-14 | Samsung Display Co., Ltd. | Method of and apparatus for generating image that induces eye blinking of user, and computer-readable recording medium therefor |
US20160042550A1 (en) * | 2014-08-05 | 2016-02-11 | Qualcomm Incorporated | High order filtering in a graphics processing unit |
US9310983B2 (en) | 2013-10-16 | 2016-04-12 | 3M Innovative Properties Company | Adding, deleting digital notes from a group of digital notes |
US9412174B2 (en) | 2013-10-16 | 2016-08-09 | 3M Innovative Properties Company | Note recognition for overlapping physical notes |
US9524703B2 (en) | 2014-06-10 | 2016-12-20 | Samsung Display Co., Ltd. | Method of operating an electronic device providing a bioeffect image |
US20170039225A1 (en) * | 2015-08-03 | 2017-02-09 | Google Inc. | Establishment anchoring with geolocated imagery |
US9798436B2 (en) | 2010-07-08 | 2017-10-24 | Red Hat Israel, Ltd. | Remote computing with a low latency mouse mode |
US9852536B2 (en) | 2014-08-05 | 2017-12-26 | Qualcomm Incorporated | High order filtering in a graphics processing unit |
CN107871303A (en) * | 2016-09-26 | 2018-04-03 | 北京金山云网络技术有限公司 | A kind of image processing method and device |
US10175845B2 (en) | 2013-10-16 | 2019-01-08 | 3M Innovative Properties Company | Organizing digital notes on a user interface |
CN111275648A (en) * | 2020-01-21 | 2020-06-12 | 腾讯科技(深圳)有限公司 | Face image processing method, device and equipment and computer readable storage medium |
US20210097732A1 (en) * | 2019-09-30 | 2021-04-01 | Canon Kabushiki Kaisha | Information processing apparatus, information processing method, and storage medium |
WO2021057097A1 (en) * | 2019-09-26 | 2021-04-01 | 华为技术有限公司 | Image rendering and encoding method, and related apparatus |
CN112991366A (en) * | 2021-02-18 | 2021-06-18 | 广州光锥元信息科技有限公司 | Method and device for carrying out real-time chroma matting on image and mobile terminal |
WO2021184496A1 (en) * | 2020-03-17 | 2021-09-23 | 捷开通讯(深圳)有限公司 | Image fusion method and apparatus, storage medium and mobile terminal |
CN113625923A (en) * | 2020-05-06 | 2021-11-09 | 上海达龙信息科技有限公司 | Mouse processing method and device based on remote cloud desktop, storage medium and equipment |
CN113763496A (en) * | 2021-03-19 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | Image coloring method, device and computer readable storage medium |
CN114067004A (en) * | 2021-11-11 | 2022-02-18 | 长视科技股份有限公司 | Image processing method, image processing device, computer equipment and storage medium |
US11294530B2 (en) * | 2017-08-07 | 2022-04-05 | Microsoft Technology Licensing, Llc | Displaying a translucent version of a user interface element |
US20220172401A1 (en) * | 2020-11-27 | 2022-06-02 | Canon Kabushiki Kaisha | Image processing apparatus, image generation method, and storage medium |
US20220230594A1 (en) * | 2015-10-27 | 2022-07-21 | Samsung Electronics Co., Ltd. | Method for operating electronic device and electronic device for supporting the same |
CN114924824A (en) * | 2019-07-26 | 2022-08-19 | 武汉深之度科技有限公司 | Visual object blurring method, visual object rendering method and computing equipment |
US20230128982A1 (en) * | 2021-10-22 | 2023-04-27 | Charles Chungyohl Lee | Methods and systems for graphics texturing and rendering |
US11935215B2 (en) * | 2017-08-07 | 2024-03-19 | Imago Systems, Inc. | System and method for the visualization and characterization of objects in images |
US12148085B2 (en) * | 2022-10-24 | 2024-11-19 | Charles Chungyohl Lee | Methods and systems for graphics texturing and rendering |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9377991B1 (en) | 2009-02-13 | 2016-06-28 | Northwest Analytics, Inc. | System for applying privacy settings in connection with creating, storing, distributing, and editing mixed-media collections |
US8311355B2 (en) * | 2009-06-05 | 2012-11-13 | Apple Inc. | Skin tone aware color boost for cameras |
US8824859B2 (en) * | 2011-03-16 | 2014-09-02 | Cisco Technology Inc. | Adding watermarks to video content |
JP2013021607A (en) * | 2011-07-13 | 2013-01-31 | Ricoh Co Ltd | Image data processor, image forming apparatus, program and recording medium |
US8947449B1 (en) | 2012-02-21 | 2015-02-03 | Google Inc. | Color space conversion between semi-planar YUV and planar YUV formats |
US9952756B2 (en) | 2014-01-17 | 2018-04-24 | Intel Corporation | Dynamic adjustment of a user interface |
US9438910B1 (en) | 2014-03-11 | 2016-09-06 | Google Inc. | Affine motion prediction in video coding |
US10152804B2 (en) | 2015-02-13 | 2018-12-11 | Smugmug, Inc. | System and method for dynamic color scheme application |
US10257542B1 (en) * | 2015-03-25 | 2019-04-09 | Amazon Technologies, Inc. | Compression encoding of images |
DK179931B1 (en) | 2017-09-09 | 2019-10-11 | Apple Inc. | Devices, methods and graphical user interfaces for displaying an affordance on a background |
CN110456979B (en) * | 2017-09-09 | 2021-11-02 | 苹果公司 | Device, method and electronic device for displaying an affordance on a background |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6016137A (en) * | 1995-01-30 | 2000-01-18 | International Business Machines Corporation | Method and apparatus for producing a semi-transparent cursor on a data processing display |
US6263101B1 (en) * | 1995-09-01 | 2001-07-17 | Cerulean Colorization Llc | Filtering in picture colorization |
US20020063740A1 (en) * | 2000-11-30 | 2002-05-30 | Forlenza Randolph Michael | Method to unobscure vision caused by the mouse pointer positioning within a document being displayed by a computer system |
US20050179699A1 (en) * | 2000-07-21 | 2005-08-18 | Mitsubishi Denki Kabushiki Kaisha | Image display device employing selective or asymmetrical smoothing |
US7298383B2 (en) * | 2003-06-11 | 2007-11-20 | Agfa Healthcare | Method and user interface for modifying at least one of contrast and density of pixels of a processed image |
US7519236B2 (en) * | 2003-04-09 | 2009-04-14 | Arcsoft, Inc. | Image retrieval |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2327085A1 (en) * | 2000-11-30 | 2002-05-30 | Ibm Canada Limited-Ibm Canada Limitee | System and method for calculating parameters for a commerce system |
-
2006
- 2006-12-13 US US11/610,266 patent/US7970206B2/en active Active
-
2007
- 2007-12-13 WO PCT/US2007/087414 patent/WO2008076816A2/en active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6016137A (en) * | 1995-01-30 | 2000-01-18 | International Business Machines Corporation | Method and apparatus for producing a semi-transparent cursor on a data processing display |
US6263101B1 (en) * | 1995-09-01 | 2001-07-17 | Cerulean Colorization Llc | Filtering in picture colorization |
US20050179699A1 (en) * | 2000-07-21 | 2005-08-18 | Mitsubishi Denki Kabushiki Kaisha | Image display device employing selective or asymmetrical smoothing |
US7129959B2 (en) * | 2000-07-21 | 2006-10-31 | Mitsubishi Denki Kabushiki Kaisha | Image display device employing selective or asymmetrical smoothing |
US20020063740A1 (en) * | 2000-11-30 | 2002-05-30 | Forlenza Randolph Michael | Method to unobscure vision caused by the mouse pointer positioning within a document being displayed by a computer system |
US7519236B2 (en) * | 2003-04-09 | 2009-04-14 | Arcsoft, Inc. | Image retrieval |
US7298383B2 (en) * | 2003-06-11 | 2007-11-20 | Agfa Healthcare | Method and user interface for modifying at least one of contrast and density of pixels of a processed image |
Cited By (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9626774B2 (en) | 2007-03-09 | 2017-04-18 | Pixar | Saturation varying color space |
US8942476B1 (en) * | 2007-03-09 | 2015-01-27 | Pixar | Saturation varying and lighting independent color color control for computer graphics |
US8842913B2 (en) | 2007-03-09 | 2014-09-23 | Pixar | Saturation varying color space |
US20080284915A1 (en) * | 2007-05-15 | 2008-11-20 | Figueroa Samuel A | Method and apparatus for adjusting chroma and luma for a video signal |
US8947599B2 (en) * | 2007-05-15 | 2015-02-03 | Apple Inc. | Method and apparatus for adjusting chroma and luma for a video signal |
US8290252B2 (en) | 2008-08-28 | 2012-10-16 | Microsoft Corporation | Image-based backgrounds for images |
US20100054584A1 (en) * | 2008-08-28 | 2010-03-04 | Microsoft Corporation | Image-based backgrounds for images |
US8666156B2 (en) | 2008-08-28 | 2014-03-04 | Microsoft Corporation | Image-based backgrounds for images |
CN101533512B (en) * | 2009-04-24 | 2012-05-09 | 西安电子科技大学 | Image region-of-interest automatic extraction method based on human visual attention system |
US8875035B2 (en) | 2009-05-29 | 2014-10-28 | Apple Inc. | Graphical representation of out-of-bound image selection |
CN102158644A (en) * | 2009-12-25 | 2011-08-17 | 卡西欧计算机株式会社 | Image synthesizing apparatus and image synthesizing method |
US9076220B2 (en) | 2010-04-29 | 2015-07-07 | Thomson Licensing | Method of processing an image based on the determination of blockiness level |
WO2011134105A1 (en) * | 2010-04-29 | 2011-11-03 | Thomson Licensing | Method of processing an image |
US20120011280A1 (en) * | 2010-07-08 | 2012-01-12 | Arnon Gilboa | Method And System For Transforming Cursor Graphics Information |
US9684424B2 (en) * | 2010-07-08 | 2017-06-20 | Red Hat Israel, Ltd. | Transforming cursor graphics information |
US9798436B2 (en) | 2010-07-08 | 2017-10-24 | Red Hat Israel, Ltd. | Remote computing with a low latency mouse mode |
US8699815B2 (en) * | 2011-05-31 | 2014-04-15 | Adobe Systems Incorporated | Methods and apparatus for improved display of foreground elements |
US20130129206A1 (en) * | 2011-05-31 | 2013-05-23 | John W. Worthington | Methods and Apparatus for Improved Display of Foreground Elements |
US8823745B2 (en) * | 2011-06-02 | 2014-09-02 | Yoostar Entertainment Group, Inc. | Image processing based on depth information and color data of a scene |
US20120306904A1 (en) * | 2011-06-02 | 2012-12-06 | Yoostar Entertainment Group, Inc. | Image processing |
US10969111B2 (en) * | 2012-07-16 | 2021-04-06 | Rational Aktiengesellschaft | Method for displaying parameters of a cooking process and display device for a cooking appliance |
US20150176846A1 (en) * | 2012-07-16 | 2015-06-25 | Rational Aktiengesellschaft | Method for Displaying Parameters of a Cooking Process and Display Device for a Cooking Appliance |
US20140218476A1 (en) * | 2013-02-01 | 2014-08-07 | Autodesk, Inc. | Zebra Lights |
US9230364B2 (en) * | 2013-02-01 | 2016-01-05 | Autodesk, Inc. | Zebra lights |
US9613403B2 (en) * | 2013-03-28 | 2017-04-04 | Samsung Electronics Co., Ltd. | Image processing apparatus and method |
KR20140118031A (en) * | 2013-03-28 | 2014-10-08 | 삼성전자주식회사 | Image processing apparatus and method thereof |
US20140294299A1 (en) * | 2013-03-28 | 2014-10-02 | Samsung Electronics Co., Ltd. | Image processing apparatus and method |
KR102049080B1 (en) * | 2013-03-28 | 2020-01-08 | 삼성전자주식회사 | Image processing apparatus and method thereof |
US20140337753A1 (en) * | 2013-05-07 | 2014-11-13 | Brian McKellar | System and method for editing the appearance of a user interface |
US10175845B2 (en) | 2013-10-16 | 2019-01-08 | 3M Innovative Properties Company | Organizing digital notes on a user interface |
US9274693B2 (en) * | 2013-10-16 | 2016-03-01 | 3M Innovative Properties Company | Editing digital notes representing physical notes |
US10698560B2 (en) | 2013-10-16 | 2020-06-30 | 3M Innovative Properties Company | Organizing digital notes on a user interface |
US9310983B2 (en) | 2013-10-16 | 2016-04-12 | 3M Innovative Properties Company | Adding, deleting digital notes from a group of digital notes |
US20150106755A1 (en) * | 2013-10-16 | 2015-04-16 | 3M Innovative Properties Company | Editing digital notes representing physical notes |
US9412174B2 (en) | 2013-10-16 | 2016-08-09 | 3M Innovative Properties Company | Note recognition for overlapping physical notes |
US10325389B2 (en) * | 2013-10-16 | 2019-06-18 | 3M Innovative Properties Company | Editing digital notes representing physical notes |
US10296789B2 (en) | 2013-10-16 | 2019-05-21 | 3M Innovative Properties Company | Note recognition for overlapping physical notes |
US9524703B2 (en) | 2014-06-10 | 2016-12-20 | Samsung Display Co., Ltd. | Method of operating an electronic device providing a bioeffect image |
US20160012622A1 (en) * | 2014-07-08 | 2016-01-14 | Samsung Display Co., Ltd. | Method of and apparatus for generating image that induces eye blinking of user, and computer-readable recording medium therefor |
US9846955B2 (en) * | 2014-07-08 | 2017-12-19 | Samsung Display Co., Ltd. | Method and apparatus for generating image that induces eye blinking of user, and computer-readable recording medium therefor |
US9454841B2 (en) * | 2014-08-05 | 2016-09-27 | Qualcomm Incorporated | High order filtering in a graphics processing unit |
US9852536B2 (en) | 2014-08-05 | 2017-12-26 | Qualcomm Incorporated | High order filtering in a graphics processing unit |
US20160042550A1 (en) * | 2014-08-05 | 2016-02-11 | Qualcomm Incorporated | High order filtering in a graphics processing unit |
US20170039225A1 (en) * | 2015-08-03 | 2017-02-09 | Google Inc. | Establishment anchoring with geolocated imagery |
US10467284B2 (en) * | 2015-08-03 | 2019-11-05 | Google Llc | Establishment anchoring with geolocated imagery |
US11232149B2 (en) | 2015-08-03 | 2022-01-25 | Google Llc | Establishment anchoring with geolocated imagery |
US20220230594A1 (en) * | 2015-10-27 | 2022-07-21 | Samsung Electronics Co., Ltd. | Method for operating electronic device and electronic device for supporting the same |
CN107871303A (en) * | 2016-09-26 | 2018-04-03 | 北京金山云网络技术有限公司 | A kind of image processing method and device |
US11294530B2 (en) * | 2017-08-07 | 2022-04-05 | Microsoft Technology Licensing, Llc | Displaying a translucent version of a user interface element |
US11935215B2 (en) * | 2017-08-07 | 2024-03-19 | Imago Systems, Inc. | System and method for the visualization and characterization of objects in images |
CN114924824A (en) * | 2019-07-26 | 2022-08-19 | 武汉深之度科技有限公司 | Visual object blurring method, visual object rendering method and computing equipment |
WO2021057097A1 (en) * | 2019-09-26 | 2021-04-01 | 华为技术有限公司 | Image rendering and encoding method, and related apparatus |
US11882297B2 (en) | 2019-09-26 | 2024-01-23 | Huawei Technologies Co., Ltd. | Image rendering and coding method and related apparatus |
US11935155B2 (en) * | 2019-09-30 | 2024-03-19 | Canon Kabushiki Kaisha | Information processing apparatus, information processing method, and storage medium |
US20210097732A1 (en) * | 2019-09-30 | 2021-04-01 | Canon Kabushiki Kaisha | Information processing apparatus, information processing method, and storage medium |
CN111275648A (en) * | 2020-01-21 | 2020-06-12 | 腾讯科技(深圳)有限公司 | Face image processing method, device and equipment and computer readable storage medium |
WO2021184496A1 (en) * | 2020-03-17 | 2021-09-23 | 捷开通讯(深圳)有限公司 | Image fusion method and apparatus, storage medium and mobile terminal |
CN113625923A (en) * | 2020-05-06 | 2021-11-09 | 上海达龙信息科技有限公司 | Mouse processing method and device based on remote cloud desktop, storage medium and equipment |
US20220172401A1 (en) * | 2020-11-27 | 2022-06-02 | Canon Kabushiki Kaisha | Image processing apparatus, image generation method, and storage medium |
CN112991366A (en) * | 2021-02-18 | 2021-06-18 | 广州光锥元信息科技有限公司 | Method and device for carrying out real-time chroma matting on image and mobile terminal |
CN113763496A (en) * | 2021-03-19 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | Image coloring method, device and computer readable storage medium |
US20230128982A1 (en) * | 2021-10-22 | 2023-04-27 | Charles Chungyohl Lee | Methods and systems for graphics texturing and rendering |
CN114067004A (en) * | 2021-11-11 | 2022-02-18 | 长视科技股份有限公司 | Image processing method, image processing device, computer equipment and storage medium |
US12148085B2 (en) * | 2022-10-24 | 2024-11-19 | Charles Chungyohl Lee | Methods and systems for graphics texturing and rendering |
Also Published As
Publication number | Publication date |
---|---|
US7970206B2 (en) | 2011-06-28 |
WO2008076816A3 (en) | 2008-10-09 |
WO2008076816A2 (en) | 2008-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7970206B2 (en) | Method and system for dynamic, luminance-based color contrasting in a region of interest in a graphic image | |
US7817823B1 (en) | Calculating shadow from area light sources using a spatially varying blur radius | |
JP4598367B2 (en) | Method and apparatus for rendering subcomponent oriented characters in an image displayed on a display device | |
US6038031A (en) | 3D graphics object copying with reduced edge artifacts | |
JP5000526B2 (en) | Computer graphics processing | |
US7750922B2 (en) | Transparency group computation on a graphics processing unit | |
US7742060B2 (en) | Sampling methods suited for graphics hardware acceleration | |
US7542049B2 (en) | Hardware accelerated anti-aliased primitives using alpha gradients | |
US7889205B1 (en) | Frame buffer based transparency group computation on a GPU without context switching | |
JP5483893B2 (en) | Method and apparatus for processing computer graphics | |
US6396502B1 (en) | System and method for implementing accumulation buffer operations in texture mapping hardware | |
US8063914B1 (en) | Rendering antialiased geometry to an image buffer using jittering | |
US7825923B2 (en) | Full screen anti-aliasing with dynamic filters | |
KR101030825B1 (en) | Low-cost supersampling rasterization | |
US7679620B2 (en) | Image processing using saltating samples | |
KR20040011525A (en) | Drawing method | |
US7280117B2 (en) | Graphical user interface for a keyer | |
US20230298212A1 (en) | Locking mechanism for image classification | |
US11989807B2 (en) | Rendering scalable raster content | |
JP2023538828A (en) | Antialiasing for distance field graphics rendering | |
US11776179B2 (en) | Rendering scalable multicolored vector content | |
US20230298133A1 (en) | Super resolution upscaling | |
US20060055707A1 (en) | Graphical user interface for a keyer | |
KR20240163125A (en) | Ultra high resolution upscaling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: ADOBE SYSTEMS INCORPORATED, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HARRIS, JERRY G.;KRISHNASWAMY, ARAVIND;BYER, SCOTT;REEL/FRAME:018626/0957 Effective date: 20061213 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |
|
AS | Assignment |
Owner name: ADOBE INC., CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:ADOBE SYSTEMS INCORPORATED;REEL/FRAME:048867/0882 Effective date: 20181008 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 12 |