Local color range selection

Through combined weighting of space and range masks, the time-consuming and accuracy problems of local adjustment in existing tools are solved, and more efficient and accurate non-destructive image editing is achieved.

CN109671024BActive Publication Date: 2025-07-11ADOBE INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN201810928986.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2017-10-17
Filing Date
2018-08-15
Publication Date
2025-07-11
Estimated Expiration
2038-08-15

AI Technical Summary

Technical Problem

Existing digital image editing tools are time-consuming and have limited accuracy when adjusting locally, making it difficult to accurately edit in irregular boundary areas, and the editing process is prone to destructive changes.

Method used

Using a combination of spatial mask and range mask, the spatial mask specifies adjustment areas, and the range mask specifies color and tone ranges, non-destructive editing is achieved by weighting the parameter changes of each pixel.

Benefits of technology

Improve the accuracy and efficiency of local adjustments, reduce the workload, make the editing process reversible, and avoid destructive changes to the original image.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN109671024B_ABST
    Figure CN109671024B_ABST
Patent Text Reader

Abstract

Embodiments of the present disclosure relate to local color range selection. Techniques for editing an image using a digital image editing tool involve defining local adjustments that include a spatial mask and a range mask as separate masks. The spatial mask specifies the region of the image to be adjusted, and the range mask specifies the color and tonal ranges to be adjusted independently of the region specified by the spatial mask. When applying these masks, when the user changes the settings in the digital image editing tool, the digital image editing tool weights the effect of the settings for each pixel of the image based on the values of the spatial mask and the range mask.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This specification relates to digital image editing tools. Background Art

[0002] Some photographers use digital image editing tools that run on a computer to edit pictures. Along these lines, some of the edits that can be made to a picture using such digital picture editing tools include adjustments such as exposure, contrast, and color levels. Such adjustments can be applied using local adjustment tools such as brushes, linear gradients, and / or radial gradients.

[0003] For example, assume that a user wants to edit the following picture: The background is a blue sky, and on the ground are trees with clusters of red leaves and a red building. The user may want to brighten the red leaves, but darken the other reds in the picture. In a traditional method of using a digital picture editing tool to edit an image, the user can define a mask that defines the regions to which certain color and tone adjustments can be applied. In the above example, such a mask is created by selecting the regions that include the red leaves and applying a brush to these regions to weight the red saturation in the leaves to a higher level. Summary of the Invention

[0004] In one general aspect, a method can include obtaining, by a processing circuit of a computer configured to edit an image, an image that includes a plurality of pixels, each pixel of the plurality of pixels having values of a plurality of parameters that define a color and a tone. The method can also include generating, by the processing circuit, a spatial mask that defines a region of the image, the spatial mask including, for each pixel of the plurality of pixels, a corresponding value indicating whether the pixel is included in the region. The method can further include generating, by the processing circuit, a range mask that defines a range of values of a specified parameter of the plurality of parameters, the range mask including, for each pixel of the plurality of pixels, a corresponding value indicating whether the value of the specified parameter of the pixel is within the range of values of the specified parameter. The method can also include receiving, by the processing circuit, a request to adjust a value of a parameter of the plurality of parameters. The method can further include: in response to receiving the request, performing, by the processing circuit, a parameter value adjustment operation on the image to produce an edited image, the parameter value adjustment operation being configured to adjust the value of the parameter of each pixel of the plurality of pixels based on the values of the spatial mask and the range mask.

[0005] Details of one or more implementations are set forth in the accompanying drawings and the following description. Other features will be apparent from the description and drawings, and from the claims. Brief Description of the Drawings

[0006] Figure 1 is a diagram showing an example electronic environment in which the improved techniques described herein can be implemented;

[0007] Figure 2is a flowchart showing an example method of implementing an improved technique as Figure 1 shown;

[0008] Figure 3 is a flowchart showing an example process of standardizing an image according to Figure 1 the improved technique shown;

[0009] Figure 4A is a flowchart showing an example process of generating a luminance range mask according to Figure 1 the improved technique shown;

[0010] Figure 4B is a diagram showing an example GUI for selecting a luminance range mask according to Figure 1 the improved technique shown;

[0011] Figure 5A is a flowchart showing an example process of generating a dot - type model for a color range mask according to Figure 1 the improved technique shown;

[0012] Figure 5B is a flowchart showing an example process of generating a block - type model for a color range mask according to Figure 1 the improved technique shown;

[0013] Figure 5C is a diagram showing an example GUI for selecting a color range mask according to Figure 1 the improved technique shown; and

[0014] Figure 6 is a diagram showing an example tubular volume representing the range of a color - type model for a color range mask in the Lab color space according to Figure 1 the improved technique shown. Detailed Description

