# Patent

## Title
System and method for depth-guided filtering in a video conference environment

## Abstract

A method is provided in one example embodiment that includes generating a depth map that corresponds to a video image and filtering the depth map with the video image to create a filtered depth map. The video image can be filtered with the filtered depth map to create an image. In one example implementation, the video image is filtered using extended depth-guided filtering that is incorporated into a video encoding-decoding loop.

## Background
TECHNICAL FIELD
This disclosure relates in general to the field of communications, and more particularly, to a system and a method for depth-guided filtering in a video conference environment.
BACKGROUND
Video architectures have grown in complexity in recent times. Some video architectures can deliver real-time, face-to-face interactions between people using advanced visual, audio, and collaboration technologies. In certain architectures, service providers may offer sophisticated video conferencing services for their end users, which can simulate an “in-person” meeting experience over a network. The ability to enhance video encoding and decoding with certain bitrate constraints during a video conference presents a significant challenge to developers and designers, who attempt to offer a video conferencing solution that is realistic and that mimics a real-life meeting.



BRIEF DESCRIPTION OF THE DRAWINGS
To provide a more complete understanding of the present disclosure and features and advantages thereof, reference is made to the following description, taken in conjunction with the accompanying figures, wherein like reference numerals represent like parts, in which:
FIG. 1 is a simplified block diagram illustrating an example embodiment of a communication system in accordance with one embodiment of the present disclosure;
FIG. 2A is a simplified block diagram illustrating possible example details associated with one embodiment of the present disclosure;
FIG. 2B is a simplified block diagram illustrating possible example details associated with one embodiment of the present disclosure;
FIG. 3 is a simplified block diagram illustrating possible example details associated with one embodiment of the present disclosure;
FIG. 4 is a simplified block diagram illustrating possible example details associated with one embodiment of the present disclosure; and
FIG. 5 is a simplified flowchart illustrating potential operations associated with the communication system in accordance with one embodiment of the present disclosure.



