Guided filter

The adaptive guided filter technique addresses image upscaling artifacts by dynamically adjusting linear models based on image correlation and fitting errors, enhancing image quality and computational efficiency.

WO2025264213A1PCT designated stage Publication Date: 2025-12-26GOOGLE LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
PCT/US2024/034533
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-06-18
Publication Date
2025-12-26

AI Technical Summary

Technical Problem

Existing image upscaling techniques often result in artifacts such as blooming, chromatic aberration, aliasing, and noise, and fail to adaptively adjust linear relationships between reference and guide images, leading to texture transfer and non-smoothness.

Method used

An adaptive guided filter technique that dynamically adjusts linear models based on the correlation between reference and guide images, using correlation coefficients and fitting errors to blend images, reducing artifacts and preserving high-frequency details.

Benefits of technology

The adaptive guided filter technique effectively reduces image artifacts while maintaining high-frequency details, improving image quality and computational efficiency by adapting to image content, and allowing for more efficient machine learning model usage.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure US2024034533_26122025_PF_FP_ABST
    Figure US2024034533_26122025_PF_FP_ABST
Patent Text Reader

Abstract

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for guided filter upscaling of images in image processing. One of the methods includes obtaining (i) a first image and (ii) a guide image; processing, using one or more image processing operations, the first image; determining a degree of similarity between the first image and the guide image; generating, using a first model and the degree of similarity, a set of parameters including a first and a second parameter; generating an upscaled version of the set of parameters; and generating, using the upscaled version of the set of parameters and an upscaled version of the guide image, a processed image, wherein the processed image is of a higher resolution compared to the obtained first image.
Need to check novelty before this filing date? Find Prior Art

Description