[0015] The above - mentioned traditional method of using a digital picture editing tool to edit pictures results in a complex multi - step workflow that is time - consuming and has limited accuracy. For example, due to the very irregular spatial boundaries, it may be difficult to define an accurate mask in the above - mentioned tree with clustered red leaves. In many cases, the irregular boundaries are composed of straight elements, each straight element being smaller than a pixel. Along these lines, a user who wants to perform local adjustment on the red leaves needs to define an area that does not cover all the red - colored pixels or does not cover all the non - red - colored pixels. Therefore, the local adjustment may not occur in the area where the user wants it, or may occur in an area where the user does not want it.

[0016] In addition, due to the complexity of the workflow involved in defining a spatial mask, such a spatial mask results in destructive editing of the picture, i.e., editing that cannot be easily undone. In contrast, when the editing is simple, such editing can be represented, for example, in the form of an XML script, which can be saved separately from the original image. In this way, the original image is preserved by default. However, in cases where the editing becomes complex enough, for example, in the example involving the red leaves above, such editing may only be available as a direct change to the image itself.

[0017] According to the implementations described herein, and contrary to the methods of editing an image using a digital image editing tool as described above, an improved technique for editing an image using a digital image editing tool involves defining local adjustments that include a spatial mask and a range mask as separate masks. The spatial mask specifies the region of the image to be adjusted, and the range mask specifies the range of colors and hues to be adjusted independently of the region specified by the spatial mask. When applying these masks, when the user changes the settings in the digital image editing tool, the digital image editing tool weights the effect of the settings for each pixel of the image according to the values of the spatial mask and the range mask.

[0018] In some implementations, the user can select a brightness range mask as the range mask, and the brightness range mask assigns a value of 1 to pixels whose brightness values are within the selected range and a value of 0 to pixels whose brightness values are outside that range. Similarly, when the user selects a region of the image for editing, the digital image editing tool assigns a spatial mask value of 1 to each pixel within that region and a spatial mask value of 0 to each pixel outside that region. Thus, when the user adjusts the value of a parameter (e.g., changes the contrast or brightness), the digital image editing tool weights the change in the value of that parameter according to the spatial mask value and the brightness range mask value. The weighting is applied to all pixels of the image, although many of the weights are zero, indicating that there is no change in that parameter for those pixels. In some implementations, the digital image editing tool forms the product of the spatial mask value and the brightness range mask value as an overall mask weight. In some implementations, the overall mask weight can be a different combination of the spatial mask value and the range mask value, for example, the convolution of the spatial mask value and the range mask value.

[0019] In some implementations, the user can select a color range mask as the range mask, and the color range mask assigns a value of 1 to pixels whose color values are within the selected range and a value of 0 to pixels whose color values are outside that range. In some arrangements, the color range mask includes a point model in which a single point in the Lab color space is selected as the range. In some arrangements, the color range mask includes a block model in which a region in the Lab color space is selected as the range; this range is a tubular volume in the Lab space.

[0020] In some implementations, the range mask has a smoothing function such that the transition from within the range to outside is smooth rather than binary. In one example, the luminance range mask can have a Gaussian smoothing function at the edges of the luminance range. In another example, the point model of the color range mask can have a 3D Gaussian function in the Lab space centered on a single point as the value of the range mask. In yet another example, the block model of the color range mask can have a Gaussian smoothing function at the surface of a tubular volume in the Lab space.

[0021] In some implementations, when acquiring an image, the digital image editing tool first normalizes the image in such a way that any initial image of the same scene is represented as the same normalized image. Then, against the background of the normalized image, the value ranges of various parameters that the user can change in the digital image editing tool are altered. In some implementations, the normalization of the image involves converting the original RGB color space of the image to the Lab color space of the image, forming a histogram of luminance across the pixels of the image, and then redistributing the luminance to equalize the heights of the histogram bars.

[0022] In some implementations, the spatial mask and the range mask are stored separately from the initial raw image, such that the edits made by the user are non-destructive because the raw image can be restored when needed.

[0023] The local adjustments defined above make it easier to perform more accurate adjustments to the picture with less effort. Contrary to traditional methods, the specification of the regions of the spatial mask can be done at a coarse level as long as it includes the actual regions to be adjusted. The fine-tuning of the features in the picture is done through the range mask, which can be specified relatively easily by the user. Finally, the changes specified in the spatial mask and the range mask are relatively simple and can be stored in a separate file such as an XML file, such that the editing process can be non-destructive.

[0024] Figure 1 is a diagram showing an example electronic environment 100 in which the above-described improved techniques can be implemented. As shown, in Figure 1 it, the electronic environment 100 includes an editing computer 120, a network 170, a photographic device 172, a display 180, and a non-volatile memory 190.