DETAILED DESCRIPTION OF EXAMPLE EMBODIMENTS
Overview
A method is provided in one example embodiment that includes generating a depth map that corresponds to a video image and filtering the depth map with the video image to create a filtered depth map. The video image can be filtered with the filtered depth map to create an image. In one example implementation, the video image is filtered using extended depth-guided filtering that is incorporated into a video encoding-decoding loop.
In more detailed embodiments, the method may also include using the video image to create a pyramid of video images and using the depth map to create a pyramid of depth maps. The pyramid of video images may be combined with the pyramid of depth maps, layered into multiple bit streams, and cascaded to create the image. The term ‘pyramid’ in this context refers to any suitable combination, integration, formulation, arrangement, hierarchy, organization, composition, make-up, structure, format, or design associated with one or more video images. The method may further include using upsampling when the depth map has a lower resolution than the video image. The term ‘upsampling’ in this context simply refers to a process of increasing a sampling rate of a signal (by any suitable level).
In another example, filtering the depth map may include removing noise from the depth map. In yet another example, filtering the depth map may include filling in missing data from the depth map. The method may also include encoding the image into a bit stream for transmission over a network.
Example Embodiments
Turning to FIG. 1, FIG. 1 is a simplified schematic diagram illustrating a communication system 10 for conducting a video conference in accordance with one embodiment of the present disclosure. Communication system 10 includes a multipoint manager module 18 and multiple endpoints associated with various end users of the video conference. Multipoint manager module 18 includes an extended depth-guided filtering (EDGF) module 20, a video encoder 22, a processor 24a, and a memory 26a.
In general, endpoints may be geographically separated, where in this particular example, a plurality of endpoints 12a-12c are located in San Jose, Calif. and remote endpoints (not shown) are located in Chicago, Ill. Note that the numerical and letter designations assigned to the endpoints do not connote any type of hierarchy; the designations are arbitrary and have been used for purposes of teaching only. These designations should not be construed in any way to limit their capabilities, functionalities, or applications in the potential environments that may benefit from the features of communication system 10.
In this example, each endpoint 12a-12c is fitted discreetly along a desk and is proximate to its associated participant. Such endpoints could be provided in any other suitable location, as FIG. 1 only offers one of a multitude of possible implementations for the concepts presented herein. In one example implementation, the endpoints are videoconferencing endpoints, which can assist in receiving and communicating video and audio data. Other types of endpoints are certainly within the broad scope of the outlined concepts, and some of these example endpoints are further described below. Each endpoint 12a-12c is configured to interface with the multipoint manager module 18, which helps to coordinate and to process information being transmitted by the end users.
As illustrated in FIG. 1, a number of image capture devices 14a-14c and displays 16a-16c are provided to interface with endpoints 12a-12c, respectively. Displays 16a-16c render images to be seen by conference participants and, in this particular example, reflect a three-display design (e.g., a ‘triple’). Note that as used herein in this Specification, the term ‘display’ is meant to connote any element that is capable of delivering image data (inclusive of video information), text, sound, audiovisual data, etc. to participants. This would necessarily be inclusive of any screen-cubes, panel, plasma element, television (which may be high-definition), monitor, computer interface, screen, Telepresence devices (inclusive of Telepresence boards, panels, screens, surfaces, etc.), or any other suitable element that is capable of delivering/rendering/projecting (from front or back) such information.
The components of communication system 10 may use specialized applications and hardware to create a system that can leverage a network. Communication system 10 can use standard IP technology and can operate on an integrated voice, video, and data network. The system can also support high quality, real-time voice, and video communications using broadband connections. It can further offer capabilities for ensuring quality of service (QoS), security, reliability, and high availability for high-bandwidth applications such as video. Power and Ethernet connections for all end users can be provided. Participants can use their laptops to access data for the meeting, join a meeting place protocol or a Web session, or stay connected to other applications throughout the meeting.
For purposes of illustrating certain example techniques of communication system 10, it is important to understand certain image processing techniques and the communications that may be traversing the network. The following foundational information may be viewed as a basis from which the present disclosure may be properly explained.
Conceptually, an image may be described as any electronic element (e.g., an artifact) that reproduces the form of a subject, such as an object or a scene. In many contexts, an image may be an optically formed duplicate or reproduction of a subject, such as a two-dimensional photograph of an object or scene. In a broader sense, an image may also include any two-dimensional representation of information, such as a drawing, painting, or map. A video is a sequence of images, in which each still image is generally referred to as a “frame.”
A digital image, in general terms, is a numeric representation of an image. A digital image is most commonly represented as a set (rows and columns) of binary values, in which each binary value is a picture element (i.e., a “pixel”). A pixel holds quantized values that represent the intensity (or “brightness”) of a given color at any specific point in the two-dimensional space of the image. A digital image can be classified generally according to the number and nature of those values (samples), such as binary, grayscale, or color. Typically, pixels are stored in a computer memory as a two-dimensional array of small integers (i.e., a raster image or a raster map).
An image (or video) may be captured by optical devices having a sensor that converts lights into electrical charges, such as a digital camera or a scanner, for example. The electrical charges can then be converted into digital values. Some digital cameras give access to almost all the data captured by the camera, using a raw image format. An image can also be synthesized from arbitrary non-image information, such as mathematical functions or three-dimensional geometric models.
Images from digital image capture devices often receive further processing to improve their quality and/or to reduce the consumption of resources, such as memory or bandwidth. For example, a digital camera frequently includes a dedicated digital image-processing unit (or chip) to convert the raw data from the image sensor into a color-corrected image in a standard image file format. Image processing in general includes any form of signal processing for which the input is an image, such as a photograph or video frame. The output of image processing may be either an image or a set of characteristics or parameters related to the image. Most image-processing techniques involve treating the image as a two-dimensional signal and applying standard signal-processing techniques to it.
Digital images can be coded (or compressed) to reduce or remove irrelevance and redundancy from the image data to improve storage and/or transmission efficiency. For example, general-purpose compression generally includes entropy encoding to remove statistical redundancy from data. However, entropy encoding is frequently not very effective for image data without an image model that attempts to represent a signal in a form that is more readily compressible. Such models exploit the subjective redundancy of images (and video). A motion model that estimates and compensates for motion can also be included to exploit significant temporal redundancy usually found in video.
An image encoder usually processes image data in blocks of samples. Each block can be transformed (e.g., with a discrete cosine transform) into spatial frequency coefficients. Energy in the transformed image data tends to be concentrated in a few significant coefficients; other coefficients are usually close to zero or insignificant. The transformed image data can be quantized by dividing each coefficient by an integer and discarding the remainder, typically leaving very few non-zero coefficients, which can readily be encoded with an entropy encoder. In video, the amount of data to be coded can be reduced significantly if the previous frame is subtracted from the current frame.
Digital image processing often also includes some form of filtering intended to improve the quality of an image, such as by reducing noise and other unwanted artifacts. Image noise can be generally defined as random variation of brightness or color information in images not present in the object imaged. Image noise is usually an aspect of electronic noise, which can be produced by the sensor and/or other circuitry of a capture device. Image noise can also originate during quantization. In video, noise can also refer to the random dot pattern that is superimposed on the picture as a result of electronic noise. Interference and static are other forms of noise, in the sense that they are unwanted, which can affect transmitted signals.
Smoothing filters attempt to preserve important patterns in an image, while reducing or eliminating noise or other fine-scale structures. Many different algorithms can be implemented in filters to smooth an image. One of the most common algorithms is the “moving average”, often used to try to capture important trends in repeated statistical surveys. Noise filters, for example, generally attempt to determine whether the actual differences in pixel values constitute noise or real photographic detail, and average out the former while attempting to preserve the latter. However, there is often a tradeoff made between noise removal and preservation of fine, low-contrast detail that may have characteristics similar to noise. Other filters (e.g., a deblocking filter) can be applied to improve visual quality and prediction performance, such as by smoothing the sharp edges that can form between macroblocks when block-coding techniques are used.
Image textures can also be calculated in image processing to quantify the perceived texture of an image. Image texture data provides information about the spatial arrangement of color or intensities in an image or a selected region of an image. The use of edge detection to determine the number of edge pixels in a specified region helps determine a characteristic of texture complexity. After edges have been found, the direction of the edges can also be applied as a characteristic of texture and can be useful in determining patterns in the texture. These directions can be represented as an average or in a histogram. Image textures may also be useful for classification and segmentation of images. In general, there are two primary types of segmentation based on image texture: region-based and boundary-based. Region-based segmentation generally attempts to group or cluster pixels based on texture properties together, while boundary-based segmentation attempts to group or cluster pixels based on edges between pixels that come from different texture properties. Though image texture is not always a perfect measure for segmentation, it can be used effectively along with other measures, such as color, to facilitate image segmentation.
In 3-D imaging, an image may be accompanied by a depth map that contains information corresponding to a third dimension of the image: indicating distances of objects in the scene to the viewpoint. In this sense, depth is a broad term indicative of any type of measurement within a given image. Each depth value in a depth map can correspond to a pixel in an image, which can be correlated with other image data (e.g., intensity values). Depth maps may be used for virtual view synthesis in 3-D video systems (e.g., 3DTV, or for gesture recognition in human-computer interaction, for example, MICROSOFT KINECT).
From a video coding perspective, depth maps may also be used for segmenting images into multiple regions, usually along large depth discontinuities. Each region may then be encoded separately, with possibly different parameters. One example is segmenting each image into foreground and background in which foreground objects in closer proximity to the viewpoint are differentiated from background objects that are relatively far away from the viewpoint. Such segmentation can be especially meaningful for Telepresence and video conferencing, in which scenes comprise primarily meeting participants (i.e., people).
However, merely using depth maps for image segmentation does not fully exploit the information to enhance image coding. In general, pixels within a region have been treated equally after segmentation in coding: regardless of their locations in the region with respect to other regions. In the foreground-background case, for example, a block of pixels in a color image is encoded as either foreground or background, which lacks a fine grain approach for improving image coding using depth. Further, a depth map typically has a lower resolution and contains considerable noise and missing values, which may introduce artifacts if the depth map is directly used in depth-guided filtering.
In accordance with embodiments disclosed herein, communication system 10 can resolve the aforementioned issue (and potentially others) by providing depth-guided image filtering. More specifically, communication system 10 can provide a system and method for processing a sequence of images using depth maps that are generated to correspond to the images. Depth maps and texture data of images can be used to develop a filter, which can be applied to the images. Such a system and method may be particularly advantageous for a conferencing environment such as communication system 10, in which images are encoded under a bitrate constraint and transported over a network, but the filter may also be applied advantageously independent of image encoding.
At its most general level, the system and method described herein may include receiving an image and a depth map, such as from a 3-D camera, and filtering the image according to the depth map such that details in the image that correspond to depth discontinuity and intensity variation can be preserved while substantially reducing or eliminating noise in the image. When coupled with a video encoder, the image may be further filtered such that details of objects closer to a viewpoint are preserved preferentially over objects further away, which may be particularly useful when the bitrate for encoding the image is constrained. For a block-based video encoder such as H.264 or MPEG-4, for example, the filtering may operate to reduce coding artifacts, such as artifacts introduced by quantization errors. When coupled with a video encoder, depth-guided filtering may further operate to conceal errors from partial image corruption, such as might occur with data loss during transmission.
Before turning to some of the additional operations of communication system 10, a brief discussion is provided about some of the infrastructure of FIG. 1. Endpoint 12a may be used by someone wishing to participate in a video conference in communication system 10. The term “endpoint” is inclusive of devices used to initiate a communication, such as a receiver, a computer, a set-top box, an Internet radio device (IRD), a cell phone, a smart phone, a tablet, a personal digital assistant (PDA), a Google droid, an iPhone, and iPad, or any other device, component, element, or object capable of initiating voice, audio, video, media, or data exchanges within communication system 10. Endpoints 12a-c may also be inclusive of a suitable interface to the human user, such as a display, a keyboard, a touchpad, a remote control, or other terminal equipment. Endpoints 12a-c may also be any device that seeks to initiate a communication on behalf of another entity or element, such as a program, a database, or any other component, device, element, or object capable of initiating an exchange within communication system 10. Data, as used herein in this document, refers to any type of numeric, voice, video, media, or script data, or any type of source or object code, or any other suitable information in any appropriate format that may be communicated from one point to another. In some embodiments, image capture devices may be integrated with an endpoint, particularly mobile endpoints.
In operation, multipoint manager module 18 can be configured to establish, or to foster a video session between one or more end users, which may be located in various other sites and locations. Multipoint manager module 18 can also coordinate and process various policies involving endpoints 12a-12c. In general, multipoint manager module 18 may communicate with endpoints 12a-12c through any standard or proprietary conference control protocol. Multipoint manager module 18 can include a switching component that determines which signals are to be routed to individual endpoints 12a-12c. Multipoint manager module 18 can also determine how individual end users are seen by others involved in the video conference. Furthermore, multipoint manager module 18 can control the timing and coordination of this activity. Multipoint manager module 18 can also include a media layer that can copy information or data, which can be subsequently retransmitted or simply forwarded along to one or more endpoints 12a-12c. 
Endpoints 12a-c, image capture devices 14a-c, and multipoint manager module 18 are network elements that can facilitate the extended depth-guide filtering activities discussed herein. As used herein in this Specification, the term ‘network element’ is meant to encompass any of the aforementioned elements, as well as routers, switches, cable boxes, gateways, bridges, loadbalancers, firewalls, inline service nodes, proxies, servers, processors, modules, or any other suitable device, component, element, proprietary appliance, or object operable to exchange information in a network environment. These network elements may include any suitable hardware, software, components, modules, interfaces, or objects that facilitate the operations thereof. This may be inclusive of appropriate algorithms and communication protocols that allow for the effective exchange of data or information.
In one implementation, endpoints 12a-c, image capture devices 14a-c, and/or multipoint manager module 18 include software to achieve (or to foster) the image processing activities discussed herein. This could include the implementation of instances of an EDGF module 20 at any appropriate location. Additionally, each of these elements can have an internal structure (e.g., a processor, a memory element, etc.) to facilitate some of the image processing operations described herein. In other embodiments, these activities may be executed externally to these elements, or included in some other network element to achieve the intended functionality. Alternatively, endpoints 12a-c, image capture devices 14a-c, and/or multipoint manager module 18 may include software (or reciprocating software) that can coordinate with other network elements in order to achieve the activities described herein. In still other embodiments, one or several devices may include any suitable algorithms, hardware, software, components, modules, interfaces, or objects that facilitate the operations thereof.
Turning to FIG. 2A, FIG. 2A is a simplified block diagram illustrating additional details that may be associated with EDGF module 20. EDGF module 20 includes a depth-guided filtering module 28, a depth map filtering module 30, a processor 24b, and a memory 26b. In one example, a depth map 80 is generated to correspond to a video image 78. In this example, depth map 80 has a lower resolution than video image 78 and contains noise and missing depth values.
Depth-guided filtering module 28 can be configured to combine depth information with texture data and the depth-guided filtering can help reduce coding artifacts, such as those that can be introduced by quantization errors. The depth-guided filtering can be applied to an image after inverse transform and inverse quantization, deblocking filtering, and prediction compensation. Depth map filtering module 30 can be configured to filter depth map 80 using the higher-resolution video image 78 to create a filtered depth map 82. Filtered depth map 82 is then sent to depth-guided filtering module 28 where video image 80 is filtered using filtered depth map 82 to create a filtered image 84. The two filtering procedures may be performed sequentially, or they may be applied at once in a joint form on video image 78 using (unfiltered) depth map 80. Filtered image 84 may be sent to video encoder 22 for encoding into a bit stream.
In an embodiment, EDGF module 20 can be configured to account for original depth values that may be missing due to limitations at depth acquisition or that contain considerable noise. More specifically in equations one and two below, p is the central pixel to be filtered, and q is a neighboring pixel in a window S. Dp, Ip, and Dq, Iq denote the depth and color intensity values of the two pixels, respectively. Gk, Gd, and Gr are functions (e.g., Gaussian functions) of the corresponding distance measures, respectively. Wp is a normalization factor.




  
    
      
        
          EDGF
          ⁡
          
            (
            p
            )
          
        
        =
        
          
            1
            
              W
              p
            
          
          ⁢
          
            
              ∑
              
                q
                ∈
                S
              
              
                
              
            
            ⁢
            
              
            
            ⁢
            
              
                
                  G
                  k
                
                ⁡
                
                  (
                  
                    
                    
                      p
                      -
                      q
                    
                    
                  
                  )
                
              
              ·
              
                
                  G
                  d
                
                ⁡
                
                  (
                  
                    
                    
                      
                        
                          f
                          I
                        
                        ⁡
                        
                          (
                          
                            D
                            p
                          
                          )
                        
                      
                      -
                      
                        
                          f
                          I
                        
                        ⁡
                        
                          (
                          
                            D
                            q
                          
                          )
                        
                      
                    
                    
                  
                  )
                
              
              ·
              
                
                  G
                  r
                
                ⁡
                
                  (
                  
                    
                    
                      
                        I
                        p
                      
                      -
                      
                        I
                        q
                      
                    
                    
                  
                  )
                
              
              ·
              
                I
                q
              
            
          
        
      
    
    
      
        Equation
        ⁢
        
          
        
        ⁢
        1
      
    
  
  
    
      
        
          W
          p
        
        =
        
          
            ∑
            
              q
              ∈
              S
            
            
              
            
          
          ⁢
          
            
          
          ⁢
          
            
              
                G
                k
              
              ⁡
              
                (
                
                  
                  
                    p
                    -
                    q
                  
                  
                
                )
              
            
            ·
            
              
                G
                d
              
              ⁡
              
                (
                
                  
                  
                    
                      
                        f
                        I
                      
                      ⁡
                      
                        (
                        
                          D
                          p
                        
                        )
                      
                    
                    -
                    
                      
                        f
                        I
                      
                      ⁡
                      
                        (
                        
                          D
                          q
                        
                        )
                      
                    
                  
                  
                
                )
              
            
            ·
            
              
                G
                r
              
              ⁡
              
                (
                
                  
                  
                    
                      I
                      p
                    
                    -
                    
                      I
                      q
                    
                  
                  
                
                )
              
            
          
        
      
    
    
      
        Equation
        ⁢
        
          
        
        ⁢
        2
      
    
  