[0001]Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT GUIDED FILTER BACKGROUND Image adjustments can be used to improve the quality of images taken, e.g., by a camera of a smartphone or other mobile device. Raw data from image sensors of such cameras can appear unnatural or have other artifacts (e.g., blooming, chromatic aberration, aliasing, moiré, noise). Adjusting images to, e.g., remove or reduce the presence of such artifacts in the captured image, can include adjusting one or more pixel values. SUMMARY In general, one aspect of the subject matter described in this specification can be embodied in methods that include the actions of obtaining (i) a first image and (ii) a guide image; processing, using one or more image processing operations, the first image; determining a degree of similarity between the first image and the guide image; generating, using a first model and the degree of similarity, a set of parameters including a first and a second parameter; generating an upscaled version of the set of parameters; and generating, using the upscaled version of the set of parameters and an upscaled version of the guide image, a processed image, wherein the processed image is of a higher resolution compared to the obtained first image. Other implementations of this aspect include corresponding computer systems, apparatus, computer program products, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods. A system of one or more computers can be configured to perform particular operations or actions by virtue of having software, firmware, hardware, or a combination of them installed on the system that in operation causes or cause the system to perform the actions. One or more computer programs can be configured to perform particular operations or actions by virtue of including instructions that, when executed by data processing apparatus, cause the apparatus to perform the actions. The foregoing and other implementations can each optionally include one or more of the following features, alone or in combination. Feature 1: Processing, using the one or more image processing operations, the first image comprises: performing per pixel color adjustments on the first image. Feature 2: Determining the degree of similarity between the first image and the guide image comprises determining a degree of similarity for each of one or more regions that are present within both the first image and the guide Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT image, and wherein generating the set of parameters comprises generating a first and second parameter for each of the one or more regions that are present within both the first image and the guide image. Feature 3: Generating the upscaled version of the set of parameters comprises: performing operations of bilinear upsampling on data representing the set of parameters. Feature 4: Generating the processed image comprises: performing operations of an affine transform using the upscaled version of the set of parameters applied to the upscaled version of the guide image. Feature 5: Actions include generating a set of weights based on generating the set of parameters including the first and the second parameter; and generating an output image using (i) the set of weights, (ii) the processed image, and (iii) the first image. Feature 6: Generating the output image comprises: combining data indicating the processed image and the first image based on the set of weights to generate the output image. Feature 7: Generating the output image comprises: generating the output image to substantially match the processed image if the set of weights indicate a covariance that satisfies a first threshold and a fitting error that satisfies a second threshold; generating the output image to substantially match the first image if the set of weights indicate a covariance that satisfies a third threshold smaller than the first threshold and a fitting error that satisfies a fourth threshold larger than the second threshold; and generating the output image to blend the first image and the processed image if the set of weights indicate a covariance that does not satisfy either the first threshold or the third threshold and a fitting error that does not satisfy the second threshold or the fourth threshold. Feature 8: Actions include generating an upscaled version of (i) the set of weights and (ii) the first image. Feature 9: Generating the (i) the set of weights and (ii) the first image comprises: performing operations of bilinear upsampling on data representing the set of weights and the first image. Feature 10: Generating the output image comprises using the upscaled version of (i) the set of weights and (ii) the first image. In general, a second aspect of the subject matter described in this specification can be embodied in methods that include the actions of obtaining a first processed image and a second processed image, wherein the first processed image is generated using a first processing operation and the second processed image is generated using a second processing operation; obtaining a processing output from at least one of the first processing operation or the second processing operation, wherein the processing output is different than both the first processed image and the second processed image; generating a set of weights using the processing output; and generating an output image using (i) the first Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT processed image and (ii) the second processed image, and (iii) the set of weights generated using the processing output. Other implementations of this aspect include corresponding computer systems, apparatus, computer program products, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods. A system of one or more computers can be configured to perform particular operations or actions by virtue of having software, firmware, hardware, or a combination of them installed on the system that in operation causes or cause the system to perform the actions. One or more computer programs can be configured to perform particular operations or actions by virtue of including instructions that, when executed by data processing apparatus, cause the apparatus to perform the actions. The foregoing and other implementations can each optionally include one or more of the following features, alone or in combination. Feature 1: The first processing operation includes filtering a first image using a guide image and wherein obtaining the processing output from at least one of the first processing operation or the second processing operation comprises: obtaining a strength of mapping between pixels of the first image and the guide image from the first processing operation. Feature 2: The second processing operation includes upscaling a second image. Feature 3: Actions include comparing pixels of the first processed image and the second processed image, wherein generating the set of weights comprises: generating the set of weights using the processing output and the comparison. In general, a third aspect of the subject matter described in this specification can be embodied in methods that include the actions of obtaining a first processed image and a second processed image, wherein the first processed image is generated using a first process of filtering a first image and the second processed image is generated using a second process of upscaling the first image; obtaining a processing output from the first process of filtering the first image, wherein the processing output is different than the first processed image; generating a set of weights based on (i) the processing output and (ii) a comparison of pixels of the first processed image and the second processed image; and generating an output image using (i) the first processed image, (ii) the second processed image, and (iii) the generated set of weights. Other implementations of this aspect include corresponding computer systems, apparatus, computer program products, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods. A system Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT of one or more computers can be configured to perform particular operations or actions by virtue of having software, firmware, hardware, or a combination of them installed on the system that in operation causes or cause the system to perform the actions. One or more computer programs can be configured to perform particular operations or actions by virtue of including instructions that, when executed by data processing apparatus, cause the apparatus to perform the actions. The foregoing and other implementations can each optionally include one or more of the following features, alone or in combination. Feature 1: Generating the output image comprises: generating one or more regions in the output image that combine, based on the generated set of weights, the first processed image and the second processed image. Feature 2: Generating the one or more regions in the output image that combine the first processed image and the second processed image comprises: generating pixel values for the one or more regions that match the first processed image or match the second processed image. Feature 3: Generating the one or more regions in the output image that combine the first processed image and the second processed image comprises: generating pixel values for the one or more regions that do not match the first processed image and do not match the second processed image. Feature 4: Actions include comparing the pixels of the first processed image and the second processed image prior to generating the set of weights based on (i) the processing output and (ii) the comparison of the pixels of the first processed image and the second processed image. Feature 5: The first process of filtering the first image comprises: generating a model fitting using the first image as input and a guide image; and generating the first processed image as the first image filtered based on the model fitting. Feature 6: Prior to generating the first processed image as the first image filtered based on the model fitting, the first process of filtering the first image comprises: generating an upscaled version of the model fitting. Feature 7: Actions include generating the upscaled version of the model fitting using operations of bilinear upsampling. Feature 8: Generating the model fitting using the first image as input and the guide image comprises: generating a linear model fitting using the first image as input and the guide image. Feature 9: Generating the set of weights based on (i) the processing output and (ii) the comparison of the pixels of the first processed image and the second processed image comprises: generating one or more weights based on at least one of covariance values or fitting errors extracted from prior fitting of the first image using a first model. Feature 10: Obtaining the processing output from the first process of filtering the first image comprises: obtaining a model fitting error from fitting Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT the first image using a first model. Feature 11: The first model is a linear model. Feature 12: Generating the output image comprises: generating the output image to substantially match the first processed image if the generated set of weights indicate a covariance that satisfies a first threshold and a fitting error that satisfies a second threshold; generating the output image to substantially match the second processed image if the generated set of weights indicate a covariance that satisfies a third threshold smaller than the first threshold and a fitting error that satisfies a fourth threshold larger than the second threshold; and generating the output image to blend the first processed image and the second processed image if the generated set of weights indicate a covariance that does not satisfy either the first threshold or the third threshold and a fitting error that does not satisfy the second threshold or the fourth threshold. This specification uses the term “configured to” in connection with systems, apparatus, and computer program components. That a system of one or more computers is configured to perform particular operations or actions means that the system has installed on it software, firmware, hardware, or a combination of them that in operation cause the system to perform those operations or actions. That one or more computer programs is configured to perform particular operations or actions means that the one or more programs include instructions that, when executed by data processing apparatus, cause the apparatus to perform those operations or actions. That special-purpose logic circuitry is configured to perform particular operations or actions means that the circuitry has electronic logic that performs those operations or actions. The subject matter described in this specification can be implemented in various implementations and may result in one or more of the following advantages. For example, techniques can include improved processes for upscaling images. The techniques described include upscaling improvements which can (i) reduce or eliminate image artifacts from upscaling approaches, such as bilinear, bicubic, or lanczos interpolation kernels, (ii) reduce computational complexity compared to joint bilateral filter approaches, or (iii) reduce or eliminate artifacts compared to guided filter approaches, such as non-smooth edges or noise where a linear model does not fit well. Techniques include an adaptive guided filter that can preserve high frequency details from a guide image while eliminating texture transferring and non-smoothness artifacts typical in non-adaptive guided filter approaches. Techniques can improve upscaling by, e.g., using one or more of a correlation between a pair of guidance and reference patches or errors of an affine model fitting process to Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT dynamically adjust one or more linear models and to compute blending weight to fallback to a reference image. Techniques can include adjusting regularization parameters in a model fitting process for filtering an input image. In some cases, these techniques can help to reduce jagged edges, color bleeding, or other image artifacts. Techniques can include fallback control that blends two or more images to help reduce image artifacts. Fallback control can be used with a model fitting process for filtering an input image. Fallback control can be used with any two or more images to help reduce image artifacts. In some cases, fallback control helps to resolve texture artifacts and refines color bleeding issues. For filtered input, fallback control can help to reduce the effect of a filter generated by model fitting in regions where the model fitting generates comparatively large errors or where there is a comparatively small amount of textures represented. Computational requirements and energy usage can be reduced by processing lower resolution images compared to higher resolution images. The techniques can allow for the use of more efficient machine learning models—e.g., models that are trained using low resolution images and training data can be more efficient than models trained using higher resolution images and training data. These more efficient machine learning models can be paired with the upscaling techniques described in this document to help improve image processing for higher resolution images—e.g., on mobile devices or processor restrictive scenarios. In some cases, guided filter techniques described can be used in non-machine learning model pipelines, e.g., to filter image data after processing by one or more image processing algorithms. In some cases, filtering can be separate from upscaling. For example, enhanced guided filter techniques described in this document can be used for refining images as part of any process pipeline. A reference image can be a segmentation or depth map, e.g., that is not well aligned with color pixels, and the guide image can be the color image that includes the color pixels. Using the techniques described, a guided filter can be applied using the guide image and the reference image, e.g., to help align the edges or gradients of the reference image (such as a segmentation or depth map) with the edges or gradients of the guide image (such as a color image). The details of one or more implementations of the subject matter described in this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims. Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT BRIEF DESCRIPTION OF THE DRAWINGS FIG.1 shows an example system for image processing. FIG.2 shows an example electronic device. FIG.3 shows an example system for image upscaling. FIG.4 is a flowchart of an example process for image upscaling. FIG.5 is a flowchart of an example process for generating image output. FIG.6 is a diagram illustrating an example of a computing system. Like reference numbers and designations in the various drawings indicate like elements. DETAILED DESCRIPTION The described techniques, including adaptive guided filter techniques, can use (i) the correlation between a first region in a guide image and a second region in a reference image and (ii) errors from affine model fitting, to dynamically adjust an image mapping model (e.g., an affine transformation model) that generates an upsampled image and further blends the upsampled image with the reference image to improve details in correlated regions while reducing artifacts in less correlated regions. The techniques can be applied to images or other forms of media. In more detail, the adaptive guided filter technique uses a reference image (e.g., obtained by a camera) and a guide image (e.g., the guide image can be the same as, or different than, the reference image). In some cases, a guide image includes an image before tone-mapping, color adjustment, or other adjustment and a reference image includes an image after tone-mapping, color adjustment, or other adjustment. In some cases, a guide image includes a luma image and a reference image includes a depth map. While the traditional guided filter approach assumes a constant linear relationship between input pixels of the reference image and guidance pixels of the guide image, the proposed adaptive guided filter approach adapts the linear relationship between input pixels and guidance pixels. At least because the adaptive guided filter leverages a dynamic linear relationship between the input and guidance pixel, this technique preserves high frequency details from the guide image while eliminating texture transferring and non-smoothness artifacts which can result from traditional non-adaptive guided filter methods—e.g., methods that assume a static linear relationship between reference and guide image. The adaptive guided filter approach generates per pixel (e.g., a set of one or more pixels in a window, such as 1 by 1 or 4 by 4, among others) determinations of linear Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT coefficient—^^^and ^^^—to generate output pixels expressed by a linear transform model represented by ^^^ ൈ ^^^௨^ௗ^^^^,^^^ ^ ^^^. In some cases, the expression ^^^ ൈ ^^^௨^ௗ^^^^,^^^ ^^^^maps pixel values from a guide image to a reference image. The weights ^^^and ^^^can be generated for a window of pixels, e.g., four pixels by four pixels. The weights ^^^and ^^^ can be adaptive. The variable ^^^ can be expressed as ^^^^^^^^^^௨^ௗ^^^^^, ^^^^, ^^^^^^^^^ ,^^^^^ / ^^^^^^^^^^௨^ௗ^^^^^,^^^^^ and ^^^ can be expressed as ^^^^^^^^ ^^^^^^^^^^ ,^^^^^ െ ^^^ ൈ^^^^^^^^^^^^௨^ௗ^^^^^,^^^^^. Variables ^^, ^^ represent a pixel location that corresponds to a pixel location in the reference image, the guide image, and the output image. The function ^^^^^^^^^,^^^ can be expressed as ^Σ^^^ ^ ^^^^^^1^Σ^^^^^^^^^ െ Σ^^^^^^Σ^^^^^^ and ^^^^^^^^^^ can beexpressed as ^Σ^^^ ^ ^^^^^^1^^Σ^^^^^ଶ^ ^ ^^^^^^2^ െ ^Σ^^^^^^^ଶ where the adaptive guided filterapproach replaces the static values of ^^^^^^1 and ^^^^^^2 with the dynamic values given by ^^^^^^^^^^^^^^^, ^^^^^^ and ^^^^^^^^ଶ^^^^^^, ^^^^^^. ^^^^^^^^^ and ^^^^^^^^ଶ can be functions that computeregularization parameters from certain local values of pixels. In some cases, the adaptive guided filter approach uses a correlation coefficient as an index to adjust regularization parameters ^^^^^^1 and ^^^^^^2 via ^^^^^^^^^and ^^^^^^^^ଶ, e.g., ^^^^^^^^^,^^^ which can be expressed as^^௩^^,^^^௩^^^^^ൈ௩^^^௬^. The dynamic functions can help to apply weak regulation for regions fit well—e.g., regions where the reference image and guide image are highly similar—and apply strong regularization to relax optimization constraints where linear models do not fit well. By using ^^^^^^^^^and ^^^^^^^^ଶ, the techniques can improve on traditional guided filter approaches by removing the constant linear assumption and adjusting the mapping parameters accordingly based on dynamic values in the guide or reference images. In some cases, techniques can include relaxing a linear constraint, e.g., by modifying regularization parameters. In general, image artifacts can be easily observed in regions with low correlation between a guide image patch and a reference image patch, e.g., since an assumption of linear transform is not applicable. Instead of tuning manually and applying fixed regularization terms across all image patches, proposed techniques adjust them according to content, e.g., applying weak regulation for regions where linear models fit well and applying strong regularization to relax optimization constraints where models do not fit as well. The following table breaks down observed tradeoffs of weak and strong regularization which can be applied to adjust regularization parameters according to content. High correlated regions Low correlated regions Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT Weak Regularization Better textures Sensitive to noises Jaggy artifacts her upscaling, filtering, or other processing operations. For ease of description, fallback control is described in reference to an adaptive guide filter approach but can be used in other operations, e.g., to blend two or more images generated using other techniques. Fallback control can include blending an input image (otherwise referred to as a reference image) with a filtered image to improve details in correlated regions while reducing artifacts in less correlated regions. In some cases, a covariance value is used as an index to determine whether reference and filtered image regions are sufficiently correlated or not. In general, the adaptive guided filter approach can use weighted summation or similar techniques to blend or select output values for processed output based on, e.g., one or more of covariance values, fitting errors, or input values of the input image and the filtered image. The following table shows an example selection breakdown where covariance values and fitting error are used by the adaptive guided filter approach to determine output values, e.g., by weighted summation or other techniques. Condition Primary Output e) e) Small covariance can correspond to instances where a non-texture-heavy region is present in both the reference and guide image, and a large covariance can correspond to a texture-heavy region. A large fitting error can indicate that the linear transform model does not accurately map guidance pixel values to desired input pixel values. A small fitting error can indicate that the model performs a relatively better mapping. Determinations of small or large covariance of fitting error can be determined using one or more thresholds. In some cases, the adaptive guided filter approach generates a set of weights and uses the weights and values of the input image and the filtered image to generate a combination of the input image and the filtered image as output. The output can be biased more towards the input image or the filtered image depending on the size of the Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT covariance or fitting error, as discussed. For example, the guided filter approach caninclude determining one or more correlation weights (such as ^^^^^^^^^^^^^^^^^^^^ ∗^^^^^^^^^^^^^^^^^^^^^^_^^^^^^^^^^ where covariance represents a value of covariance between reference and guide images and correlation_scale represents a scale factor that can be tuned),determining one or more error weights (such as max ^^1 െ ^^^^^^^^^^^^^^_^^^^^^^^^^ ∗^^^^^^^^^^_^^^^^^^^^^^,0^ where the fitting error can indicate how well a mapping model can map between a reference and guide image), determining one or more blending weights (such as^^^^^^^^^^^^^^^^^^^^^^_^^^^^^^^ℎ^^ ∗ ^^^^^^^^^^_^^^^^^^^ℎ^^), where an output can be generated by determining^^^^^^^^^^^^^^^^^^ ∗ ^1 െ ^^^^^^^^^^_^^^^^^^^ℎ^^^ ^ ^^^^^^^^^^^^^^^^_^^^^^^^^^^ ∗ ^^^^^^^^^^_^^^^^^^^ℎ^^ where referencecorresponds to an input image and filtered image corresponds to an image generated by a process, such as affine model transformation. In general, the guided filter approach can use a large blending weight to effectively select the filtered image (or vice versa in some implementations) which can correspond to covariance being large and fitting error being small. FIG. 1 shows an example system 100 for image processing. The system 100 includes an imaging engine 102, an image processing engine 106, and a display engine 110. In some implementations, the system 100 includes a mobile device 120, such as a smartphone. For example, the imaging engine 102 can include a camera of a device, such as a mobile device. Operations of the image processing engine 106 can be performed by one or more processors of the mobile device 120 or processors of a server or other processor. The display engine 110 can include a screen of a device, such as the mobile device 120. In general, the system 100 can process an image to adjust, correct, or improve colors within an image—e.g., to make images look more life-like or appealing. In particular, the imaging engine 102 generates a raw image 104. For example, the imaging engine 102 can include at least one or more of: a camera, lens, image sensor, or other elements (e.g., for obtaining and generating a raw digital image). The raw image 104 can include one or more values indicating values of pixels of the raw image. The imaging engine 102 provides the raw image 104 to the image processing engine 106. For example, the image processing engine 106 can perform image processing using image upscaling, such as upscaling described in this document. The image upscaling can allow the system 100 to use efficient machine learning models that are trained—e.g., by the system 100—with low resolution images but still generate high resolution images for display, storage, or other data actions. Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT By using downscaled or lower resolution images, a model can be trained with less memory and less processing time, where memory can be reduced by storing lower resolution images compared to higher resolution images as training data and processing can be reduced by processing fewer pixels corresponding to fewer bytes of training data because the training data is of a lower resolution—e.g., less than one million pixels per image. In some cases, operations described in reference to FIG. 1 can be performed in a system on a chip (SoC). For example, operations of the image processing engine 106 can be performed by a SoC, e.g., that is included in hardware of the mobile device 120. Additional details of an example mobile device are shown in reference to FIG.2. In some cases, the image processing engine 106 can downscale the raw image 104, process the downscaled image, and then upscale the processed downscaled image. In some cases, the raw image 104 is not initially downscaled but is obtained in a lower resolution and then upscaled, e.g., after processing by the image processing engine 106. The image processing engine 106 can include processes of an image signal processor configured to process data from the imaging engine 102. The image processing engine 106 can include processes of a display processor—e.g., configured to obtain image data and adjust the data before displaying the data using one or more displays. The image data can be obtained from the imaging engine 102. The image data can be obtained from an image signal processor, application, decoder, among others. The image processing engine 106 generates a processed image 108. For example, the processed image 108 can be a processed version of the raw image 104 where the processing can include upscaling an image to a higher resolution after processing the image in a resolution lower than the higher resolution. The image processing engine 106 provides the processed image 108 to the display engine 110. For example, the image processing engine 106 can include one or more processors that can provide pixel values for display using the display engine 110. The display engine 110 can provide data to a screen for viewing the processed image 108. In some cases, the image processing engine 106 can provide the processed image 108 for one or more other actions—e.g., encoding or compression for streaming or transporting data of the processed image 108 to another device or to a memory storage. FIG.2 shows an example electronic device 200 that includes a system-on-chip 240 (“SoC 240”) and a memory device 270. In some cases, the electronic device 200 is an example of the mobile device 120. For example, elements of the device 200 can perform Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT one or more operations described in reference to FIG.1, FIG.3, FIG.4, or FIG.5, such as operations described as being performed by the image processing engine 106. In some cases, the SoC 240 of the device 200 includes disk memory 260 within the blocks 210. The disk memory 260 can be used to provide data to the image processing engine 106 for processing. In general, the mobile device 120 can include additional or fewer components compared to the device 200 shown in FIG.2. For example, the mobile device 120 can include a SoC similar to the SoC 240 but not disk memory 260 collocated in blocks 210. In the example of FIG.2, the SoC 240 includes a central processing unit 204 (“CPU 204”), a memory controller 205, a memory 206, a resource manager 208, and an IP / circuit block 210. In other examples, the SoC 240 can include fewer or more components, e.g., can include no CPU or IP / circuit block. In some implementations, the electronic device 200 can include multiple SoCs 240 and descriptions about the SoC 240 can apply equally to each of the multiple SoCs and / or processors that may be included at electronic device 200. The CPU 204 can be a general-purpose CPU (e.g., a single or multi-core CPU). The CPU 204 generates one or more indicators, such as an app-launch indicator or a function call that is triggered in response to executing or launching an application at a user device. For example, the application can be a camera application that uses an imaging sensor to generate image data or a gaming application that requires substantial memory and graphics processing resources to render graphical content of the game. The CPU 204 also generates one or more application values, such as pixel values or frame rate. The application values may be associated with a function call, may be descriptive of an event that occurs during execution of the application, or both. The memory 206 is a system memory, shared memory, or both. In the example of FIG.2, memory 206 is depicted external to circuit block 210. However, memory 206 can include portions of memory that are: i) specific to circuit block 210, ii) external to circuit block 210, or iii) both. The memory 206 can be random access memory of the SoC 240, such as static random-access memory (SRAM), dynamic random access memory (DRAM), a synchronous DRAM (SDRAM), or double data rate (DDR) SDRAM. In some implementations, aspects of memory 206 are configured as a shared scratchpad memory that supports parallel access of its memory resources by two or more processors of the circuit block 210. Memory 206 can also include various other types of memory, such as high bandwidth memory (HBM), narrow memory (e.g., for storing 8-bit values), wide memory (e.g., for storing 16-bit or 32-bit values), etc. Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT The resource manager 208 is implemented in hardware and software. Aspects of the resource manager 208 can be also implemented as firmware or firmware of a device of the SoC 240, such as a ML processor, the memory controller 205, or the CPU 204. The resource manager 208 includes control logic implemented in hardware, software, or both. For example, the resource manager 208 can include resources such as flip-flops, registers, buffers, etc. that are implemented in hardware and control logic (e.g., programmed code) that is implemented in software. In some implementations, the resource manager 208 is a decoding / encoding resource manager that generates control signals for executing decompression and compression operations of system 100. The circuit block 210 generally includes individual IP devices such as processors, processor cores, or special-purpose processing devices. For example, the circuit block 210 can include an image signal processor (ISP) 212, a host processing unit (HPU) 214, a digital signal processor (DSP) 216, and a graphics processing unit (GPU) 218. The circuit block 210 is referred to alternatively as an IP block 210, where the IP block can include one or more proprietary hardware elements. For example, each of the ISP 212, HPU 214, DSP 216, and GPU 218 can be a respective proprietary IP block (or IP device) of a particular entity or device manufacturer. The HPU 214 can be a special-purpose processor, such as ML hardware accelerator, neural processor unit, neural network (or ML) processor, or another application-specific processor. In some implementations, the HPU 214 is a neural network tensor processor (e.g., a tensor processing unit (TPU)) with an integrated circuit architecture that is optimized for power-efficient execution of ML computations using tensor constructs such as multi-dimensional matrices / tensors. One or more aspects of the resource manager 208 can be implemented as a software routine (or module) of the CPU 204, which uses one or more hardware resources of the CPU 204, such as registers, buffers, etc. The CPU 204 can be configured as an instruction and vector data processing engine that processes data obtained from memory device 270 and / or from a system memory of the SoC 202, such as memory 206. In some implementations, each processor, e.g., ISP 212, DSP 216, HPU 214, GPU 218, of the SoC 240 includes multiple cores. The CPU 204 and / or the resource manager 208 can generate control signals to control and / or manage the operations of one or more other components of the electronic device 200, such as the image processing engine 106. The control signals are routed at the Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT electronic device 200 using an example bus 222 (“SoC bus 222”) of the SoC 240. The control signals can include commands, requests, data, instructions, or combination of these. In some implementations, the resource manager 208 cooperates with the CPU 204 and memory controller 205 to dynamically control and manage one or more PiM operations, CiM operations, or both. The operations involve accessing and processing data stored locally at the memory device 270. The PiM and CiM operations are executed locally at the memory device 270 based on control signaling generated at the SoC 240. The control signals are received at the memory device 270 and processed locally to trigger or initiate PiM / CiM operations using PiM / CiM compute elements of the memory device 270. The operations can be executed in support of heterogeneous computations that involve two or more processing units of the IP block 210, the CPU 204, or both. The memory device 270 can include an example image processing engine 106 that is used to process images or other media that is received at the memory device 270 via data provided by a memory device, e.g., the memory device 270, the memory controller 205, or the disk memory 260, or a combination of these. In some cases, data can be encrypted or otherwise packaged for transmission. The SoC 240 cooperates with the memory device 270 to perform computations using data (e.g., encoded data) obtained from memory banks of the memory device 270. The computations can be for operations or workloads that involve one or more of the processors at IP block 210. Additionally, the computations can be for a heterogenous operation that spans multiple processors of IP block 210, multiple IP blocks 210, or both. In some implementations, the heterogeneous operation includes a host device, e.g., HPU 214, and the memory device 270 cooperating to execute an example ML workload. In at least one example, the memory device 270 may be external to the SoC 240, whereas in another example the memory device 270 may be internal to the SoC 240. In the example of FIG. 2, the SoC 240 is an integrated circuit of an example user / client device 230, consumer electronic device, or mobile device, where each of these devices can include items such as a smartphone 230a, tablet 230b, laptop 230c, smartwatch or wearable device 230d. The device 230 may also include other items such as an eNotebook, Netbook, smart speaker, or mobile computer. In some implementations, the SoC 240 and memory device 270 are integrated circuits of a desktop computer, network server, or related cloud-based asset. The image processing engine 106 is shown as being collocated with processing resources of the IP block 210. However, in other examples, the image processing engine Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT 106 can be disposed at other locations of the SoC 240. The image processing engine 106 can be implemented as a set of integrated circuits, or discrete hardware modules, connected to an SoC processor 140 and memory device 270. For example, the image processing engine 106 can be coupled to the memory device 270 through one or more memory channels, communication buses, or circuit interconnects in electronic device 200 or client device 230. FIG.3 shows an example system 300 for image upscaling. The system 300 includes an imaging engine 302, e.g., the imaging engine 102 of the system 100 of FIG. 1. The system 300 includes an image processing engine 308, e.g., the image processing engine 106 of the system 100. The image processing engine 308 includes engines which can be referred to as subengines. The image processing engine 308 generates the high resolution processed image 338 using the guide image 304 and the raw image 306. The high resolution processed image 338 is a processed version of the raw image 306 that is generated more efficiently by the system 300 because the system 300 processed the raw image 306 using a downscaled version of the raw image 306 (e.g., downscaled raw image 312). The image processing engine 308 also includes an improved upscaling process that helps to reduce image artifacts that can typically occur with some traditional upscaling techniques, such as bilinear upsampling. In general, techniques described improve upon guided image filtering by providing additional adaptive capabilities described in this document. In general, a guided filter is an edge-preserving smoothing image filter. A traditional guided filter assumes a linear relationship between the guidance image and the filtering output. The filter models the output as the input with unwanted components (such as noise or textures) subtracted. The local linear model helps to ensure that an output pixel has an edge only if the corresponding guidance pixel has an edge. The filtering output is then determined by linear coefficients obtained through optimization. The techniques described in this document improve this filter by (i) adaptively determining coefficients, e.g., using determined values of difference between regions of the raw and guide image, and (ii) generating processed output as a blended output between the filtered output and the original upscaled processed image using one or more generated weights. For ease of description, the processes performed by the system 300 are described in stages from A to C. Briefly, in stage A, the image processing engine 308 of the system 300 obtains the guide image 304 and the raw image 306 and downscales the obtained images for processing. In stage B, the model fitting engine 320 generates fitting output using the Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT downscaled images. In stage C, the system 300 generates the high resolution processed image 338 which can be provided to a display engine 340, e.g., the display engine 110 of the system 100. The following describes each stage in more detail. In stage A, the downscaling engine 310 obtains the guide image 304 and the raw image 306. The raw image 306 can be obtained from a camera, e.g., a camera of a smartphone. The raw image 306 can be obtained from an imaging engine, such as the imaging engine 102 of the system 100. The image can be obtained from a device communicably connected to one or more computers operating the system 300. In some cases, the image processing engine 308 generates the guide image 304 from an obtained raw image. The guide image 304 can be an altered form of the raw image 306, such as one signal of a collection of signals that, combined, make up the raw image 306. For example, the guide image 304 can be a luma signal of the raw image 306. Memory required for storing the guide image 304 can be reduced compared to the raw image 306 to, e.g., help reduce memory usage and processing bandwidth, including sending data representing the guide image 304 between processing elements of a computer or computers performing the operations of the system 300. The downscaling engine 310 downscales the guide image 304 and the raw image 306 and generates the downscaled raw image 312 and the downscaled guide image 314. For example, the downscaling engine 310 can perform downscaling operations, such as, e.g., Mipmap, Box Sampling, bilinear, bicubic, Sinc, or other downscaling processes, to downscale each of the guide image 304 and the raw image 306. In some cases, the downscaled raw image 312 and the downscaled guide image 314 are the same resolution— e.g., 500 pixels by 500 pixels. Items 307 and 313 graphically provide an example of the downscaling of the raw image as illustrated by the change in number of pixels for a given segment of each of the raw image 306 and the downscaled raw image 312—e.g., the downscaled raw image 312 includes less pixels per area compared to the raw image 306. The downscaling engine 310 provides a generated downscaled raw image 312 to a low resolution processing engine 316. For example, the generated downscaled raw image 312 can be of a lower resolution compared to the raw image 306. The low resolution processing engine 316 can include one or more machine learning models that can perform one or more image processing operations, such as image segmentation, color adjustment, background defocusing, contrast adjustment, or other adjustments to the raw image 306. The low resolution processing engine 316 can include one or more non-machine learning- based image processing operations. Processing the downscaled raw image 312 using the Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT low resolution processing engine 316 is more computationally efficient relative to processing the relatively higher resolution raw image 306—e.g., processing time and requirements generally increase as resolution of an image to be processed increases and decrease as resolution of an image to be processed decreases. In stage B, the low resolution processing engine 316 provides the processed image 318 to a model fitting engine 320. The downscaling engine 310 provides the downscaled guide image 314 to the model fitting engine 320. The model fitting engine 320 can perform one or more model fitting operations—e.g., affine mode fitting operations. Model fitting can include determining one or more parameters in expressions to fit data included in the processed image 318 and the downscaled guide image 314. In general, the model fitting engine 320 can use the downscaled guide image 314 to determine accurate transforms between the processed image 318 and the downscaled guide image 314. For example, the model fitting engine 320 can determine parameters that optimize an expression, such as parameters for edge-preserving smoothing image filters like guide filters, e.g., parameters ଶ^^^ and ^^^ that minimize the expression ^^^^^^^^^,^^^ െ ^^௧^^^^௧^^^,^^^^ where ^^^^^^^^,^^^represents the processed image 318 and ^^௧^^^^௧^^^, ^^^ represents the target output that canbe expressed by ^^^ ൈ ^^^௨^ௗ^^^^,^^^ ^ ^^^. Lines of best fit and associated parameters can begenerated for a first first set of pixels bordering the first pixel—e.g., a window of four pixels by four pixels that includes the first pixel that can be in the center of the window. The first set of pixels can refer to a relative location, e.g., the upper right set of four-by-four pixels. Parameters can be computed for each pixel in the first set of pixels bordering the first pixel (e.g., the pixel at location x and y) in the downscaled guide image 314. In some cases, the model fitting engine 320 can use stride to compute parameters in low resolution. For example, the model fitting engine 320 can set a stride to 2 and parameters can be computed for every 2x2 block. In some cases, the model fitting engine 320 generates a set of values for a set of pixels in both the processed image 318 and the downscaled guide image 314. The set of pixels can be centered around a first pixel. The model fitting engine 320 can generate fitting output for that first pixel based on the set of values for the set of pixels in both the processed image 318 and the downscaled guide image 314. The model fitting engine 320 can generate first fitting output 322 and second fitting output 324. The first fitting output 322 and the second fitting output 324 can include fitting output for each pixel location in both the processed image 318 and the downscaled guide image 314. For example, if both Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT the processed image 318 and the downscaled guide image 314 include 350,000 pixels (e.g., 500 x 500 pixels), the model fitting engine 320 can generate fitting output for each of the 350000 pixels or can generate in a sampled resolution (e.g., 250 x 250 pixels). The first fitting output 322 can include determined, adaptive, coefficients for a guided filter output (e.g., generated by the transformer engine 332) and the second fitting output 324 can include indications of similarity (e.g., covariances and fitting errors) between the downscaled image guide 314 and the processed image 318 and be used for blending output to generate the high resolution processed image 338. In stage C, the upscaling engine 326 obtains the processed image 318, the first fitting output 322, and the second fitting output 324. The upscaling engine 326 can perform bilinear upsampling or other upsampling processes to generate output for each of the processed image 318, the first fitting output 322, and the second fitting output 324. The output can include more pixels than the input of the processed image 318, the first fitting output 322, and the second fitting output 324. For example, the upscaling engine 326 can generate upscaled processed image 330, upscaled first fitting output 328, and upscaled second fitting output 329. The upscaled processed image 330 can correspond to and have more pixels than the processed image 318, the upscaled first fitting output 328 can correspond to and have more pixels than the first fitting output 322, and the upscaled second fitting output 329 can correspond to and have more pixels than the second fitting output 324. For the fitting output, the determined fitting output per pixel or pixel group can be upscaled to generate additional sets of fitting output corresponding to additional pixels resulting from the upscaling process. The upscaling engine 326 provides the upscaled first fitting output 328 to a transformer engine 332. The transformer engine 332 obtains the upscaled first fitting output 328 and the guide image 304. The transformer engine 332 generates a guided filter output 334. For example, the transformer engine 332 can apply a transformation matrix, specified by the upscaled first fitting output 328 and the guide image 304, to generate filtered output 334. The filtered output 334 can be similar to the raw image 306 but with low resolution processing functions applied to it and with edge preservation filtering, e.g., to improve an upscaled version of the processed image 318. The upscaling engine 326 provides the upscaled second fitting output 329 and the upscaled processed image 330 to the blending engine 336. The blending engine 336 obtains the upscaled second fitting output 329, the upscaled processed image 330, and the guided filter output 334 generated by the transformer engine 332. The blending engine 336 Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT generates the high resolution processed image 338. For example, the blending engine 336can compute ^^^^^^^^^^^^^^^^^^ ∗ ^1 െ ^^^^^^^^^^_^^^^^^^^ℎ^^^ ^ ^^^^^^^^^^^^^^^^_^^^^^^^^^^^^ ∗ ^^^^^^^^^^_^^^^^^^^ℎ^^where reference represents the upscaled processed image 330, blend_weight is computed using the upscaled second fitting output 329 (e.g., indicating variance or fitting errors), and filtered_output represents the guided filter output 334. The blending engine 336 can provide the high resolution processed image 338 to the display engine 340 for display on a device, such as a smartphone. In some cases, the blending engine provides the high resolution processed image 338 for storage in memory or for data transfer to another computing component or computer. Although described in reference to an upscaling process that includes an adaptive guided filter approach, the blending engine 336 can be configured to blend two or more images from another process. For example, the blending engine 336 can obtain a first image and a second image that represent a same image with varied processing applied, where the first image is processed using a first processing technique and the second image is processed using a second processing technique. The blending engine 336, appropriately programmed, can blend the first and second image using, e.g., output from the first or second processing techniques. In the example of FIG.3, the processing techniques include an adaptive guided filter approach where the output includes model fitting output, e.g., the upscaled second fitting output 329 used by the blending engine 336. In some implementations, a blending engine obtains other output from the same or different processing. For example, the blending engine can obtain output from processing one or more images to help remove artifacts or to enhance a color or texture of an image. The blending engine can use the output to blend one or more processed images—e.g., to preserve more details of one over another at least based on the output from the processing. For example, an image enhancement process can be applied to specific regions of an image. A blending engine can be used to fallback to a non-enhanced version of the image, or an alternatively enhanced version (e.g., an image enhanced using a different processing technique), for specific regions of an image, such as regions with particular pixel values or representing particular shapes or located within a particular area of an image, such as near the borders where less processing may appear more natural. In some cases, the system 300 can use guided filter methods to help preserve high frequency details from the guide image 304 while eliminating texture transferring and non- smoothness artifacts. For example, the system 300 can use the correlation between a pair of guidance and reference patches and errors from the model fitting engine 320 to Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT dynamically adjust one or more linear models and compute blending weights to fallback to an upscaled guided image. The system 300 can balance smoothness and texture preservation by adaptively adjusting regularization terms based on image content. The system 300 can provide the option to blend guided filtered results with references. Techniques described in reference to FIG.3 can be applied even if local structure of a reference image (such as the raw image 306) and a guide image (such as the guide image 304) are not consistent. The techniques can be used in applications, such as denoise, tone-mapping, colorization, and joint upsampling for different kinds of image or maps. FIG. 4 is a flowchart of an example process 400 for image upscaling. For convenience, the process 400 will be described as being performed by a system of one or more computers, located in one or more locations, and programmed appropriately in accordance with this specification. For example, the system 300 of FIG.3, the device 200 of FIG.2, or the system 100 of FIG.1, can perform the process 400. The process 400 includes obtaining (i) a first image and (ii) a guide image (402). For example, the image processing engine 308 can obtain the guide image 304 and the raw image 306. The images can be downscaled after being obtained, before, or be captured natively in a lower resolution for subsequent upscaling to a higher resolution. The guide image can include luminance values of pixels, e.g., a luma channel converted from an RGB image. In some cases, the image processing engine 308 can apply gamma mapping to a guide image. The process 400 includes processing the first image (404). For example, the image processing engine 308 can process the raw image 306. In particular, the low resolution processing engine 316 can process the raw image 306, e.g., after initial downscaling. In some implementations, processing the first image includes performing per pixel color adjustments on the first image. For example, processing the first image can include adjusting a red, blue, green value associated with one or more pixels of the first image using one or more processing techniques. The process 400 includes determining a degree of similarity between the first image and the guide image (406). For example, the model fitting engine 320 can determine a degree of similarity between the processed image 318 and the downscaled guide image 314. The model fitting engine 320 can determine a degree of similarity between a region of the processed image 318 and a region of the downscaled guide image 314, e.g., as a part of model fitting for the given region. In some implementations, Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT determining the degree of similarity between the first image and the guide image includes determining a degree of similarity for each of one or more regions that are present within both the first image and the guide image. For example, for a region of one or more pixels in a top right corner, a degree of similarity can be determined between the region in both the first image and the guide image. The region of pixels can be identified using absolute or relative coordinates. In some implementations, generating the set of parameters includes generating a first and second parameter for each of the one or more regions that are present within both the first image and the guide image. For example, each parameter of the set of parameters can correspond to a region of one or more pixels that is present within both the first image and the guide image. The process 400 includes generating, using a first model and the degree of similarity, a set of parameters including a first and a second parameter (408). For example, the model fitting engine 320 can generate fitting output, such as the first fitting output 322 and the second fitting output 324. Either the first fitting output 322 or the second fitting output 324 or both can include a set of parameters, e.g., that includes a first and a second parameter. In some cases, a first and second parameter refer to parameterswithin a linear model, such as ^^^ and ^^^ in the expression ^^^ ൈ ^^^௨^ௗ^^^^, ^^^ ^ ^^^.The process 400 includes generating an upscaled version of the set of parameters (410). For example, the upscaling engine 326 can generate an upscaled version of the first fitting output 322, e.g., the upscaled first fitting output 328. The upscaling engine 326 can use an upsampling process, such as bilinear upsampling. In some implementations, generating the upscaled version of the set of parameters includes performing operations of bilinear upsampling on data representing the set of parameters. For example, the upscaling engine 326 can perform operations of bilinear upsampling on the first fitting output 322 to generate the upscaled first fitting output 328. The process 400 includes generating, using the upscaled version of the set of parameters and an upscaled version of the guide image, a processed image, wherein the processed image is of a higher resolution compared to the obtained first image (412). For example, the transformer engine 332 can generate the guided filter output 334 using the upscaled first fitting output 328 and the guide image 304. In some implementations, generating the processed image includes performing operations of an affine transform using the upscaled version of the set of parameters applied to the upscaled version of the Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT guide image. For example, the transformer engine 332 can use an affine transformation to generate the guided filter output 334. In some implementations, the process 400 includes generating a set of weights based on generating the set of parameters including the first and the second parameter; and generating an output image using (i) the set of weights, (ii) the processed image, and (iii) the first image. For example, the blending engine 336 can generate a set of weights and use the generated weights to generate the high resolution processed image 338. In some implementations, generating the output image includes combining data indicating the processed image and the first image based on the set of weights to generate the output image. For example, the blending engine 336 can generate the high resolution processed image 338 as a weighted summation or linear combination of the upscaled processed image 330 and the guided filter output 334. In some implementations, generating the output image includes generating the output image to substantially match the processed image if the set of weights indicate a covariance that satisfies a first threshold and a fitting error that satisfies a second threshold; generating the output image to substantially match the first image if the set of weights indicate a covariance that satisfies a third threshold smaller than the first threshold and a fitting error that satisfies a fourth threshold larger than the second threshold; and generating the output image to blend the first image and the processed image if the set of weights indicate a covariance that does not satisfy either the first threshold or the third threshold and a fitting error that does not satisfy the second threshold or the fourth threshold. For example, when covariance is small and fitting error is large, the primary output can be the upscaled processed image 330. When the covariance is large and fitting error is small, the primary output can be the guided filter output 334. In other cases, a blended output between the upscaled processed image 330 and the guided filter output 334 can be used. A similar blending operation can be performed in instances where processes other than an adaptive filter guide approach are used to generate at least one of the images to be blended. In some implementations, the process 400 includes generating an upscaled version of (i) the set of weights and (ii) the first image. For example, the upscaling engine 326 can generate an upscaled version of the first fitting output 322 or the second fitting output 324. The upscaling engine 326 can generate an upscaled version of the processed image 318. In some implementations, generating the (i) the set of weights and (ii) the first image includes performing operations of bilinear upsampling on data representing the set of weights and the first image. In Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT some implementations, generating the output image includes using the upscaled version of (i) the set of weights and (ii) the first image. For example, the blending engine 336 can generate the high resolution processed image 338 using an upscaled version of weights and an upscaled version of an image, such as the upscaled processed image 330. The order of operations in the process 400 described above is illustrative only, and can be performed in different orders in some cases. In some implementations, the process 400 can include additional operations, fewer operations, or some of the operations can be divided into multiple operations. For example, determining a degree of similarity can be combined with generate a set of parameters, e.g., within a linear model fitting process. In some cases, the process 400 does not include upscaling. For example, instead of generating an upscaled version of the set of parameters, the process 400 can generate a processed image using the set of parameters and the guide image. The adaptive guide filter approach can be used in cases where an image is not first downscaled, or captured in a lower resolution, and is subsequently upscaled. However, the adaptive guide filter approach can be useful in eliminating image artifacts in the process of upscaling an image, e.g., by a process of upsampling. FIG. 5 is a flowchart of an example process 500 for generating image output. For convenience, the process 500 will be described as being performed by a system of one or more computers, located in one or more locations, and programmed appropriately in accordance with this specification. For example, the system 300 of FIG.3, the device 200 of FIG.2, or the system 100 of FIG.1, appropriately programmed, can perform the process 500. The process 500 includes obtaining a first processed image and a second processed image (502). In some cases, the first processed image is generated using a first process of filtering a first image and the second processed image is generated using a second process of upscaling the first image. For example, the first processed image can include the guided filter output 334 and the second processed image can include the upscaled processed image 330. In some cases, other processing techniques can be used to generate the first and second processed images. Output from these other processes, used to generate the images, can be used for subsequent processing to generate an output that blends the first and second processed image. The blending engine 336 can obtain the guided filter output 334 and the upscaled processed image 330. In some cases, the first process of filtering the first image includes generating a model fitting using the first image as input and a guide image; and generating the first Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT processed image as the first image filtered based on the model fitting. For example, the model fitting engine 320 can generate output from a model fitting, where the processed image 318 and the downscaled guide image 314 are used as input. In some cases, prior to generating the first processed image as the first image filtered based on the model fitting, the first process of filtering the first image includes generating an upscaled version of the model fitting. For example, the upscaling engine 326 can generate the upscaled first fitting output 328 which can be used by the transformer engine 332 to generate the guided filter output 334. In some cases, the upscaling engine 326 can use operations of bilinear upsampling. In some cases, generating the model fitting using the first image as input and the guide image includes generating a linear model fitting using the first image as input and the guide image. For example, the model fitting engine 320 can fit a linear model using the processed image 318 and the downscaled guide image 314 as input. The process 500 includes obtaining a processing output from the first process of filtering the first image (504). In some cases, the processing output is different than the first processed image. For example, the blending engine 336 can obtain the upscaled second fitting output 329. In cases where there is no upscaling, the blending engine 336 can obtain data indicating a process used to generate the first processed image, e.g., an image processing algorithm, pixel adjustments, generative artificial intelligence image enhancement, or a combination of these among others. In some cases, obtaining the processing output from the first process of filtering the first image includes obtaining a model fitting error from fitting the first image using a first model. For example, the blending engine 336 can obtain processing output as output from the model fitting engine 320. In some cases, that output is upscaled prior to being obtained by the blending engine 336. In some cases, the model used for fitting is a linear model. The process 500 includes generating a set of weights based on (i) the processing output and (ii) a comparison of pixels of the first processed image and the second processed image (506). For example, the blending engine 336 can generate a set of weights using the upscaled second fitting output 329. In some cases, the weights match the upscaled second fitting output 329. In some cases, the blending engine 336 generates new data representing the weights using the upscaled second fitting output 329 as input data. For example, the blending engine 336 can generate a set of weights based on generating one or more parameters in the linear model fitting, e.g., processes of the model Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT fitting engine 320. The set of weights can be generated based on covariance values from fitting a model and fitting errors. Fitting error and covariance can include scale factors to adjust an effect of each of the covariance or fitting error on an output image. In some cases, generating the set of weights based on (i) the processing output and (ii) the comparison of the pixels of the first processed image and the second processed image includes generating one or more weights based on at least one of covariance values or fitting errors extracted from prior fitting of the first image using a first model. For example, the blending engine 336 can determine one or more covariance values or fitting errors, e.g., from the upscaled second fitting output 329. The process 500 includes generating an output image using (i) the first processed image, (ii) the second processed image, and (iii) the generated set of weights (508). For example, the blending engine 336 can generate the high resolution processed image 338. In some cases, generating the output image includes generating one or more regions in the output image that combine, based on the generated set of weights, the first processed image and the second processed image. For example, the blending engine 336 can blend the guided filter output 334 and the upscaled processed image 330 using one or more generated weights. In some cases, generating the one or more regions in the output image that combine the first processed image and the second processed image includes generating pixel values for the one or more regions that match the first processed image or match the second processed image. For example, the blending engine 336 can generate output in the high resolution processed image 338 that matches either, or both of, the guided filter output 334 and the upscaled processed image 330, e.g., based on a weighted summation calculation. In some cases, generating the one or more regions in the output image that combine the first processed image and the second processed image includes generating pixel values for the one or more regions that do not match the first processed image and do not match the second processed image. For example, because of blending operations, an output pixel of the high resolution processed image 338 might not match either of the guided filter output 334 or the upscaled processed image 330 but might, e.g., be a blend of those two to create new values. The blending engine 336 can generate one or more correlation weights, error weights, or blending weights, where an output can be generated using one or more of the generated correlation weights, error weights, or blending weights. In some cases, the process 500 includes comparing the pixels of the first processed image and the second processed image prior to generating the set of weights based on (i) Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT the processing output and (ii) the comparison of the pixels of the first processed image and the second processed image. For example, the blending engine 336 can compare at least portion of both the guided filter output 334 and the upscaled processed image 330. The blending engine 336 can use a comparison between the guided filter output 334 and the upscaled processed image 330 to generate weights for generating the high resolution processed image 338. In some cases, generating the output image includes generating the output image to substantially match the first processed image if the generated set of weights indicate a covariance that satisfies a first threshold and a fitting error that satisfies a second threshold; generating the output image to substantially match the second processed image if the generated set of weights indicate a covariance that satisfies a third threshold smaller than the first threshold and a fitting error that satisfies a fourth threshold larger than the second threshold; and generating the output image to blend the first processed image and the second processed image if the generated set of weights indicate a covariance that does not satisfy either the first threshold or the third threshold and a fitting error that does not satisfy the second threshold or the fourth threshold. FIG. 6 is a diagram illustrating an example of a computing system, e.g., used for upscaling. The computing system includes computing device 600 and a mobile computing device 650 that can be used to implement the techniques described herein. For example, one or more components of the system 100, device 200, or system 300 could be an example of the computing device 600 or the mobile computing device 650. The computing device 600 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers. The mobile computing device 650 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular telephones, smart-phones, mobile embedded radio systems, radio diagnostic computing devices, and other similar computing devices. The components shown here, their connections and relationships, and their functions, are meant to be examples only, and are not meant to be limiting. The computing device 600 includes a processor 602, a memory 604, a storage device 606, a high-speed interface 608 connecting to the memory 604 and multiple high- speed expansion ports 610, and a low-speed interface 612 connecting to a low-speed expansion port 614 and the storage device 606. Each of the processor 602, the memory 604, the storage device 606, the high-speed interface 608, the high-speed expansion ports Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT 610, and the low-speed interface 612, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate. The processor 602 can process instructions for execution within the computing device 600, including instructions stored in the memory 604 or on the storage device 606 to display graphical information for a GUI on an external input / output device, such as a display 616 coupled to the high-speed interface 608. In other implementations, multiple processors and / or multiple buses may be used, as appropriate, along with multiple memories and types of memory. In addition, multiple computing devices may be connected, with each device providing portions of the operations (e.g., as a server bank, a group of blade servers, or a multi-processor system). In some implementations, the processor 602 is a single threaded processor. In some implementations, the processor 602 is a multi-threaded processor. In some implementations, the processor 602 is a quantum computer. The memory 604 stores information within the computing device 600. In some implementations, the memory 604 is a volatile memory unit or units. In some implementations, the memory 604 is a non-volatile memory unit or units. The memory 604 may also be another form of computer-readable medium, such as a magnetic or optical disk. The storage device 606 is capable of providing mass storage for the computing device 600. In some implementations, the storage device 606 may be or include a computer- readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid-state memory device, or an array of devices, including devices in a storage area network or other configurations. Instructions can be stored in an information carrier. The instructions, when executed by one or more processing devices (for example, processor 602), perform one or more methods, such as those described above. The instructions can also be stored by one or more storage devices such as computer- or machine-readable mediums (for example, the memory 604, the storage device 606, or memory on the processor 602). The high-speed interface 608 manages bandwidth-intensive operations for the computing device 600, while the low- speed interface 612 manages lower bandwidth-intensive operations. Such allocation of functions is an example only. In some implementations, the high-speed interface 608 is coupled to the memory 604, the display 616 (e.g., through a graphics processor or accelerator), and to the high-speed expansion ports 610, which may accept various expansion cards (not shown). In the implementation, the low-speed interface 612 is coupled to the storage device 606 and the low-speed expansion port 614. The low-speed expansion port 614, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT wireless Ethernet) may be coupled to one or more input / output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter. The computing device 600 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server 620, or multiple times in a group of such servers. In addition, it may be implemented in a personal computer such as a laptop computer 622. It may also be implemented as part of a rack server system 624. Alternatively, components from the computing device 600 may be combined with other components in a mobile device, such as a mobile computing device 650. Each of such devices may include one or more of the computing device 600 and the mobile computing device 650, and an entire system may be made up of multiple computing devices communicating with each other. The mobile computing device 650 includes a processor 652, a memory 664, an input / output device such as a display 654, a communication interface 666, and a transceiver 668, among other components. The mobile computing device 650 may also be provided with a storage device, such as a micro-drive or other device, to provide additional storage. Each of the processor 652, the memory 664, the display 654, the communication interface 666, and the transceiver 668, are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate. The processor 652 can execute instructions within the mobile computing device 650, including instructions stored in the memory 664. The processor 652 may be implemented as a chipset of chips that include separate and multiple analog and digital processors. The processor 652 may provide, for example, for coordination of the other components of the mobile computing device 650, such as control of user interfaces, applications run by the mobile computing device 650, and wireless communication by the mobile computing device 650. The processor 652 may communicate with a user through a control interface 658 and a display interface 656 coupled to the display 654. The display 654 may be, for example, a TFT (Thin-Film-Transistor Liquid Crystal Display) display or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology. The display interface 656 may include appropriate circuitry for driving the display 654 to present graphical and other information to a user. The control interface 658 may receive commands from a user and convert them for submission to the processor 652. In addition, Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT an external interface 662 may provide communication with the processor 652, so as to enable near area communication of the mobile computing device 650 with other devices. The external interface 662 may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used. The memory 664 stores information within the mobile computing device 650. The memory 664 can be implemented as one or more of a computer-readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units. An expansion memory 674 may also be provided and connected to the mobile computing device 650 through an expansion interface 672, which may include, for example, a SIMM (Single In Line Memory Module) card interface. The expansion memory 674 may provide extra storage space for the mobile computing device 650, or may also store applications or other information for the mobile computing device 650. Specifically, the expansion memory 674 may include instructions to carry out or supplement the processes described above, and may include secure information also. Thus, for example, the expansion memory 674 may be provide as a security module for the mobile computing device 650, and may be programmed with instructions that permit secure use of the mobile computing device 650. In addition, secure applications may be provided via the SIMM cards, along with additional information, such as placing identifying information on the SIMM card in a non-hackable manner. The memory may include, for example, flash memory and / or NVRAM memory (nonvolatile random access memory), as discussed below. In some implementations, instructions are stored in an information carrier such that the instructions, when executed by one or more processing devices (for example, processor 652), perform one or more methods, such as those described above. The instructions can also be stored by one or more storage devices, such as one or more computer- or machine-readable mediums (for example, the memory 664, the expansion memory 674, or memory on the processor 652). In some implementations, the instructions can be received in a propagated signal, for example, over the transceiver 668 or the external interface 662. The mobile computing device 650 may communicate wirelessly through the communication interface 666, which may include digital signal processing circuitry in some cases. The communication interface 666 may provide for communications under various modes or protocols, such as GSM voice calls (Global System for Mobile communications), SMS (Short Message Service), EMS (Enhanced Messaging Service), or Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT MMS messaging (Multimedia Messaging Service), CDMA (code division multiple access), TDMA (time division multiple access), PDC (Personal Digital Cellular), WCDMA (Wideband Code Division Multiple Access), CDMA2000, or GPRS (General Packet Radio Service), LTE, 6G / 6G cellular, among others. Such communication may occur, for example, through the transceiver 668 using a radio frequency. In addition, short-range communication may occur, such as using a Bluetooth, Wi-Fi, or other such transceiver (not shown). In addition, a GPS (Global Positioning System) receiver module 670 may provide additional navigation- and location-related wireless data to the mobile computing device 650, which may be used as appropriate by applications running on the mobile computing device 650. The mobile computing device 650 may also communicate audibly using an audio codec 660, which may receive spoken information from a user and convert it to usable digital information. The audio codec 660 may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of the mobile computing device 650. Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, among others) and may also include sound generated by applications operating on the mobile computing device 650. The mobile computing device 650 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a cellular telephone 680. It may also be implemented as part of a smart-phone 682, personal digital assistant, or other similar mobile device. In general, use of “or” can refer to “and / or.” When providing a list of two or more items, the conjunction “or” can indicate any one of the items, any combination of a subset of the items, or all items in combination. In this specification the term “engine” is used broadly to refer to a software-based system, subsystem, or process that is programmed to perform one or more specific functions. Generally, an engine will be implemented as one or more software modules or components, installed on one or more computers in one or more locations. In some cases, one or more computers will be dedicated to a particular engine; in other cases, multiple engines can be installed and running on the same computer or computers. The subject matter and the actions and operations described in this specification can be implemented in digital electronic circuitry, in tangibly-embodied computer software or firmware, in computer hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. The subject matter Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT and the actions and operations described in this specification can be implemented as or in one or more computer programs, e.g., one or more modules of computer program instructions, encoded on a computer program carrier, for execution by, or to control the operation of, data processing apparatus. The carrier can be a tangible non-transitory computer storage medium. Alternatively or in addition, the carrier can be an artificially- generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. The computer storage medium can be or be part of a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of them. A computer storage medium is not a propagated signal. The term “data processing apparatus” encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. Data processing apparatus can include special-purpose logic circuitry, e.g., an FPGA (field programmable gate array), an ASIC (application-specific integrated circuit), or a GPU (graphics processing unit). The apparatus can also include, in addition to hardware, code that creates an execution environment for computer programs, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A computer program can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages; and it can be deployed in any form, including as a stand-alone program, e.g., as an app, or as a module, component, engine, subroutine, or other unit suitable for executing in a computing environment, which environment may include one or more computers interconnected by a data communication network in one or more locations. A computer program may, but need not, correspond to a file in a file system. A computer program can be stored in a portion of a file that holds other programs or data, e.g., one or more scripts stored in a markup language document, in a single file dedicated to the program in question, or in multiple coordinated files, e.g., files that store one or more modules, sub-programs, or portions of code. The processes and logic flows described in this specification can be performed by one or more computers executing one or more computer programs to perform operations by operating on input data and generating output. The processes and logic flows can also Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT be performed by special-purpose logic circuitry, e.g., an FPGA, an ASIC, or a GPU, or by a combination of special-purpose logic circuitry and one or more programmed computers. Computers suitable for the execution of a computer program can be based on general or special-purpose microprocessors or both, or any other kind of central processing unit. Generally, a central processing unit will receive instructions and data from a read- only memory or a random access memory or both. The essential elements of a computer are a central processing unit for executing instructions and one or more memory devices for storing instructions and data. The central processing unit and the memory can be supplemented by, or incorporated in, special-purpose logic circuitry. Generally, a computer will also include, or be operatively coupled to, one or more mass storage devices, and be configured to receive data from or transfer data to the mass storage devices. The mass storage devices can be, for example, magnetic, magneto-optical, or optical disks, or solid state drives. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device, e.g., a universal serial bus (USB) flash drive, to name just a few. To provide for interaction with a user, the subject matter described in this specification can be implemented on one or more computers having, or configured to communicate with, a display device, e.g., a LCD (liquid crystal display) monitor, or a virtual-reality (VR) or augmented-reality (AR) display, for displaying information to the user, and an input device by which the user can provide input to the computer, e.g., a keyboard and a pointing device, e.g., a mouse, a trackball or touchpad. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback and responses provided to the user can be any form of sensory feedback, e.g., visual, auditory, speech, or tactile feedback or responses; and input from the user can be received in any form, including acoustic, speech, tactile, or eye tracking input, including touch motion or gestures, or kinetic motion or gestures or orientation motion or gestures. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user’s device in response to requests received from the web browser, or by interacting with an app running on a user device, e.g., a smartphone or electronic tablet. Also, a computer can interact with a user by sending text messages or other forms of Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT message to a personal device, e.g., a smartphone that is running a messaging application, and receiving responsive messages from the user in return. This specification uses the term “configured to” in connection with systems, apparatus, and computer program components. That a system of one or more computers is configured to perform particular operations or actions means that the system has installed on it software, firmware, hardware, or a combination of them that in operation cause the system to perform the operations or actions. That one or more computer programs is configured to perform particular operations or actions means that the one or more programs include instructions that, when executed by data processing apparatus, cause the apparatus to perform the operations or actions. That special-purpose logic circuitry is configured to perform particular operations or actions means that the circuitry has electronic logic that performs the operations or actions. The subject matter described in this specification can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface, a web browser, or an app through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (LAN) and a wide area network (WAN), e.g., the Internet. The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some implementations, a server transmits data, e.g., an HTML page, to a user device, e.g., for purposes of displaying data to and receiving user input from a user interacting with the device, which acts as a client. Data generated at the user device, e.g., a result of the user interaction, can be received at the server from the device. While this specification contains many specific implementation details, these should not be construed as limitations on the scope of what is being claimed, which is defined by the claims themselves, but rather as descriptions of features that may be specific to particular embodiments of particular inventions. Certain features that are described in Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially be claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claim may be directed to a subcombination or variation of a subcombination. Similarly, while operations are depicted in the drawings and recited in the claims in a particular order, this by itself should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system modules and components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products. Particular embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. For example, the actions recited in the claims can be performed in a different order and still achieve desirable results. As one example, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In some cases, multitasking and parallel processing may be advantageous. What is claimed is:

Claims

Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT CLAIMS 1. A method comprising: obtaining (i) a first image and (ii) a guide image; processing, using one or more image processing operations, the first image; determining a degree of similarity between the first image and the guide image; generating, using a first model and the degree of similarity, a set of parameters including a first and a second parameter; generating an upscaled version of the set of parameters; and generating, using the upscaled version of the set of parameters and an upscaled version of the guide image, a processed image, wherein the processed image is of a higher resolution compared to the obtained first image.

2. The method of claim 1, wherein processing, using the one or more image processing operations, the first image comprises: performing per pixel color adjustments on the first image.

3. The method of claim 1, wherein determining the degree of similarity between the first image and the guide image comprises determining a degree of similarity for each of one or more regions that are present within both the first image and the guide image, and wherein generating the set of parameters comprises generating a first and second parameter for each of the one or more regions that are present within both the first image and the guide image.

4. The method of claim 1, wherein generating the upscaled version of the set of parameters comprises: performing operations of bilinear upsampling on data representing the set of parameters.

5. The method of claim 1, wherein generating the processed image comprises: performing operations of an affine transform using the upscaled version of the set of parameters applied to the upscaled version of the guide image.Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT 6. The method of claim 1, comprising: generating a set of weights based on generating the set of parameters including the first and the second parameter; and generating an output image using (i) the set of weights, (ii) the processed image, and (iii) the first image.