[0025] The editing computer 120 is configured to edit images. The editing computer 120 includes a network interface 122, one or more processing units 124, and a memory 126. The network interface 122 includes, for example, an Ethernet adapter, a Token Ring adapter, etc., for converting received electronic and / or optical signals from the network into an electronic form for use by the editing computer 120. The set of processing units 124 includes one or more processing chips and / or components. The memory 126 includes volatile memory (e.g., RAM) and non-volatile memory (such as one or more ROMs, disk drives, solid state drives, etc.). The set of processing units 124 and the memory 126 together form a control circuit that is configured and arranged to perform the various methods and functions described herein.

[0026] In some embodiments, one or more components of the editing computer 120 may be or may include a processor (e.g., processing unit 124) configured to process instructions stored in the memory 126. As Figure 1 depicted, examples of such instructions include an image acquisition manager 130, a spatial mask manager 140, a range mask manager 150, and an image editing manager 160. Additionally, as Figure 1 shown, the memory 126 is configured to store various data, which are described with respect to the respective managers that use such data.

[0027] The image acquisition manager 130 is configured to obtain image data 132 from a certain image source. As Figure 1 shown, the image acquisition manager 130 obtains the image data 132 from a photographic device 172 via a network 170. In some implementations, the image acquisition manager 130 obtains the image data 132 from an original image file 192 stored in an external non-volatile memory 190.

[0028] The image data 132 represents an image of a scene and / or an object. In some implementations, the image data 132 is a color image represented in RGB coordinates, e.g., 8-bit integer intensities (from 0 to 255) for the red, green, and blue channels. The image data 132 includes a plurality of pixels (e.g., 2048×1536 in an HD image), each pixel having a single value for each color channel in the color channels.

[0029] The spatial mask manager 140 is configured to generate spatial mask data 142. In some arrangements, the spatial mask manager 140 receives data from a graphical user interface (GUI) of the image editing manager 160 that indicates a region of the image represented by the image data 132 and shown on a display 180. For example, a user can define a region of the image by simultaneously moving a mouse and holding down the mouse button on the image displayed on the display 180.

[0030] As Figure 1 shown, the spatial mask data 142 includes pixel identification data 144 and mask value data 146. In some implementations, the pixel identification data 144 includes a pair of integers (e.g., between 0 and 2047 and between 0 and 1535) indicating the position of the pixel within the image. In some implementations, the pixel identification data 144 includes a single integer representing the address of the pixel within the image. The mask value data 146 is a number indicating whether the pixel is within or outside the region indicated by the user. For example, the mask value data 146 may take the value 1 when the pixel is within the region and 0 when the pixel is outside the region. In some implementations, when the pixel is sufficiently close to the boundary of the region, the mask value data 146 may take other values, e.g., a number between 0 and 1.

[0031] The range mask manager 150 is configured to generate range mask data 152. In some configurations, the range mask manager 150 receives range mask data 152 (e.g., brightness or color) indicating the range type 152 from a GUI such as the image editing manager 160. Depending on the range type data 152, the range mask manager 150 receives range mask data 152 from a slider in the GUI, or from the user moving the mouse and holding down the mouse button simultaneously over an area of the image displayed on the display 180.

[0032] The range mask data 152 includes range type data 154, parameter identification data 154, range data 156, and mask value data 158. In some implementations, the range type data 154 indicates brightness range data or color range data. In some implementations, the color range data also indicates a point type or a block type. The range data 156 includes a set of numbers defining the range in the context of the range type indicated by the range type data 154. For example, when the range type data 154 indicates brightness range data, the range data 156 may take the form of a range of brightness values. In this case, the mask data 158 may take the form of a one-dimensional mapping between the brightness values and numbers. Along these lines, in some implementations, when the brightness value is within the range specified by the user, the mask data 158 may map the brightness value to 1, and when the brightness value is outside the range, the mask data 158 may map the brightness value to 0. In some implementations, when the brightness value is sufficiently close to the edge of the range, the value to which the brightness value is mapped may be a number between 0 and 1. The range mask data 152 is described in more detail with respect to Figures 3 to 6 is described in more detail.

[0033] The mask normalization manager 151 is configured to perform a normalization operation on the image data 132. In some implementations, the mask normalization manager 151 is configured to convert the image data in the RGB color space to the Lab color space by expanding each channel to its full range. In some implementations, the mask normalization manager 151 is configured to form a histogram of the luminance values over the pixels of the image data 132 and adjust the luminance value of each pixel to produce a histogram with a constant bar height. In some implementations, the mask normalization manager 151 is configured to remove defects in the image data 132 due to, for example, distortion of the lens in the photographic device 172.

[0034] The image editing manager 160 is configured to perform an editing operation on the image data 132 in response to a command from a user. In some implementations, the command is received from the user via a GUI presented on the display 180. In some implementations, the command received from the GUI takes the form of setting parameter values according to, for example, the position of a button on a slider, and the spatial mask value data 146 and the range mask value data 158. The image editing manager 160 is also configured to provide local adjustment tools such as brushes, linear gradients, and radial gradients.