The filtering of the depth value at pixel p may take a similar form using corresponding color intensity values, as shown below in equations three and four.




  
    
      
        
          
            
              f
              I
            
            ⁡
            
              (
              
                D
                p
              
              )
            
          
          =
          
            
              1
              
                K
                p
              
            
            ⁢
            
              
                ∑
                
                  q
                  ∈
                  T
                
                
                  
                
              
              ⁢
              
                
                  
                    H
                    k
                  
                  ⁡
                  
                    (
                    
                      
                      
                        p
                        -
                        q
                      
                      
                    
                    )
                  
                
                ·
                
                  
                    H
                    d
                  
                  ⁡
                  
                    (
                    
                      
                      
                        
                          D
                          p
                        
                        -
                        
                          D
                          q
                        
                      
                      
                    
                    )
                  
                
                ·
                
                  
                    H
                    r
                  
                  ⁡
                  
                    (
                    
                      
                      
                        
                          I
                          p
                        
                        -
                        
                          I
                          q
                        
                      
                      
                    
                    )
                  
                
                ·
                
                  D
                  q
                
              
            
          
        
        ⁢
        
          
        
      
    
    
      
        Equation
        ⁢
        
          
        
        ⁢
        3
      
    
  
  
    
      
        
          K
          p
        
        =
        
          
            ∑
            
              q
              ∈
              T
            
            
              
            
          
          ⁢
          
            
          
          ⁢
          
            
              
                H
                k
              
              ⁡
              
                (
                
                  
                  
                    p
                    -
                    q
                  
                  
                
                )
              
            
            ·
            
              
                H
                d
              
              ⁡
              
                (
                
                  
                  
                    
                      D
                      p
                    
                    -
                    
                      D
                      q
                    
                  
                  
                
                )
              
            
            ·
            
              
                H
                r
              
              ⁡
              
                (
                
                  
                  
                    
                      I
                      p
                    
                    -
                    
                      I
                      q
                    
                  
                  
                
                )
              
            
          
        
      
    
    
      
        Equation
        ⁢
        
          
        
        ⁢
        4
      
    
  