7. The method of claim 6, wherein generating the output image comprises: combining data indicating the processed image and the first image based on the set of weights to generate the output image.

8. The method of claim 6, wherein generating the output image comprises: generating the output image to substantially match the processed image if the set of weights indicate a covariance that satisfies a first threshold and a fitting error that satisfies a second threshold; generating the output image to substantially match the first image if the set of weights indicate a covariance that satisfies a third threshold smaller than the first threshold and a fitting error that satisfies a fourth threshold larger than the second threshold; and generating the output image to blend the first image and the processed image if the set of weights indicate a covariance that does not satisfy either the first threshold or the third threshold and a fitting error that does not satisfy the second threshold or the fourth threshold.

9. The method of claim 6, comprising: generating an upscaled version of (i) the set of weights and (ii) the first image.

10. The method of claim 9, wherein generating the (i) the set of weights and (ii) the first image comprises: performing operations of bilinear upsampling on data representing the set of weights and the first image.

11. The method of claim 9, wherein generating the output image comprises using the upscaled version of (i) the set of weights and (ii) the first image.Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT 12. One or more computer-readable storage media encoded with instructions that, when executed by one or more computers, cause the one or more computers to perform operations comprising: obtaining (i) a first image and (ii) a guide image; processing, using one or more image processing operations, the first image; determining a degree of similarity between the first image and the guide image; generating, using a first model and the degree of similarity, a set of parameters including a first and a second parameter; generating an upscaled version of the set of parameters; and generating, using the upscaled version of the set of parameters and an upscaled version of the guide image, a processed image, wherein the processed image is of a higher resolution compared to the obtained first image.