[0035] The network 170 is configured and arranged to provide a network connection between the editing computer 120 and the photographic device 172. The network 170 may implement any one of a variety of protocols and topologies commonly used for communication over the Internet or other networks. Additionally, the network 170 may include various components (e.g., cables, switches / routers, gateways / bridges, etc.) used in such communication.

[0036] The display 180 is configured to display the image data 132 within the GUI provided by the image editing manager 160.

[0037] The non - volatile memory 190 is configured to store the original image file 192 containing the image data before any normalization or editing, the spatial mask file 194 containing the spatial mask data 142, and the range mask file containing the range mask data 152. In some implementations, the spatial mask file 194 and the range mask file 196 each have an XML format.

[0038] The components of the editing computer 120 (e.g., modules, processing unit 124) can be configured to operate based on one or more platforms (e.g., one or more similar or different platforms), and the one or more platforms can include one or more types of hardware, software, firmware, operating systems, runtime libraries, etc. In some implementations, the components of the editing computer 120 can be configured to operate within a device cluster (e.g., a server farm). In such implementations, the functions and processing of the components of the editing computer 120 can be distributed to several devices in the device cluster.

[0039] The components of the editing computer 120 can be or can include any type of hardware and / or software configured to process attributes. In some implementations, Figure 1 one or more portions of the components shown in the editing computer 120 in can be or can include hardware-based modules (e.g., digital signal processors (DSPs), field programmable gate arrays (FPGAs), memories), firmware modules, and / or software-based modules (e.g., modules of computer code, a set of computer-readable instructions executable at a computer). For example, in some implementations, one or more portions of the components of the editing computer 120 can be or can include software modules configured to be executed by at least one processor (not shown). In some implementations, the functions of the components can be included in modules and / or components different from those Figure 1 shown.

[0040] In some embodiments, one or more components of the editing computer 120 can be or can include a processor configured to process instructions stored in a memory. For example, the image acquisition manager 130 (and / or a portion thereof), the spatial mask manager 140 (and / or a portion thereof), the range mask manager 150 (and / or a portion thereof), and the image editing manager 160 (and / or a portion thereof) can be a combination of a processor and a memory configured to execute instructions related to a process for implementing one or more functions.

[0041] In some implementations, the memory 126 can be any type of memory, such as random access memory, disk drive memory, flash memory, etc. In some implementations, the memory 126 can be implemented as more than one memory component associated with the components of the editing computer 120 (e.g., more than one RAM component or disk drive memory). In some implementations, the memory 126 can be a database memory. In some implementations, the memory 126 can be or can include non-local memory. For example, the memory 126 can be or can include memory shared by multiple devices (not shown). In some implementations, the memory 126 can be associated with a server device (not shown) within a network and be configured to serve the components of the editing computer 120. As Figure 1 shown, the memory 126 is configured to store various data, including image data 132, spatial mask data 142, and range mask data 152.

[0042] Figure 2 is a flowchart depicting an example method 200 of editing an image using a digital picture editing tool. The method 200 can be performed by software constructs described in conjunction with Figure 1 that reside in the memory 126 of the editing computer 120 and are run by a set of processing units 124.

[0043] At 202, the editing computer 120 ( Figure 1 ) obtains image data 132 including a plurality of pixels, each pixel of the plurality of pixels having values of a plurality of parameters that define color and hue. The image data 132 can be obtained via a photographic device 172 or via a non-volatile memory 190 over a network (e.g., network 170).

[0044] At 204, the editing computer 120 generates a spatial mask that defines a region of the image. For each pixel of the plurality of pixels, the spatial mask includes a corresponding value indicating whether the pixel is included in the region.

[0045] At 206, the editing computer 120 generates a range mask that defines a range of values of a specified parameter. For each pixel of the plurality of pixels, the range mask includes a corresponding value indicating whether the value of the specified parameter of the pixel is within the range of values of the specified parameter.

[0046] At 208, the editing computer 120 receives a request to adjust the value of a parameter among the plurality of parameters.

[0047] At 210, the editing computer 120 performs a parameter value adjustment operation on the image in response to receiving the request to produce an edited image. The parameter value adjustment operation is configured to adjust the value of the parameter of each pixel of the plurality of pixels based on the values of the spatial mask and the range mask.

[0048] Figure 3 is a flowchart showing an example process 300 for standardizing image data. Process 300 can be performed by software constructs described in conjunction with Figure 1 and residing in the memory 126 of the editing computer 120 and run by a set of processing units 124.

[0049] At 302, the editing computer 120 obtains the intensity ranges of the red, green, and blue channels in the RGB color space from the image data (e.g., image data 132). In some implementations, other color spaces, such as the YUV color space, can be used with other color channels.