The filtering of depth values has two-fold implications. First, when the depth image has a lower resolution than the color image, the filtering includes upsampling such that a depth value is generated for every pixel in the color image. Second, it also embraces noise reduction so that a higher-quality depth map may be achieved.
Although the depth-guided filtering and the pre-filtering of the depth map may have similar parametric forms as presented above, they have different implications and are applied to achieve different goals. The pre-filtering of the depth map is to remove noise and generate, by interpolation, missing depth values, and hence increase the resolution and quality of the depth map. In short, it is for improving the objective quality of the depth map and bringing it closer to ground truth. On the other hand, the application of depth-guided filtering is primarily for improving the subjective quality of video images, especially when the images are going through a video encoder under bit-rate constraints.
Such a distinction would be reflected when determining functions {Gk, Gd, Gr}and {Hk, Hd, Hr} for the two filters. In depth-guided filtering, for example, {Gk, Gd, Gr} may be zero-mean Gaussian functions with standard deviations selected such that in the filtered color image, more fine details are preserved where depth values are small while only strong edges are retained in areas that have large depth values. Alternatively, in pre-filtering a depth map, {Hk, Hd, Hr} should be selected to preserve edges in the depth map even when two objects on either side of a depth discontinuity have similar color intensity and to prevent creating non-existing discontinuities on a (supposedly) smooth surface in the depth map, due to noise contained in the depth map and rich texture in the corresponding region in the color image.
In an embodiment, extended depth-guided filtering may be incorporated into a video encoding-decoding loop. In this instance, instead of operating as a stand-alone filter and having an explicit parametric form, the depth-guided filtering may take an indirect form and operate as a filter parameter controller (FPC) to existing in-loop filters. The in-loop filters may include a deblocking filter (DF) in H.264, and may also include other filters (e.g., Sample Adaptive Offset (SAO) and Adaptive Loop Filter (ALF) that have been introduced in the development of next-generation video coding standard, known as High Efficiency Video Coding (HEVC)).
Turning to FIG. 2B, FIG. 2B is a simplified block diagram illustrating additional details that may be associated with video encoder 22. Video encoder 22 includes a processor 24c, memory 26c, a transform and quantization module 32, an entropy encoding module 34, an inverse transform and inverse quantization module 36, an intra/inter prediction module 38, a deblocking filter 40, and a reference buffer 44. Video encoder 22 is generally configured to receive image information (e.g., filtered image 84) as a signal via some connection, which may be a wireless connection, or via one or more cables or wires that allow for the propagation of signals. In an embodiment, an image can be processed in blocks or macroblocks of samples. In general, video encoder 22 may be configured to transform each block into a block of spatial frequency coefficients, divide each coefficient by an integer, and discard the remainder, such as in a transform and quantization module 32. The resulting coefficients can then be encoded using entropy encoding module 34.
Intra/inter prediction module 38 may be configured to enhance encoding, such as with motion compensation. A prediction can be formed based on previously encoded data, either from the current time frame (intra-prediction) or from other frames that have already been coded (inter-prediction). For example, inverse transform and inverse quantization module 36 can be configured to rescale the quantized transform coefficients. Each coefficient can be multiplied by an integer value to restore its original scale. An inverse transform can combine the standard basis patterns, weighted by the rescaled coefficients, to re-create each block of data. These blocks can be combined together to form a macroblock, and the prediction can be subtracted from the current macroblock to form a residual. In a video encoder with an in-loop filter, deblocking filter 40 can also be applied to blocks in decoded video to improve visual quality and prediction performance by smoothing the sharp edges that can form between macroblocks when block-coding techniques are used.
Turning to FIG. 3, FIG. 3 is a simplified block diagram illustrating another embodiment of EDGF module 20. EDGF module 20 includes processor 24b, memory 26b, depth-guided filtering module 28, depth map filtering module 30, transform and quantization module 32, entropy coding module 34, inverse transform and inverse quantization module 36, intra/inter prediction module 38, and reference buffer 44. Depth-guided filtering module 28 includes a processor 24d, memory 26d, deblocking filter 40, filter parameter controller 56, sample adaptive offset module 60, and adaptive loop filter 62.
In an embodiment, EDGF module 20 can be configured for high efficiency video coding (HEVC) that includes depth-guided in-loop filtering, where a filtered depth map is sent to filter parameter controller 56. Based on depth values and available bit rates, filter parameter controller 56 can determine parameters for in-loop filters (e.g., deblocking filter 40, adaptive look filter 62, etc.) such that the subjective quality of video may be improved while the objective quality is preserved.
Turning to FIG. 4, FIG. 4 is a simplified block diagram illustrating an embodiment of video encoder 22 having depth map filtering functionality. Video encoder 22 includes processor 24c, memory 26c, an image pyramid generation module 64, depth map filtering module 30, a depth map pyramid generation module 70, a plurality of depth-guided pre-filtering modules 72a-c, a plurality of layer encoding modules 74a-c, and a bitstream multiplexer 76. Video encoder 22 can be configured to incorporate both depth-guided pre-filtering and depth-guided in-loop filtering in a scalable video coding context.
In an embodiment, a hierarchical set of lower-resolution images is first generated from the original, high-resolution image. Next, the original depth map is filtered to generate a new depth map that has the same high resolution as the original image and at a higher quality. The new depth map is then downscaled to generate a hierarchical set of depth maps, each depth map corresponding to an image in the image hierarchical set. Finally, upon encoding, each video image is filtered using the corresponding depth map in the hierarchy.
More specifically, image pyramid generation module 64 can be configured to receive video image 78 and generate an original image signal and one or more scaled image signals. The original image signal and each of the one or more scaled image signals are sent to one of the plurality of depth-guided pre-filtering modules. For example, the original image signal may be sent to depth-guided pre-filtering module 72a, one scaled image signal may be sent to depth-guided pre-filtering module 72b, and a second scaled image signal may be sent to depth-guided pre-filtering module 72c. 
Depth map pyramid generation module 70 can be configured to receive filtered depth map 82 from depth map filtering module 30 and generate a scaled filtered depth map signal and one or more original filtered depth map signals. The scaled filtered depth map signal and each of the one or more original filtered depth map signals are sent to one of the plurality of depth-guided pre-filtering modules. For example, the scaled filtered depth map signal may be sent to depth-guided pre-filtering module 72a, one original filtered depth map signal may be sent to depth-guided pre-filtering module 72b, and a second original filtered depth map signal may be sent to depth-guided pre-filtering module 72c. 
Each depth-guided pre-filtering module combines the original image signal or one of the scaled image signals (which ever was received) and the scaled filtered depth map signal or one of the original filtered depth map signals (which ever was received) into a single signal that is sent to a corresponding layer encoding module 74a-c. For example, the original image signal and the scaled filtered depth map signal sent to depth-guided pre-filtering module 72a may be combined and sent to layer encoding module 74a. In another example, the scaled image signal and the original filtered depth map signal sent to depth-guided pre-filtering module 72b may be combined and sent to layer encoding module 74b. Each layer encoding module 74a-c processes the signal and sends the processed signal to bitstream multiplexer 76 where all the signals are combined.
FIG. 5 is a simplified flowchart 500 illustrating example potential operations that may be associated with extended depth-guided filtering. At 502, a depth map is generated that corresponds to a video image. At 504, the depth map is filtered using the video image to create a filtered depth map. At 506, the video image is filtered using the filtered depth map.
Any of these elements (e.g., the network elements of FIG. 1 such as multipoint manager module 18, video encoder 22, etc.) can include memory elements for storing information to be used in achieving the extended depth-guided filtering activities as outlined herein. Additionally, each of these devices may include a processor that can execute software or an algorithm to perform the extended depth-guided filtering management activities as discussed in this Specification.
A processor can execute any type of instructions associated with the data to achieve the operations detailed herein in this Specification. In one example, processors (e.g., processor 24a, 24b) could transform an element or an article (e.g., data) from one state or thing to another state or thing. In another example, the activities outlined herein may be implemented with fixed logic or programmable logic (e.g., software/computer instructions executed by a processor) and the elements identified herein could be some type of a programmable processor, programmable digital logic (e.g., a field programmable gate array (FPGA), an erasable programmable read only memory (EPROM), an electrically erasable programmable read only memory (EEPROM)), an ASIC that includes digital logic, software, code, electronic instructions, flash memory, optical disks, CD-ROMs, DVD ROMs, magnetic or optical cards, other types of machine-readable mediums suitable for storing electronic instructions, or any suitable combination thereof.
In operation, components in communication system 10 can include one or more memory elements (e.g., memory element 26a, 26b) for storing information to be used in achieving operations as outlined herein. This includes the memory element being able to store instructions (e.g., software, logic, code, etc.) in non-transitory media such that the instructions are executed to carry out the activities described in this Specification.
These devices may further keep information in any suitable type of non-transitory storage medium (e.g., random access memory (RAM), read only memory (ROM), field programmable gate array (FPGA), erasable programmable read only memory (EPROM), electrically erasable programmable ROM (EEPROM), etc.), software, hardware, or in any other suitable component, device, element, or object where appropriate and based on particular needs.
The information being tracked, sent, received, or stored in communication system 10 could be provided in any database, register, table, cache, queue, control list, or storage structure, based on particular needs and implementations, all of which could be referenced in any suitable timeframe. Any of the memory items discussed herein should be construed as being encompassed within the broad term ‘memory element.’ Similarly, any of the potential processing elements, modules, and machines described in this Specification should be construed as being encompassed within the broad term ‘processor.’
Components of communication system 10 described and shown herein may also include suitable interfaces for receiving, transmitting, and/or otherwise communicating data or information in a network environment. Additionally, some of the processors and memories associated with the various components may be removed, or otherwise consolidated such that a single processor and a single memory location are responsible for certain activities. In a general sense, the arrangements depicted in the FIGURES may be more logical in their representations, whereas a physical architecture may include various permutations, combinations, and/or hybrids of these elements. It is imperative to note that countless possible design configurations can be used to achieve the operational objectives outlined here. Accordingly, the associated infrastructure has a myriad of substitute arrangements, design choices, device possibilities, hardware configurations, software implementations, equipment options, etc.
The elements discussed herein may be configured to keep information in any suitable memory element (random access memory (RAM), ROM, EPROM, EEPROM, ASIC, etc.), software, hardware, or in any other suitable component, device, element, or object where appropriate and based on particular needs. Any of the memory items discussed herein (e.g., database, table, cache, key, etc.) should be construed as being encompassed within the broad term “memory element.” Similarly, any of the potential processing elements, modules, and machines described herein should be construed as being encompassed within the broad term “processor.”
Note that with the examples provided above, interaction may be described in terms of two, three, or four elements or components. However, this has been done for purposes of clarity and example only. In certain cases, it may be easier to describe one or more of the functions or operations by only referencing a limited number of components. It should be appreciated that the principles described herein are readily scalable and can accommodate a large number of components, as well as more complicated/sophisticated arrangements and configurations. Accordingly, the examples provided should not limit the scope or inhibit the broad teachings provided herein as potentially applied to a myriad of other architectures. Additionally, although described with reference to particular scenarios, where a particular module is provided within an element, these modules can be provided externally, or consolidated and/or combined in any suitable fashion. In certain instances, such modules may be provided in a single proprietary unit.
It is also important to note that operations in the appended diagrams illustrate only some of the possible scenarios and patterns that may be executed by, or within elements of communication system 10. Some of these operations may be deleted or removed where appropriate, or these operations may be modified or changed considerably without departing from the scope of teachings provided herein. In addition, a number of these operations have been described as being executed concurrently with, or in parallel to, one or more additional operations. However, the timing of these operations may be altered considerably. The preceding operational flows have been offered for purposes of example and discussion. Substantial flexibility is provided in that any suitable arrangements, chronologies, configurations, and timing mechanisms may be provided without departing from the teachings provided herein.
Although a system and method for depth-guided image filtering has been described in detail with reference to particular embodiments, it should be understood that various other changes, substitutions, and alterations may be made hereto without departing from the spirit and scope of this disclosure. For example, although the previous discussions have focused on video conferencing associated with particular types of endpoints, handheld devices that employ video applications could readily adopt the teachings of the present disclosure. For example, iPhones, iPads, Android devices, personal computing applications (i.e., desktop video solutions, Skype, etc.) can readily adopt and use the depth-guided filtering operations detailed above. Any communication system or device that encodes video data would be amenable to the features discussed herein.
It is also imperative to note that the systems and methods described herein can be used in any type of imaging or video application. This can include standard video rate transmissions, adaptive bit rate (ABR), variable bit rate (VBR), CBR, or any other imaging technology in which image encoding can be utilized. Numerous other changes, substitutions, variations, alterations, and modifications may be ascertained to one skilled in the art and it is intended that the present disclosure encompass all such changes, substitutions, variations, alterations, and modifications as falling within the scope of the appended claims.
In order to assist the United States Patent and Trademark Office (USPTO) and, additionally, any readers of any patent issued on this application in interpreting the claims appended hereto, Applicant wishes to note that the Applicant: (a) does not intend any of the appended claims to invoke paragraph six (6) of 35 U.S.C. section 112 as it exists on the date of the filing hereof unless the words “means for” or “step for” are specifically used in the particular claims; and (b) does not intend, by any statement in the specification, to limit this disclosure in any way that is not otherwise reflected in the appended claims.