13. The media of claim 12, wherein processing, using the one or more image processing operations, the first image comprises: performing per pixel color adjustments on the first image.

14. The media of claim 12, wherein determining the degree of similarity between the first image and the guide image comprises determining a degree of similarity for each of one or more regions that are present within both the first image and the guide image, and wherein generating the set of parameters comprises generating a first and second parameter for each of the one or more regions that are present within both the first image and the guide image.

15. The media of claim 12, wherein generating the upscaled version of the set of parameters comprises: performing operations of bilinear upsampling on data representing the set of parameters.

16. The media of claim 12, wherein generating the processed image comprises:Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT performing operations of an affine transform using the upscaled version of the set of parameters applied to the upscaled version of the guide image.

17. The media of claim 12, where the operations comprise: generating a set of weights based on generating the set of parameters including the first and the second parameter; and generating an output image using (i) the set of weights, (ii) the processed image, and (iii) the first image.

18. The media of claim 17, wherein generating the output image comprises: combining data indicating the processed image and the first image based on the set of weights to generate the output image.

19. The media of claim 17, wherein generating the output image comprises: generating the output image to substantially match the processed image if the set of weights indicate a covariance that satisfies a first threshold and a fitting error that satisfies a second threshold; generating the output image to substantially match the first image if the set of weights indicate a covariance that satisfies a third threshold smaller than the first threshold and a fitting error that satisfies a fourth threshold larger than the second threshold; and generating the output image to blend the first image and the processed image if the set of weights indicate a covariance that does not satisfy either the first threshold or the third threshold and a fitting error that does not satisfy the second threshold or the fourth threshold.

20. A system comprising: one or more computers and one or more storage devices on which are stored instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising: obtaining (i) a first image and (ii) a guide image; processing, using one or more image processing operations, the first image; determining a degree of similarity between the first image and the guide image;Attorney Docket No.56113-0718WO1 Client Ref: GP-307585-00-PCT generating, using a first model and the degree of similarity, a set of parameters including a first and a second parameter; generating an upscaled version of the set of parameters; and generating, using the upscaled version of the set of parameters and an upscaled version of the guide image, a processed image, wherein the processed image is of a higher resolution compared to the obtained first image.

Citation Information

Patent Citations

  • Time-of-flight down-up sampling using a compressed guide

    US11425324B2

  • Active stereo depth prediction based on coarse matching

    US20230209036A1