[0050] At 304, the editing computer 120 performs a transformation on each of the RGB color channels of the RGB color channels to expand the range of each color channel to an intensity distribution over the entire color range. For example, assume that the red channel has values from 50 to 200 over all pixels in the image data. Then, the editing computer 120 rescales the red intensity range to 0 to 255, where the original value of 50 is mapped to 0, the value of 200 is mapped to 255, and some interpolation is used to map the values in between. This expansion of the red range is repeated for the green and blue ranges.

[0051] At 306, the editing computer 120 converts the full-range channels in the RGB color space to channel ranges in the Lab color space. Since the RGB color space is device-dependent, it must first be converted to a device-independent representation, such as sRGB, before being converted to Lab.

[0052] At 308, the editing computer 120 performs a transformation on each Lab channel to expand the range of each Lab channel to a distribution over the entire channel range. In some implementations, the entire range of the L (luminance) channel is between 0 and 100, and the entire range of each of the a (green - red) and b (blue - yellow) color channels is between - 128 and + 127. In some implementations, the L channel corresponds to "luminance", which is the cube root of brightness. However, due to the simple direct relationship between luminance and brightness, the L channel will refer to brightness.

[0053] At 310, the editing computer 120 forms a histogram of brightness from the brightness values of each pixel in the pixels of the image data. The histogram has bars for brightness sub-ranges, and there can be up to 101 (for each value 0 to 100) such bars.

[0054] At 312, the editing computer 120 adjusts the brightness values of the pixels of the image data such that the bars of the histogram have the same height. For example, the brightness values are evenly distributed over the image data. The resulting image data represents a normalized image.

[0055] Figure 4A is a flowchart showing a process 400 for generating a brightness range mask. The process 400 can be performed by software constructs described in conjunction with Figure 1 and residing in the memory 126 of the editing computer 120 and run by a set of processing units 124.

[0056] At 402, the editing computer 120 receives a brightness value range and a Gaussian width. In some implementations, the brightness value range is received as a result of a double-thumb slider in the GUI of the image editing manager 160 displayed on the display 180. The Gaussian width represents the width of a 1D Gaussian function as a function of brightness centered at each range edge. Thus, the 1D Gaussian function represents an edge smoothing operation for the brightness mask. In some implementations, the Gaussian width is received as a result of a slider in the GUI.

[0057] At 404, the editing computer 120 defines the 1D range edge smoothing function as described above based on the above range and Gaussian width. For example, for pixels having brightness values outside the range but close enough to the edge of the range, the editing computer calculates the value of a Gaussian centered at the range edge and having the Gaussian width as the brightness range mask value.

[0058] At 406, the editing computer 120 generates a brightness range mask based on the above range and the 1D range edge smoothing function. When the user adjusts image editing parameters (such as contrast, brightness, saturation, etc.), the editing computer 120 employs the brightness range mask as a range mask.

[0059] Figure 4B is a diagram showing an example GUI 420 for generating the brightness range mask as described above and displayed on the display 180. The GUI 420 takes the form of a window that includes a display of an image 430 represented by the image data 132 and a set of editing controls 440.

[0060] In the image window 430, the editing computer 120 provides a region selection tool, such as a brush, through which the user can select a region for the spatial mask for local adjustment. Contrary to the traditional methods described above, the user does not have to worry about accuracy and can draw a roughly defined region in the drawing window. The only requirement is that the region drawn by the user contains the actual region to be adjusted. For example, assume that the scene in the picture includes a tree with red leaves on a blue rocky background. If the user wishes to adjust the contrast between the blue background and the red leaves, the user only needs to use the brush, linear gradient, or radial gradient to draw a region that includes the blue background (e.g., with or without a shadow effect) according to the intention of the adjustment.

[0061] In the editing control window, there are sliders representing possible values of various parameters such as brightness and contrast. There is a range mask selector that includes a drop-down menu for selecting no range mask, a brightness range mask, or a color range mask. In Figure 4B the example shown, the brightness range mask is selected. In response to this selection, a two-thumb selector for the brightness range and a slider for smoothness (e.g., Gaussian width) appear. The editing computer 120 receives the values of these parameters and generates a brightness range mask according to the values selected in these controls.

[0062] Figure 5A is a flowchart showing an example process 500 for generating a point model color range mask. The process 500 can be executed by software constructs described Figure 1 in conjunction with, which reside in the memory 126 of the editing computer 120 and are run by a set of processing units 124.

[0063] At 502, the editing computer 120 receives a single point in the Lab color space and a Gaussian width. The single point is received in response to the user clicking the mouse in a window representing the RGB color space. The point in the RGB color space can then be converted to a point in the Lab color space. The Gaussian width represents the width of a 3D Gaussian smoothing function centered on the single point. In some implementations, the Gaussian width is received as a result of a slider in the GUI.