## Claims

1. A method, comprising:
generating a depth map that corresponds to a video image;
filtering the depth map with the video image to create a filtered depth map, wherein filtering the depth map includes filling in missing data from the depth map and upsampling when the depth map has a lower resolution than the video image, wherein the video image is a higher resolution image than the depth map, wherein details of objects closer to a viewpoint are preserved preferentially over objects further away;
using the video image to create a pyramid of video images; and
using the depth map to create a pyramid of depth maps, wherein the pyramid of video images are filtered with the pyramid of depth maps, layered into multiple bit streams, and cascaded to create an image.

2. The method of claim 1, wherein the filtering the depth map and filtering the video image are performed sequentially.

3. The method of claim 1, further comprising:
using extended depth-guided filtering that is incorporated into a video encoding-decoding loop, and wherein filtering the depth map includes removing noise from the depth map.

4. The method of claim 1, wherein zero-mean Gaussian function with standard deviations are used for filtering the depth map.

5. The method of claim 1, further comprising:
encoding the multiple bit streams for transmission over a network.

6. The method of claim 5, wherein encoding the multiple bit streams includes using a deblocking filter in H.264.

7. Logic encoded in non-transitory media that includes instructions for execution and when executed by a processor, is operable to perform operations comprising:
generating a depth map that corresponds to a video image, wherein the video image is filtered;
filtering the depth map with the video image to create a filtered depth map, wherein filtering the depth map includes filling in missing data from the depth map and upsampling when the depth map has a lower resolution than the video image, wherein the video image is a higher resolution image than the depth map, wherein details of objects closer to a viewpoint are preserved preferentially over objects further away;
using the video image to create a pyramid of video images; and
using the depth map to create a pyramid of depth maps, wherein the pyramid of video images are filtered with the pyramid of depth maps, layered into multiple bit streams, and cascaded to create an image.

8. The logic of claim 7, the operations further comprising:
encoding the multiple bit streams for transmission over a network.

9. An apparatus, comprising:
a memory element for storing data;
a processor that executes instructions associated with the data;
a manager module configured to interface with the processor and the memory element such that the apparatus is configured to:
generate a depth map that corresponds to a video image, wherein the video image is filtered;
filter the depth map with the video image to create a filtered depth map, wherein filtering the depth map includes filling in missing data from the depth map and upsampling when the depth map has a lower resolution than the video image, wherein the video image is a higher resolution image than the depth map, wherein details of objects closer to a viewpoint are preserved preferentially over objects further away;
using the video image to create a pyramid of video images; and
using the depth map to create a pyramid of depth maps, wherein the pyramid of video images are filtered with the pyramid of depth maps, layered into multiple bit streams, and cascaded to create an image.