[0064] At 504, the editing computer 120 defines the 3D Gaussian smoothing function as described above according to the single point and the Gaussian width. For example, for pixels whose Lab color channel coordinates are outside the single point but close enough to the single point, the editing computer 120 calculates the value of the 3D Gaussian centered on the single point and having the Gaussian width as the color range mask value.

[0065] At 506, the editing computer 120 generates a color range mask based on the single point and the 3D Gaussian smoothing function as described above. When the user adjusts image editing parameters (e.g., contrast, brightness, saturation, etc.), the editing computer 120 uses the color range mask as the range mask.

[0066] Figure 5B is a flowchart showing an example process 550 for generating a block model color range mask. Process 550 can be performed by software constructs in conjunction with Figure 1 described, which reside in the memory 126 of the editing computer 120 and are run by a set of processing units 124.

[0067] At 552, the editing computer 120 receives a region in the color space and a Gaussian width. The region is received in response to the user's click-and-drag actions in a window in the editing manager 160, and the window represents a color palette for selecting colors. Such a region is rectangular, but in some implementations, it is a non-rectangular shape. The Gaussian width represents the width of the 3D Gaussian smoothing function. In some implementations, the Gaussian width is received as a result of a slider in the GUI.

[0068] At 554, the editing computer 120 generates a three-dimensional tubular volume in the Lab color space based on the region selected in the color palette. The tubular region represents a subspace of the Lab color space for which image adjustment is to be performed. Further details regarding this subspace are discussed with respect to Figure 6 to discuss.

[0069] At 556, the editing computer 120 defines the 3D Gaussian smoothing function as described above based on the three-dimensional tubular volume and the Gaussian width. For example, for pixels whose Lab color channel coordinates are outside the three-dimensional tubular volume but close enough to the surface of the three-dimensional tubular volume, the editing computer 120 calculates the value of the 3D Gaussian that decreases with the distance from the surface of the three-dimensional tubular volume and has the Gaussian width as the color range mask value.

[0070] At 558, the editing computer 120 generates a color range mask based on the three-dimensional tubular volume and the 3D Gaussian smoothing function as described above. When the user adjusts image editing parameters (e.g., contrast, brightness, saturation, etc.), the editing computer 120 uses the color range mask as the range mask.

[0071] Figure 5C is shown as Figure 3FIG. showing an example GUI 420 that is used to generate the color range mask as described above and is displayed on the display 180. The GUI 420 takes the form of a window that includes a display of an image 430 represented by image data 132 and a set of editing controls 440. In this case, the drop-down menu in the editing control window 440 is set to the color range mask option.

[0072] In this case, for the block-type color mask, the user performs click-and-drag actions with the mouse to select a color region 570 on the color palette. (For the point-type color range mask, the user clicks on a single point.) The editing computer 570 then converts this region of the color palette into a volume within the Lab color space.

[0073] In some implementations, there may be other color range masks that are combinations of the point model and the block model color range masks. For example, such a combination can be weighted by taking the combination that produces the minimum value at a given point in the Lab color space as the above combination. Other constraints can produce other combinations of the point model and the block model.

[0074] In some implementations, the editing computer 120 provides an inversion function that replaces the value of the color range mask by subtracting the value from one. In this way, the user effectively specifies a color and then, for example, clicks on an inversion control (e.g., a checkbox) to create a mask that is everything within the color range model space except the previously specified (multiple) color ranges.

[0075] Figure 6 FIG. showing an example tubular volume 610 within the Lab color space 600 as a result of converting the region 570 to the Lab color space. In this case, the cross-section of the tube is circular and the side surface is linear. In some implementations, the side surface can be curved.

[0076] Pixels of an image whose Lab values are within the tube 610 can have a color range mask value of 1, while pixels whose Lab values are outside the tube 610 can have a color range mask value of 0. For points near the tube, the editing computer can calculate a 3D Gaussian function centered on the surface of the tube 610 as the color range mask value. In some implementations, the 3D Gaussian function can be approximated by a polynomial for faster calculation. It has been found that a cubic polynomial provides the speed and accuracy required for such an approximation.

[0077] By using various range masks in combination with the above spatial masks, the editing computer 120 can be used to accurately, easily, and non-destructively edit images with even the most irregular boundaries.

[0078] Numerous embodiments have been described. However, it should be understood that various modifications can be made without departing from the spirit and scope of this specification.

[0079] It should also be understood that when an element is referred to as being on another element, connected, electrically connected, coupled, or electrically coupled to another element, it can be directly on the other element, directly connected or coupled to the other element, or there can be one or more intervening elements. In contrast, when an element is referred to as being directly on another element, directly connected to, or directly coupled to another element, there are no intervening elements. Although the terms directly on, directly connected to, or directly coupled to, etc. may not be used throughout the detailed description, elements shown as directly on, directly connected, or directly coupled can be referred to accordingly. The claims of this application can be modified to state the exemplary relationships described in the specification or shown in the drawings.

[0080] As described herein, although certain features of the described implementations have been shown, many modifications, substitutions, changes, and equivalents will now occur to those skilled in the art. Therefore, it should be understood that the appended claims are intended to cover all such modifications and variations that fall within the scope of the implementations. It should be understood that they are presented by way of example only and not as limitations, and various changes in form and detail can be made. Except for mutually exclusive combinations, any part of the devices and / or methods described herein can be combined in any combination. The implementations described herein can include various combinations and / or sub - combinations of the functions, components, and / or features of the different implementations described.

[0081] In addition, the logical flows depicted in the figures do not require the particular order or sequential order shown to achieve the desired result. Additionally, other steps can be provided, or steps can be eliminated from the described flow, and other components can be added to the described system, or other components can be removed from the described system. Therefore, other embodiments are within the scope of the appended claims.

Claims

1. A method for fine-tuning an image, comprising: obtaining, by a processing circuit of a computer, a first image including a plurality of pixels, wherein the pixels include a set of values corresponding to a set of parameters defining color and hue; receiving a user input, the user input including a user drawing around a roughly defined region of the first image, the roughly defined region containing an adjustment region in which an adjustment is to be made; generating, by the processing circuit, a spatial mask indicating the roughly defined region of the first image, and for the plurality of pixels, the spatial mask including corresponding values indicating whether the pixels are included in the adjustment region; generating, by the processing circuit, a range mask defining a range of values of a user-specified parameter, and for the plurality of pixels, the range mask including corresponding values indicating whether the values of the user-specified parameter of the pixels are within the range of values of the user-specified parameter; receiving, by the processing circuit, a request to adjust a value of a parameter in the set of parameters; and in response to receiving the request, performing, by the processing circuit, a parameter value adjustment operation on the first image to generate a second image, the parameter value adjustment operation including adjusting the values of the parameter of the plurality of pixels, and the adjustment of the values of the parameter of the plurality of pixels being implemented by weighting the adjustment of the values of the parameter of the plurality of pixels by using a combination of the values of the spatial mask and the values of the range mask, the second image being generated from the fine-tuning of the first image on the adjustment region.

2. The method according to claim 1, wherein generating the range mask comprises: Generating a color range mask as the range mask, the color range mask defining a range of intensity values of at least one color among a plurality of colors of pixels.

3. The method according to claim 2, wherein generating the color range mask includes: receiving color range data including range type data, wherein the range type data includes an indication of whether the color range mask includes a point model or a block model, the point model being based on a single point in the Lab color space, and the block model being based on a continuous region in the Lab color space.

4. The method according to claim 3, wherein generating the color range mask further includes: in response to the color range mask being based on the point model, generating a 3D smoothing function that defines the values of the color range mask at a single point in the Lab color space and at a point neighborhood near the single point.

5. The method according to claim 4, wherein generating the 3D smoothing function includes: receiving a Gaussian width value; and generating a Gaussian function centered at the single point and having the Gaussian width value as the width as the 3D smoothing function.

6. The method according to claim 1, further comprising: in response to obtaining the first image, saving the first image in a memory of the computer; and generating a spatial mask file including spatial mask data, the spatial mask data including pixel identifiers that identify the plurality of pixels and, for the plurality of pixels, identify the corresponding values of the spatial mask. Generate a range mask file including range mask data, the range mask data including parameter identifiers that identify the user-specified parameter, the value range of the user-specified parameter, and the value of the range mask of the user-specified parameter.

7. The method according to claim 1, wherein: The user input includes holding down a mouse button and moving the mouse over the first image.

8. The method according to claim 1, further comprising: Receiving a second user input from a slider in a user interface, wherein the range mask is generated based on the second user input.

9. The method according to claim 1, further comprising: Normalizing at least a portion of the first image by identifying a histogram of brightness values and adjusting the brightness values to produce a normalized histogram having a constant bar height for the brightness values, wherein the parameter value adjustment operation is based on the normalization.

10. The method according to claim 1, further comprising: Normalizing at least a portion of the first image by obtaining color ranges for a plurality of colors of the first image and expanding the color ranges to include the entire color intensity range, wherein the parameter value adjustment operation is based on the normalization.

11. The method according to claim 1, further comprising: Identifying a region of a three-dimensional color space defined by a tube having a circular cross-section, wherein the range mask is at least partially based on the region of the three-dimensional color space.

12. A computer program product including a non-transitory storage medium, the computer program product including code that, when executed by a processing circuit of a computer configured to enable a user to perform fine-tuning of an image on a roughly defined region of the image, causes the processing circuit to execute a method that includes: Obtaining a first image including a plurality of pixels having values of a plurality of parameters that define color and hue; Receiving user input including a user drawing around the roughly defined region of the first image, the roughly defined region including an adjustment region in which an adjustment is to be made; Generating a spatial mask indicating the roughly defined region of the first image, the spatial mask including, for the plurality of pixels, corresponding values indicating whether the pixel is included in the adjustment region; Generating a range mask defining a value range of a user-specified parameter among the plurality of parameters, the range mask including, for the plurality of pixels, corresponding values indicating whether the value of the user-specified parameter is within the value range of the user-specified parameter; Receiving a request to adjust a value of a parameter among the plurality of parameters; And In response to receiving the request, perform a parameter value adjustment operation on the first image to generate a second image. The parameter value adjustment operation includes adjusting the values of the parameters of the multiple pixels by weighting the adjustment of the values of the parameters of the multiple pixels by using a combination of the values of the range mask and the values of the spatial mask. The second image is generated by fine-tuning the first image on the roughly defined region. Wherein generating the range mask includes: Receiving a Gaussian width value; And Generating a 3D smoothing function centered at a point in the color space and defining the intensity values of at least one color at and near the point.

13. The computer program product according to claim 12, wherein the parameter value adjustment operation is further configured to adjust the values of the parameters of the multiple pixels based on the values of the spatial mask.

14. The computer program product according to claim 12, wherein generating the spatial mask includes: Applying a local adjustment tool to the roughly defined region of the first image, the local adjustment tool being one of a brush, a linear gradient, and a radial gradient.

15. The computer program product according to claim 13, wherein performing the parameter value adjustment operation on the first image includes: For the multiple pixels, generating a product of the value of the spatial mask of the pixel and the value of the range mask of the pixel to generate an overall mask value, wherein the values of the parameters of the multiple pixels are based on the overall mask value.

16. The computer program product according to claim 12, wherein the method further includes: In response to acquiring the first image, saving the first image in the memory of the computer; And Generating a spatial mask file including spatial mask data, the spatial mask data including pixel identifiers that identify the multiple pixels and the corresponding values of the spatial mask of the pixels.

17. An electronic device configured to enable a user to perform fine-tuning of an image on a roughly defined region of the image, the electronic device including: A network interface; A memory; And A control circuit coupled to the memory, the control circuit being configured to: Acquire a first image including multiple pixels, the multiple pixels having values of multiple parameters that define color and hue; Generate a range mask that defines a value range of a user-specified parameter among the multiple parameters. For each pixel among the multiple pixels, the range mask includes a corresponding value indicating whether the value of the user-specified parameter is within the value range of the user-specified parameter. The range mask includes a color range mask that defines a value range of the intensity of at least one color among the multiple colors of the pixel. And generating the color range mask includes receiving an indication of whether the color range mask includes a point model or a block model, the point model being based on a single point in the Lab color space, and the block model being based on a continuous region of the Lab color space; Receive a request to adjust the value of a parameter among the multiple parameters; In response to receiving the request, perform a parameter value adjustment operation on the first image to generate a second image, the parameter value adjustment operation being configured to adjust a parameter in the plurality of pixels based on the range mask, the second image being generated from the fine-tuning of the first image on the roughly defined region; Generate a range mask file including range mask data, the range mask data including a parameter identifier that identifies the user-specified parameter, the value range of the user-specified parameter, and the value of the range mask of the user-specified parameter; wherein the control circuit configured to obtain the first image is further configured to: Receive the first image from the imaging device as a result of the imaging device capturing a scene; wherein the control circuit configured to generate the range mask is further configured to: Perform a normalization operation on the first image to generate a normalized image, the normalized image being independent of the imaging device used to capture the scene, the normalized image including a plurality of pixels; and Generate the value range of the specified parameter of the pixels of the normalized image as the value range of the specified parameter; wherein the first image includes intensity distributions of respective ones of a plurality of color channels, the plurality of color channels having corresponding entire intensity ranges, and wherein the control circuit configured to perform the normalization operation on the first image is further configured to: Obtain the intensity range of each of the plurality of color channels of the first image from the first image; Expand the intensity range of the color channels to the entire intensity range; After expanding the intensity range of the color channels for the first image, perform a conversion operation on the color channels to generate the entire value range of the channels in the Lab color space; and Expand the value range to the entire value range.

18. The electronic device according to claim 17, wherein the control circuit is further configured to: Generate a spatial mask defining a region of the first image, the spatial mask including corresponding values indicating whether pixels are included in the region; wherein the parameter value adjustment operation is further configured to adjust the value of the parameter based on the value of the spatial mask.

Citation Information

Patent Citations

  • Fast Adaptive Edge-Aware Matting

    US20130051663A1

  • Systems and Methods for Creating and Editing Seam Carving Masks

    US20130120442A1