DETAILED ACTION
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA . Claims 1-12 and 14-21 ae pending under this Office action.
Claim Rejections - 35 USC § 101
35 U.S.C. 101 reads as follows:
Whoever invents or discovers any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof, may obtain a patent therefor, subject to the conditions and requirements of this title.
The claimed invention is directed to a judicial exception (i.e., a law of nature, a natural phenomenon, or an abstract idea) without significantly more. Claims 1-20 are directed to an abstract idea in the category of “Mathematical Relationships /Formulas”. The claim(s) does/do not include additional elements that are sufficient to amount to significantly more than the judicial exception. The rationale for this determination is explained below:
Claim 1-12 and 14-21are rejected under 35 U.S.C 101 because the claimed invention is directed to a judicial exception (i.e., a law of nature, a natural phenomenon, or an abstract idea) without significantly more. Claim 1-12 and 14-21are are directed to an abstract idea in the category of “Mathematical Relationships /Formulas” that organizes, arranges, and retrieve (packs or unpack) data samples that belong to hierarchical levels of detail (LoD)s from a structured two-dimensional plane composed of blocks, where the arrangement respects block boundary, and this falls within the abstract idea groupings of “Mathematical concepts” (mathematical relationships and calculations involved in hierarchical decomposition/reconstruction of geometry data and mapping between 1-D samples sequences and a 2-D block grid, without specify how to use the encoded or decoded data such as rendering and displaying.
The following analysis of facts of this particular patent application follows the rationale suggested in the "Federal Register Notice: 2019 Revised Patent Subject Matter Eligibility Guidance" (OG Notices: January 7, 2019, available from the US PTO website at https://www.govinfo.gov/ content/pkg/FR-2019-01-07/pdf/2018-28282. pdf).
The Guidelines states:
Limitations that were found not to be enough to qualify as "significantly more" when recited in a claim with a judicial exception include (P6):
• An additional element merely recites the words "apply it" (or an equivalent) with the judicial exception, or merely includes instructions to implement an abstract idea on a computer, or merely uses a computer as a tool to perform an abstract idea;
• an additional element adds insignificant extra-solution activity to the judicial exception;
• an additional element does no more than generally link the use of a judicial exception to a particular technological environment or field of use.
In the instant case, at least one embodiment of the claimed invention is merely about a decoding method, comprising: unpacking, in a block-boundary-aligned arrangement, a plurality of samples belonging to a plurality of levels of detail (LoD) associated with geometry displacements, from a two-dimensional plane comprising a plurality of blocks. These merely describe the abstract data organization and retrieval operation “Mathematical Relationships/Formulas” performed by a generic computer.
Claim 1, and the similar independent claims 14 (packing is just the reverse Math operation of unpacking), recites a process of a few steps. Thus, the claim is directed to a process which is a statutory category under 35 U.S. C 101. (Step 1: YES)
The claim is then analyzed to determine whether it is directed to any judicial exception.
The claim recites the steps of unpacking (or packing in Claim 14) LoD data in 2D plane blocks into 1D data stream, and the data arrangements are constrained by the block boundary. Thus, the claim is directed to a judicial exception. (Step 2A: YES)
The claim is then analyzed to determine whether the claim as a whole amount to significantly more than the judicial exception.
The only elements present are abstract unpacking (packing in Claim 14) step itself and the generic descriptors “decoding (encoding in Claim 14) method”, “geometry displacements”, “levels of detail (LoD)”, ;two-dimensional plane” and “blocks”, These are recites at a high level of generality and do not provide an inventive concept.
The claim does not recite additional elements that amount to significantly more than the judicial exception. Even when viewed as a combination, the additional elements fail to transform the exception into a patent-eligible application of that exception. (Step 2B: No)
The claim is "directed to" a judicial exception. Further, the claim as a whole does not recite any more additional limitations. Therefore, the independent Claim 1, the similar independent claims 14, and their related dependent claims 2-12 and 14-21 which each dependent claim adds new limitations that do not amount to have significant effects to transform the exception into a patent-eligible application of that exception, are directed to an abstract idea and is rejected under 35 USC§ 101.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1, 10-12, and 14 ae rejected under 35 U.S.C. 103 as being unpatentable over Yea, etc. (US 20210217137 A1) in view of Mammou. etc. (US 20190087979 A1), further in view of Graziosi (US 20200105023 A1.
Regarding claim 1, Yea teaches that a decoding method (See Yea: Figs. 3-5, and [0002], “Methods and apparatuses consistent with embodiments relate to graph-based point cloud compression (G-PCC), and more particularly, a method and an apparatus for coding of attribute information of point cloud samples”’; and [0058], “The method and the apparatus for interframe point cloud attribute coding will now be described in detail. Such a method and an apparatus may be implemented in the G-PCC compressor 303 described above, namely, the prediction module 430. The method and the apparatus may also be implemented in the G-PCC decompressor 310, namely, the inverse prediction module 530”), comprising:
unpacking (See Yea: Figs. 3-5, and [0054], “The inverse quantizer 515 receives the quantized positions from the octree decoder 510, and inverse quantizes the received quantized positions, using, e.g., a scaling algorithm and/or a shifting algorithm, to obtain reconstructed positions of the points in the input point cloud”),
in a block-boundary-aligned arrangement (See Yea: Figs. 1A-B, and [0007], “Referring to FIG. 1A, in current G-PCC attributes coding, an LoD (i.e., a group) of each 3D point (e.g., P0-P9) is generated based on a distance of each 3D point, and then attribute values of 3D points in each LoD is encoded by applying prediction in an LoD-based order 110 instead of an original order 105 of the 3D points. For example, an attributes value of the 3D point P2 is predicted by calculating a distance-based weighted average value of the 3D points P0, P5 and P4 that were encoded or decoded prior to the 3D point P2”. Note that the point alignment may not be exactly the block alignment, and a secondary art will be used to this explicitly),
a plurality of samples belonging (See Yea: Figs. 3-5, and [0010], “Note that geometric locations of all point clouds are already available when attributes are coded. In addition, the neighboring points together with their reconstructed attribute values are available both at an encoder and a decoder as a k-dimensional tree structure that is used to facilitate a nearest neighbor search for each point in an identical manner”; [0011], “Second, if the variability is higher than the threshold, a rate-distortion optimized (RDO) predictor selection is performed. Multiple predictor candidates or candidate predicted values are created based on a result of a neighbor point search in generating LoD. For example, when the attributes value of the 3D point P2 is encoded by using prediction, a weighted average value of distances from the 3D point P2 to respectively the 3D points P0, P5 and P4 is set to a predictor index equal to 0. Then, a distance from the 3D point P2 to the nearest neighbor point P4 is set to a predictor index equal to 1. Moreover, distances from the 3D point P2 to respectively the next nearest neighbor points P5 and P0 are set to predictor indices equal to 2 and 3, as shown in Table 1 below”; and [0078], “Different context-models for entropy coding can be used in order to better leverage different characteristics of coefficients. In one embodiment, different context-models can be used for different LOD (Level-Of-Details) layers of lifting coefficients as higher LOD layers tend to have smaller coefficients as a result of lifting decomposition. In another embodiment, different context-models can be used for different QP (Quantization Parameter)'s as higher QP's tend to result in smaller quantized coefficients and vice versa. In another embodiment, different context-models can be used for different layers of coarse granular scalability as enhancement layers (i.e., layers added to refine the reconstructed signal to a smaller QP level) tend to be of noisier or random nature in terms of correlation among coefficients. In another embodiment, different context-models can be used depending upon the values of or a function of values of the reconstructed (hence available for reference) samples from corresponding locations in the lower quantization-level layers. For example. it is likely that areas with zero or very small reconstructed values in the lower layers have different coefficient characteristics from areas with the opposite tendency. In another embodiment, different context-models can be used depending upon the values of or a function of values of the reconstructed (hence available for reference) samples from corresponding locations in the lower LOD's at the same quantization-level. These samples from corresponding locations can be available as a result of the nearest-neighborhood search in LOD building in GPCC. Note these samples are available at the decoder as well as a result of LOD-by-LOD reconstruction as shown in the above pseudo-code. In all of the above embodiments, instead of using different context models, one can adaptively switch the look-up-tables for symbol-index coding in the case where dictionary-based coding or other methods relying on look-up-tables are used”. Note that the geometry information and attribute and distance is used to generate LoD structures, but the geometry displacement needs a second art) to a plurality of levels of detail (LoD) associated with geometry displacements,
from a two-dimensional plane comprising a plurality of blocks.
However, Yea fails to explicitly disclose that in a block-boundary-aligned arrangement; to a plurality of levels of detail (LoD) associated with geometry displacements; and from a two-dimensional plane comprising a plurality of blocks.
However, Mammou teaches that in a block-boundary-aligned arrangement (See Mammou: Figs. 3A-C, and [0080], “In some embodiments, a decoder may be configured to receive one or more encoded image frames comprising patch images for a compressed point cloud and padding in portions of the or more images that is not occupied by the patch images and decode the one or more encoded image frames, wherein less decoding resources are allocated to decoding the padded portions of the one or more images than are allocated to decoding the patch image portions of the one or more image frames”; [0160], “FIG. 3C illustrates an example image frame 312 with overlapping patches, according to some embodiments. FIG. 3C shows an example with two patches (patch image 1 and patch image 2) having overlapping 2D bounding boxes 314 and 316 that overlap at area 318. In order to determine to which patch the T×T blocks in the area 318 belong, the order of the patches may be considered. For example, the T×T block 314 may belong to the last decoded patch. This may be because in the case of an overlapping patch, a later placed patch is placed such that it overlaps with a previously placed patch. By knowing the placement order it can be resolved that areas of overlapping bounding boxes go with the latest placed patch. In some embodiments, the patch information is predicted and encoded (e.g., with an entropy/arithmetic encoder). Also, in some embodiments, U0, V0, DU0 and DV0 are encoded as multiples of T, where T is the block size used during the padding phase”; and [0585], “In some embodiments, spatio-temporal filters may be used to smooth out high frequencies in the temporal dimension, to make the signal friendlier to compress. Techniques in this category include 1) temporal smoothing filter and 2) a “temporal alignment” step to make sure the spatial-only filter mentioned above are consistent in the temporal dimension. The pre-processing stage could be easily extended to multi-level images”); and
to a plurality of levels of detail (LoD) associated with geometry displacements (See Mammou: Figs. 2, and [0103], “In some embodiments, an encoder, such as encoder 250, may be combined with or share modules with an intra point cloud frame encoder, such as encoder 200. In some embodiments, a point cloud re-sampling module, such as point cloud re-sampling module 252, may resample points in an input point cloud image frame in order to determine a one-to-one mapping between points in patches of the current image frame and points in patches of a reference image frame for the point cloud. In some embodiments, a 3D motion compensation & delta vector prediction module, such as a 3D motion compensation & delta vector prediction module 254, may apply a temporal prediction to the geometry/texture/attributes of the resampled points of the patches. The prediction residuals may be stored into images, which may be padded and compressed by using video/image codecs. In regard to spatial changes for points of the patches between the reference frame and a current frame, a 3D motion compensation & delta vector prediction module 254, may determine respective vectors for each of the points indicating how the points moved from the reference frame to the current frame. A 3D motion compensation & delta vector prediction module 254, may then encode the motion vectors using different image parameters. For example, changes in the X direction for a point may be represented by an amount of red included at the point in a patch image that includes the point. In a similar manner, changes in the Y direction for a point may be represented by an amount of blue included at the point in a patch image that includes the point. Also, in a similar manner, changes in the Z direction for a point may be represented by an amount of green included at the point in a patch image that includes the point. In some embodiments, other characteristics of an image included in a patch image may be adjusted to indicate motion of points included in the patch between a reference frame for the patch and a current frame for the patch.”; [0531], “In some embodiments, a predefined scanning order may be signaled. For example, a raster scan, a zig-zag scan, a z-order, a traverse scan or their vertical inversion could be used. The scanning order may be different for geometry residual frames and texture residual frames. In some embodiments, the scanning order for each frame may be signaled separately. For example, FIG. 13A illustrates example scanning techniques including a raster scan, a zigzag scan, a “Z” scan, and a traverse scan”; and Fig. 13A-L, and [0533], “In some embodiments, when missed points (Ps) have more than one component, such as 3-component missed points, the components may be interleaved or grouped per component type. For example, FIG. 13B shows (a) interleaved components and (b) components grouped per component type. For example, when geometry residuals are mapped onto a single plane, a residual set of one missed point (dx(Q), dy(Q), dz(Q)) may be mapped sequentially as shown in FIG. 13B (a). And as another example, when residuals are again mapped onto a single plane, residual sets of missed points (dx(Q), dy(Q), dz(Q)) may be mapped per axis, e.g. all the dx(Q) can be mapped first, then all the dy(Q), and then all the dz(Q) may be mapped, as shown in FIG. 13B (b)”. Note that the geometry residual packing into the video frames is mapped to the geometry displacement).
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention was effectively filed to modify Yea to have in a block-boundary-aligned arrangement; and from a two-dimensional plane comprising a plurality of blocks as taught by Mammou in order to avoid inter-patch contamination during compression and/or improve compression efficiency (See Mammou: Fig. 1, and [0173], “Store depth information for different patches in different color planes Y, U and V, in order to avoid inter-patch contamination during compression and/or improve compression efficiency (e.g., have correlated patches in the same color plane). Also, hardware codec capabilities may be utilized, which may spend the same encoding\decoding time independently of the content of the frame”). Yea teaches a method and system that may provide point cloud attribute coding by at least one processor, transform through a lifting decomposition based on enabling a scalable coding of attributes associated with the lifting decomposition, and reconstruct the object or scene based on the transformed data; while Mammou teaches a system and method that may compress attribute information and/or spatial for a point cloud in macroblocks by the encoder and decompress compressed attribute and/or spatial information for the point cloud in the decoder with block alignment arrangement and place geometry-related residual sample data (or the geometry displacement) into a structured two-dimensional plane. Therefore, it is obvious to one of ordinary skill in the art to modify Yea by Mammou to decode the received encoded data with block aligning arrangement and apply geometry and attribute residual into the LoD within the 2D plane. The motivation to modify Yea by Mammou is “Use of known technique to improve similar devices (methods, or products) in the same way”.
However, Yea, modified by Mammou, fails to explicitly disclose that from a two-dimensional plane comprising a plurality of blocks.
However, Graziosi teaches that from a two-dimensional plane comprising a plurality of blocks (See Graziosi: Figs. 1-2, and [0003], “The state-of-the-art in point cloud compression using video encoders represents point clouds as 3D patches and encodes a 2D image formed by the projection of geometry and attributes into a 2D canvas. The packing of projected 3D patches into a 2D image is also known as 2D mapping of 3D point cloud data. Currently, the process has some limitations, such as: the patch orientation is always fixed, the position of patches are the same in geometry as well as texture, and the background filling process is the same also for both geometry and texture”; [0019], “FIG. 2 illustrates a diagram of a method of implementing fixed packing according to some embodiments. As shown in the table above, anchor, horizontal and vertical are all fixed packing implementations. For anchor, the patch orientation is not changed. For horizontal, if size U0 is less than V0, then the axis is swapped; otherwise, nothing is done. For vertical, if size V0 is less than U0, then the axis is swapped; otherwise, nothing is done. No extra metadata is needed per patch since the decoder is able to determine the patch orientation”; and Table 1, “TABLE-US-00001 Descriptor group_of_frames_auxilary_information( ) { patch_count u(32) occupancy_precision u(8) max_candidate_count u(8) bit_count_u0 u(8) bit_count_v0 u(8) bit_count_u1 u(8) bit_count_v1 u(8) bit_count_d1 u(8) occupancy_aux_stream_size u(32) ByteCount+=15 for(i = 0; i<patchCount; i++) { patchList[i].patch_u0 ae(v) patchList[i].patch_v0 ae(v) patchList[i].orientation ae(3) patchList[i].patch_u1 ae(v) patchList[i].patch_v1 ae(v) patchList[i].patch_d1 ae(v) patchList[i].delta_size_u0 se(v) patchList[i].delta_size_v0 se(v) patchList[i].normal_axis ae(v) } for (i=0; i<blockCount; i++) { if(candidatePatches[i].size( ) == 1) blockToPatch[i] = candidatePatches[i][0] else { candidate_index ae(v) if(candidate_index == max_candidate_count) blockToPatch[i] = patch_index ae(v) else blockToPatch[i] = candidatePatches[i][candidate_index] } } ByteCount += occupancy_auxilary_stream_size }”. Note that video encoding/decoding is normally manipulated in macroblocks as shown in Table 1, and this is mapped to the current limitation).
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention was effectively filed to modify Yea to have from a two-dimensional plane comprising a plurality of blocks as taught by Graziosi in order to enable more efficient compression (See Graziosi: Fig. 4, and [0264], “In some embodiments, an encoder and/or decoder for a point cloud may further include a color conversion module to convert color attributes of a point cloud from a first color space to a second color space. In some embodiments, color attribute information for a point cloud may be more efficiently compressed when converted to a second color space. For example, FIGS. 4A and 4B illustrates similar encoders as illustrated in FIGS. 2A and 2C, but that further include color conversion modules 402 and 404, respectively. While not illustrated, decoders such as the decoders illustrated in FIGS. 2B and 2D, may further include color conversion modules to convert color attributes of a decompressed point cloud back into an original color space, in some embodiments”). Yea teaches a method and system that may provide point cloud attribute coding by at least one processor, transform through a lifting decomposition based on enabling a scalable coding of attributes associated with the lifting decomposition, and reconstruct the object or scene based on the transformed data; while Graziosi teaches a system and method that may optimally code the orientation information of each patch and encode/decode the data that is organized as blocks. Therefore, it is obvious to one of ordinary skill in the art to modify Yea by Graziosi to have LoD data organized in blocks. The motivation to modify Yea by Graziosi is “Use of known technique to improve similar devices (methods, or products) in the same way”.
Regarding claim 10, Yea, Mammou, and Graziosi teach all the features with respect to claim 1 as outlined above. Further, Mammou teaches that the method of claim 1, wherein each of the plurality of blocks is a two-dimensional sub-plane associated with a macroblock (MB), a coding tree unit (CTU), a transform unit (TU), a prediction unit (PU), or a coding unit (CU) within the two-dimensional plane (See Mammou: Figs. 3A-E, and [0161], “FIG. 3C also illustrates blocks of an image frame 312, wherein the blocks may be further divided into sub-blocks. For example block A1, B1, C1, A2, etc. may be divided into multiple sub-blocks, and, in some embodiments, the sub-blocks may be further divided into smaller blocks. In some embodiments, a video compression module of an encoder, such as video compression module 218 or video compression module 264, may determine whether a block comprises active pixels, non-active pixels, or a mix of active and non-active pixels. The video compression module may budget fewer resources to compress blocks comprising non-active pixels than an amount of resources that are budgeted for encoding blocks comprising active pixels. In some embodiments, active pixels may be pixels that include data for a patch image and non-active pixels may be pixels that include padding. In some embodiments, a video compression module may sub-divide blocks comprising both active and non-active pixels, and budget resources based on whether sub-blocks of the blocks comprise active or non-active pixels. For example, blocks A1, B1, C1, A2 may comprise non-active pixels. As another example block E3 may comprise active pixels, and block B6, as an example, may include a mix of active and non-active pixels”; [0389], “The above information could also be defined for sub-frames, e.g. slices, group of coding tree units (CTUs) or macroblocks, tiles, or groups of slices or tiles. They can also be specified for a group of frames that does not necessarily need to be equal to the number of frames in a GOF. Such group of frames may be smaller or even larger than a GOF. In the case that this is smaller, it is expected that all frames inside this group would be a subset of a GOF. If larger, it is expected that the number would include several complete GOFs, which might not necessarily be of equal length. FIG. 7B is an example illustration of the conceptual structure of PCC encoded bit stream with PCCNAL units”; [0305], “Clipping as well as other considerations for color conversion, may also apply to point cloud data and may be considered to further improve the performance of the point cloud compression system. Such methods may also apply to other color representations and not necessarily YCbCr data, such as the YCoCg and ICtCp representation. For such representations different optimization may be required due to the nature of the color transform”; and [0367], “When all the data is sequentially signaled without any markers to indicate the positions of different sub streams, there may be a significant disadvantage of time delay. For example, one frame cannot be reconstructed until all the group of frame GOF information is decoded. Also, the bit stream cannot be decoded in parallel unless every data has information of its own size. To resolve this issue, in some embodiments the concept of a coding unit, which may be referred to herein as a PCCNAL (Point Cloud Compression Network Abstraction Layer) unit for convenience, that contains information on one or more types of data and its related header information may be used. Encapsulated data can be placed in any location within a bit stream and can be decoded and reconstructed in parallel”).
Regarding claim 11, Yea, Mammou, and Graziosi teach all the features with respect to claim 1 as outlined above. Further, Mammou teaches that the method of claim 1, wherein the plurality of samples is associated with a plurality of quantized transform coefficients (See Mammou: Figs: 1-2, and [0454], “Quantization may also be performed while considering whether a sample is a visible or a non-visible sample. For example, if a strategy involves the use of dynamic programming/trellis quantization methods for determining the value of a quantized coefficient. In such embodiments, an impact in distortion of a quantized coefficient, as well as its impact on bitrate at multiple reconstruction points may commonly be computed. This may be done for all coefficients while considering their bitrate interactions. Finally a decision may be made for all coefficients jointly by selecting the quantized values that would together result in the best rate distortion performance. In some embodiments, the visible and non-visible areas may be considered when computing such metrics”), a plurality of transformed coefficients (See Mammou: Fig2. 1-2, and[0103], “In some embodiments, an encoder, such as encoder 250, may be combined with or share modules with an intra point cloud frame encoder, such as encoder 200. In some embodiments, a point cloud re-sampling module, such as point cloud re-sampling module 252, may resample points in an input point cloud image frame in order to determine a one-to-one mapping between points in patches of the current image frame and points in patches of a reference image frame for the point cloud. In some embodiments, a 3D motion compensation & delta vector prediction module, such as a 3D motion compensation & delta vector prediction module 254, may apply a temporal prediction to the geometry/texture/attributes of the resampled points of the patches. The prediction residuals may be stored into images, which may be padded and compressed by using video/image codecs. In regard to spatial changes for points of the patches between the reference frame and a current frame, a 3D motion compensation & delta vector prediction module 254, may determine respective vectors for each of the points indicating how the points moved from the reference frame to the current frame. A 3D motion compensation & delta vector prediction module 254, may then encode the motion vectors using different image parameters. For example, changes in the X direction for a point may be represented by an amount of red included at the point in a patch image that includes the point. In a similar manner, changes in the Y direction for a point may be represented by an amount of blue included at the point in a patch image that includes the point. Also, in a similar manner, changes in the Z direction for a point may be represented by an amount of green included at the point in a patch image that includes the point. In some embodiments, other characteristics of an image included in a patch image may be adjusted to indicate motion of points included in the patch between a reference frame for the patch and a current frame for the patch”; and [0148]~[0150], “Also, a projection-based transformation that maps 3D points to 2D pixels could be generalized to support arbitrary 3D to 2D mapping as follows: [0149] Store the 3D to 2D transform parameters or the pixel coordinates associated with each point [0150] Store X, Y, Z coordinates in the geometry images instead of or in addition to the depth information”. Note that the residual is stored in the image that is transformed, and coefficient quantized, and this is mapped to the transformed coefficients), or a plurality of displacement coefficients associated with geometry displacements (See Mammou: Fig. 1, and [0531], “In some embodiments, a predefined scanning order may be signaled. For example, a raster scan, a zig-zag scan, a z-order, a traverse scan or their vertical inversion could be used. The scanning order may be different for geometry residual frames and texture residual frames. In some embodiments, the scanning order for each frame may be signaled separately. For example, FIG. 13A illustrates example scanning techniques including a raster scan, a zigzag scan, a “Z” scan, and a traverse scan”. Note that the geometry residual is mapped to displacement coefficients associated with geometry displacements).
Regarding claim 12, Yea, Mammou, and Graziosi teach all the features with respect to claim 1 as outlined above. Further, Yea, Mammou, and Graziosi teach that the decoder (See Yea: Figs. 3-5, and [0002], “Methods and apparatuses consistent with embodiments relate to graph-based point cloud compression (G-PCC), and more particularly, a method and an apparatus for coding of attribute information of point cloud samples”’; and [0058], “The method and the apparatus for interframe point cloud attribute coding will now be described in detail. Such a method and an apparatus may be implemented in the G-PCC compressor 303 described above, namely, the prediction module 430. The method and the apparatus may also be implemented in the G-PCC decompressor 310, namely, the inverse prediction module 530”) comprising:
a processor (See Yea: Figs. 7-8, and [0099], “As an example and not by way of limitation, the computer system 700 having architecture, and specifically the core 840 can provide functionality as a result of processor(s) (including CPUs, GPUs, FPGA, accelerators, and the like) executing software embodied in one or more tangible, computer-readable media. Such computer-readable media can be media associated with user-accessible mass storage as introduced above, as well as certain storage of the core 840 that are of non-transitory nature, such as the core-internal mass storage 847 or ROM 845. The software implementing various embodiments can be stored in such devices and executed by the core 840. A computer-readable medium can include one or more memory devices or chips, according to particular needs. The software can cause the core 840 and specifically the processors therein (including CPU, GPU, FPGA, and the like) to execute particular processes or particular parts of particular processes described herein, including defining data structures stored in the RAM 846 and modifying such data structures according to the processes defined by the software. In addition or as an alternative, the computer system can provide functionality as a result of logic hardwired or otherwise embodied in a circuit (for example: the hardware accelerator 844), which can operate in place of or together with software to execute particular processes or particular parts of particular processes described herein. Reference to software can encompass logic, and vice versa, where appropriate. Reference to a computer-readable media can encompass a circuit (such as an integrated circuit (IC)) storing software for execution, a circuit embodying logic for execution, or both, where appropriate. Embodiments encompass any suitable combination of hardware and software”); and
a memory coupled to the processor, wherein the processor is configured to execute program instructions stored in the memory to perform (See Yea: Figs. 7-8, and [0099], “As an example and not by way of limitation, the computer system 700 having architecture, and specifically the core 840 can provide functionality as a result of processor(s) (including CPUs, GPUs, FPGA, accelerators, and the like) executing software embodied in one or more tangible, computer-readable media. Such computer-readable media can be media associated with user-accessible mass storage as introduced above, as well as certain storage of the core 840 that are of non-transitory nature, such as the core-internal mass storage 847 or ROM 845. The software implementing various embodiments can be stored in such devices and executed by the core 840. A computer-readable medium can include one or more memory devices or chips, according to particular needs. The software can cause the core 840 and specifically the processors therein (including CPU, GPU, FPGA, and the like) to execute particular processes or particular parts of particular processes described herein, including defining data structures stored in the RAM 846 and modifying such data structures according to the processes defined by the software. In addition or as an alternative, the computer system can provide functionality as a result of logic hardwired or otherwise embodied in a circuit (for example: the hardware accelerator 844), which can operate in place of or together with software to execute particular processes or particular parts of particular processes described herein. Reference to software can encompass logic, and vice versa, where appropriate. Reference to a computer-readable media can encompass a circuit (such as an integrated circuit (IC)) storing software for execution, a circuit embodying logic for execution, or both, where appropriate. Embodiments encompass any suitable combination of hardware and software”):
unpacking (See Yea: Figs. 3-5, and [0054], “The inverse quantizer 515 receives the quantized positions from the octree decoder 510, and inverse quantizes the received quantized positions, using, e.g., a scaling algorithm and/or a shifting algorithm, to obtain reconstructed positions of the points in the input point cloud”) ,
in a block-boundary-aligned arrangement(See Mammou: Figs. 3A-C, and [0080], “In some embodiments, a decoder may be configured to receive one or more encoded image frames comprising patch images for a compressed point cloud and padding in portions of the or more images that is not occupied by the patch images and decode the one or more encoded image frames, wherein less decoding resources are allocated to decoding the padded portions of the one or more images than are allocated to decoding the patch image portions of the one or more image frames”; [0160], “FIG. 3C illustrates an example image frame 312 with overlapping patches, according to some embodiments. FIG. 3C shows an example with two patches (patch image 1 and patch image 2) having overlapping 2D bounding boxes 314 and 316 that overlap at area 318. In order to determine to which patch the T×T blocks in the area 318 belong, the order of the patches may be considered. For example, the T×T block 314 may belong to the last decoded patch. This may be because in the case of an overlapping patch, a later placed patch is placed such that it overlaps with a previously placed patch. By knowing the placement order it can be resolved that areas of overlapping bounding boxes go with the latest placed patch. In some embodiments, the patch information is predicted and encoded (e.g., with an entropy/arithmetic encoder). Also, in some embodiments, U0, V0, DU0 and DV0 are encoded as multiples of T, where T is the block size used during the padding phase”; and [0585], “In some embodiments, spatio-temporal filters may be used to smooth out high frequencies in the temporal dimension, to make the signal friendlier to compress. Techniques in this category include 1) temporal smoothing filter and 2) a “temporal alignment” step to make sure the spatial-only filter mentioned above are consistent in the temporal dimension. The pre-processing stage could be easily extended to multi-level images”),
a plurality of samples belonging (See Yea: Figs. 3-5, and [0010], “Note that geometric locations of all point clouds are already available when attributes are coded. In addition, the neighboring points together with their reconstructed attribute values are available both at an encoder and a decoder as a k-dimensional tree structure that is used to facilitate a nearest neighbor search for each point in an identical manner”; [0011], “Second, if the variability is higher than the threshold, a rate-distortion optimized (RDO) predictor selection is performed. Multiple predictor candidates or candidate predicted values are created based on a result of a neighbor point search in generating LoD. For example, when the attributes value of the 3D point P2 is encoded by using prediction, a weighted average value of distances from the 3D point P2 to respectively the 3D points P0, P5 and P4 is set to a predictor index equal to 0. Then, a distance from the 3D point P2 to the nearest neighbor point P4 is set to a predictor index equal to 1. Moreover, distances from the 3D point P2 to respectively the next nearest neighbor points P5 and P0 are set to predictor indices equal to 2 and 3, as shown in Table 1 below”; and [0078], “Different context-models for entropy coding can be used in order to better leverage different characteristics of coefficients. In one embodiment, different context-models can be used for different LOD (Level-Of-Details) layers of lifting coefficients as higher LOD layers tend to have smaller coefficients as a result of lifting decomposition. In another embodiment, different context-models can be used for different QP (Quantization Parameter)'s as higher QP's tend to result in smaller quantized coefficients and vice versa. In another embodiment, different context-models can be used for different layers of coarse granular scalability as enhancement layers (i.e., layers added to refine the reconstructed signal to a smaller QP level) tend to be of noisier or random nature in terms of correlation among coefficients. In another embodiment, different context-models can be used depending upon the values of or a function of values of the reconstructed (hence available for reference) samples from corresponding locations in the lower quantization-level layers. For example. it is likely that areas with zero or very small reconstructed values in the lower layers have different coefficient characteristics from areas with the opposite tendency. In another embodiment, different context-models can be used depending upon the values of or a function of values of the reconstructed (hence available for reference) samples from corresponding locations in the lower LOD's at the same quantization-level. These samples from corresponding locations can be available as a result of the nearest-neighborhood search in LOD building in GPCC. Note these samples are available at the decoder as well as a result of LOD-by-LOD reconstruction as shown in the above pseudo-code. In all of the above embodiments, instead of using different context models, one can adaptively switch the look-up-tables for symbol-index coding in the case where dictionary-based coding or other methods relying on look-up-tables are used”. Note that the geometry information and attribute and distance is used to generate LoD structures, but the geometry displacement needs a second art)
to a plurality of levels of detail (LoD) associated with geometry displacements(See Mammou: Figs. 2, and [0103], “In some embodiments, an encoder, such as encoder 250, may be combined with or share modules with an intra point cloud frame encoder, such as encoder 200. In some embodiments, a point cloud re-sampling module, such as point cloud re-sampling module 252, may resample points in an input point cloud image frame in order to determine a one-to-one mapping between points in patches of the current image frame and points in patches of a reference image frame for the point cloud. In some embodiments, a 3D motion compensation & delta vector prediction module, such as a 3D motion compensation & delta vector prediction module 254, may apply a temporal prediction to the geometry/texture/attributes of the resampled points of the patches. The prediction residuals may be stored into images, which may be padded and compressed by using video/image codecs. In regard to spatial changes for points of the patches between the reference frame and a current frame, a 3D motion compensation & delta vector prediction module 254, may determine respective vectors for each of the points indicating how the points moved from the reference frame to the current frame. A 3D motion compensation & delta vector prediction module 254, may then encode the motion vectors using different image parameters. For example, changes in the X direction for a point may be represented by an amount of red included at the point in a patch image that includes the point. In a similar manner, changes in the Y direction for a point may be represented by an amount of blue included at the point in a patch image that includes the point. Also, in a similar manner, changes in the Z direction for a point may be represented by an amount of green included at the point in a patch image that includes the point. In some embodiments, other characteristics of an image included in a patch image may be adjusted to indicate motion of points included in the patch between a reference frame for the patch and a current frame for the patch.”; [0531], “In some embodiments, a predefined scanning order may be signaled. For example, a raster scan, a zig-zag scan, a z-order, a traverse scan or their vertical inversion could be used. The scanning order may be different for geometry residual frames and texture residual frames. In some embodiments, the scanning order for each frame may be signaled separately. For example, FIG. 13A illustrates example scanning techniques including a raster scan, a zigzag scan, a “Z” scan, and a traverse scan”; and Fig. 13A-L, and [0533], “In some embodiments, when missed points (Ps) have more than one component, such as 3-component missed points, the components may be interleaved or grouped per component type. For example, FIG. 13B shows (a) interleaved components and (b) components grouped per component type. For example, when geometry residuals are mapped onto a single plane, a residual set of one missed point (dx(Q), dy(Q), dz(Q)) may be mapped sequentially as shown in FIG. 13B (a). And as another example, when residuals are again mapped onto a single plane, residual sets of missed points (dx(Q), dy(Q), dz(Q)) may be mapped per axis, e.g. all the dx(Q) can be mapped first, then all the dy(Q), and then all the dz(Q) may be mapped, as shown in FIG. 13B (b)”. Note that the geometry residual packing into the video frames is mapped to the geometry displacement),
from a two-dimensional plane comprising a plurality of blocks (See Graziosi: Figs. 1-2, and [0003], “The state-of-the-art in point cloud compression using video encoders represents point clouds as 3D patches and encodes a 2D image formed by the projection of geometry and attributes into a 2D canvas. The packing of projected 3D patches into a 2D image is also known as 2D mapping of 3D point cloud data. Currently, the process has some limitations, such as: the patch orientation is always fixed, the position of patches are the same in geometry as well as texture, and the background filling process is the same also for both geometry and texture”; [0019], “FIG. 2 illustrates a diagram of a method of implementing fixed packing according to some embodiments. As shown in the table above, anchor, horizontal and vertical are all fixed packing implementations. For anchor, the patch orientation is not changed. For horizontal, if size U0 is less than V0, then the axis is swapped; otherwise, nothing is done. For vertical, if size V0 is less than U0, then the axis is swapped; otherwise, nothing is done. No extra metadata is needed per patch since the decoder is able to determine the patch orientation”; and Table 1, “TABLE-US-00001 Descriptor group_of_frames_auxilary_information( ) { patch_count u(32) occupancy_precision u(8) max_candidate_count u(8) bit_count_u0 u(8) bit_count_v0 u(8) bit_count_u1 u(8) bit_count_v1 u(8) bit_count_d1 u(8) occupancy_aux_stream_size u(32) ByteCount+=15 for(i = 0; i<patchCount; i++) { patchList[i].patch_u0 ae(v) patchList[i].patch_v0 ae(v) patchList[i].orientation ae(3) patchList[i].patch_u1 ae(v) patchList[i].patch_v1 ae(v) patchList[i].patch_d1 ae(v) patchList[i].delta_size_u0 se(v) patchList[i].delta_size_v0 se(v) patchList[i].normal_axis ae(v) } for (i=0; i<blockCount; i++) { if(candidatePatches[i].size( ) == 1) blockToPatch[i] = candidatePatches[i][0] else { candidate_index ae(v) if(candidate_index == max_candidate_count) blockToPatch[i] = patch_index ae(v) else blockToPatch[i] = candidatePatches[i][candidate_index] } } ByteCount += occupancy_auxilary_stream_size }”. Note that video encoding/decoding is normally manipulated in macroblocks as shown in Table 1, and this is mapped to the current limitation).
Regarding claim 14, Yea, Mammou, and Graziosi teach all the features with respect to claim 1 as outlined above. Further, Yea teaches that the encoding method (See Yea: Figs. 3-5, and [0002], “Methods and apparatuses consistent with embodiments relate to graph-based point cloud compression (G-PCC), and more particularly, a method and an apparatus for coding of attribute information of point cloud samples”’; and [0058], “The method and the apparatus for interframe point cloud attribute coding will now be described in detail. Such a method and an apparatus may be implemented in the G-PCC compressor 303 described above, namely, the prediction module 430. The method and the apparatus may also be implemented in the G-PCC decompressor 310, namely, the inverse prediction module 530”; and [0010], “Note that geometric locations of all point clouds are already available when attributes are coded. In addition, the neighboring points together with their reconstructed attribute values are available both at an encoder and a decoder as a k-dimensional tree structure that is used to facilitate a nearest neighbor search for each point in an identical manner”. Note that encoding and decoding is mutual inverse operations), comprising:
packing (See Yea: Figs. 3-5, and [0054], “The inverse quantizer 515 receives the quantized positions from the octree decoder 510, and inverse quantizes the received quantized positions, using, e.g., a scaling algorithm and/or a shifting algorithm, to obtain reconstructed positions of the points in the input point cloud”; and [0041], “The octree encoder 415 receives the filtered positions from the points removal module 410, and encodes the received filtered positions into occupancy symbols of an octree representing the input point cloud, using an octree encoding algorithm. A bounding box of the input point cloud corresponding to the octree may be any 3D shape, e.g., a cube”),
in a block-boundary-aligned arrangement , (See Mammou: Figs. 3A-C, and [0080], “In some embodiments, a decoder may be configured to receive one or more encoded image frames comprising patch images for a compressed point cloud and padding in portions of the or more images that is not occupied by the patch images and decode the one or more encoded image frames, wherein less decoding resources are allocated to decoding the padded portions of the one or more images than are allocated to decoding the patch image portions of the one or more image frames”; [0160], “FIG. 3C illustrates an example image frame 312 with overlapping patches, according to some embodiments. FIG. 3C shows an example with two patches (patch image 1 and patch image 2) having overlapping 2D bounding boxes 314 and 316 that overlap at area 318. In order to determine to which patch the T×T blocks in the area 318 belong, the order of the patches may be considered. For example, the T×T block 314 may belong to the last decoded patch. This may be because in the case of an overlapping patch, a later placed patch is placed such that it overlaps with a previously placed patch. By knowing the placement order it can be resolved that areas of overlapping bounding boxes go with the latest placed patch. In some embodiments, the patch information is predicted and encoded (e.g., with an entropy/arithmetic encoder). Also, in some embodiments, U0, V0, DU0 and DV0 are encoded as multiples of T, where T is the block size used during the padding phase”; and [0585], “In some embodiments, spatio-temporal filters may be used to smooth out high frequencies in the temporal dimension, to make the signal friendlier to compress. Techniques in this category include 1) temporal smoothing filter and 2) a “temporal alignment” step to make sure the spatial-only filter mentioned above are consistent in the temporal dimension. The pre-processing stage could be easily extended to multi-level images”);
a plurality of samples belonging (See Yea: Figs. 3-5, and [0010], “Note that geometric locations of all point clouds are already available when attributes are coded. In addition, the neighboring points together with their reconstructed attribute values are available both at an encoder and a decoder as a k-dimensional tree structure that is used to facilitate a nearest neighbor search for each point in an identical manner”; [0011], “Second, if the variability is higher than the threshold, a rate-distortion optimized (RDO) predictor selection is performed. Multiple predictor candidates or candidate predicted values are created based on a result of a neighbor point search in generating LoD. For example, when the attributes value of the 3D point P2 is encoded by using prediction, a weighted average value of distances from the 3D point P2 to respectively the 3D points P0, P5 and P4 is set to a predictor index equal to 0. Then, a distance from the 3D point P2 to the nearest neighbor point P4 is set to a predictor index equal to 1. Moreover, distances from the 3D point P2 to respectively the next nearest neighbor points P5 and P0 are set to predictor indices equal to 2 and 3, as shown in Table 1 below”; and [0078], “Different context-models for entropy coding can be used in order to better leverage different characteristics of coefficients. In one embodiment, different context-models can be used for different LOD (Level-Of-Details) layers of lifting coefficients as higher LOD layers tend to have smaller coefficients as a result of lifting decomposition. In another embodiment, different context-models can be used for different QP (Quantization Parameter)'s as higher QP's tend to result in smaller quantized coefficients and vice versa. In another embodiment, different context-models can be used for different layers of coarse granular scalability as enhancement layers (i.e., layers added to refine the reconstructed signal to a smaller QP level) tend to be of noisier or random nature in terms of correlation among coefficients. In another embodiment, different context-models can be used depending upon the values of or a function of values of the reconstructed (hence available for reference) samples from corresponding locations in the lower quantization-level layers. For example. it is likely that areas with zero or very small reconstructed values in the lower layers have different coefficient characteristics from areas with the opposite tendency. In another embodiment, different context-models can be used depending upon the values of or a function of values of the reconstructed (hence available for reference) samples from corresponding locations in the lower LOD's at the same quantization-level. These samples from corresponding locations can be available as a result of the nearest-neighborhood search in LOD building in GPCC. Note these samples are available at the decoder as well as a result of LOD-by-LOD reconstruction as shown in the above pseudo-code. In all of the above embodiments, instead of using different context models, one can adaptively switch the look-up-tables for symbol-index coding in the case where dictionary-based coding or other methods relying on look-up-tables are used”. Note that the geometry information and attribute and distance is used to generate LoD structures, but the geometry displacement needs a second art)
to a plurality of levels of detail (LoD) associated with geometry displacements (See Mammou: Figs. 2, and [0103], “In some embodiments, an encoder, such as encoder 250, may be combined with or share modules with an intra point cloud frame encoder, such as encoder 200. In some embodiments, a point cloud re-sampling module, such as point cloud re-sampling module 252, may resample points in an input point cloud image frame in order to determine a one-to-one mapping between points in patches of the current image frame and points in patches of a reference image frame for the point cloud. In some embodiments, a 3D motion compensation & delta vector prediction module, such as a 3D motion compensation & delta vector prediction module 254, may apply a temporal prediction to the geometry/texture/attributes of the resampled points of the patches. The prediction residuals may be stored into images, which may be padded and compressed by using video/image codecs. In regard to spatial changes for points of the patches between the reference frame and a current frame, a 3D motion compensation & delta vector prediction module 254, may determine respective vectors for each of the points indicating how the points moved from the reference frame to the current frame. A 3D motion compensation & delta vector prediction module 254, may then encode the motion vectors using different image parameters. For example, changes in the X direction for a point may be represented by an amount of red included at the point in a patch image that includes the point. In a similar manner, changes in the Y direction for a point may be represented by an amount of blue included at the point in a patch image that includes the point. Also, in a similar manner, changes in the Z direction for a point may be represented by an amount of green included at the point in a patch image that includes the point. In some embodiments, other characteristics of an image included in a patch image may be adjusted to indicate motion of points included in the patch between a reference frame for the patch and a current frame for the patch.”; [0531], “In some embodiments, a predefined scanning order may be signaled. For example, a raster scan, a zig-zag scan, a z-order, a traverse scan or their vertical inversion could be used. The scanning order may be different for geometry residual frames and texture residual frames. In some embodiments, the scanning order for each frame may be signaled separately. For example, FIG. 13A illustrates example scanning techniques including a raster scan, a zigzag scan, a “Z” scan, and a traverse scan”; and Fig. 13A-L, and [0533], “In some embodiments, when missed points (Ps) have more than one component, such as 3-component missed points, the components may be interleaved or grouped per component type. For example, FIG. 13B shows (a) interleaved components and (b) components grouped per component type. For example, when geometry residuals are mapped onto a single plane, a residual set of one missed point (dx(Q), dy(Q), dz(Q)) may be mapped sequentially as shown in FIG. 13B (a). And as another example, when residuals are again mapped onto a single plane, residual sets of missed points (dx(Q), dy(Q), dz(Q)) may be mapped per axis, e.g. all the dx(Q) can be mapped first, then all the dy(Q), and then all the dz(Q) may be mapped, as shown in FIG. 13B (b)”. Note that the geometry residual packing into the video frames is mapped to the geometry displacement),
into a two-dimensional plane comprising a plurality of blocks (See Graziosi: Figs. 1-2, and [0003], “The state-of-the-art in point cloud compression using video encoders represents point clouds as 3D patches and encodes a 2D image formed by the projection of geometry and attributes into a 2D canvas. The packing of projected 3D patches into a 2D image is also known as 2D mapping of 3D point cloud data. Currently, the process has some limitations, such as: the patch orientation is always fixed, the position of patches are the same in geometry as well as texture, and the background filling process is the same also for both geometry and texture”; [0019], “FIG. 2 illustrates a diagram of a method of implementing fixed packing according to some embodiments. As shown in the table above, anchor, horizontal and vertical are all fixed packing implementations. For anchor, the patch orientation is not changed. For horizontal, if size U0 is less than V0, then the axis is swapped; otherwise, nothing is done. For vertical, if size V0 is less than U0, then the axis is swapped; otherwise, nothing is done. No extra metadata is needed per patch since the decoder is able to determine the patch orientation”; and Table 1, “TABLE-US-00001 Descriptor group_of_frames_auxilary_information( ) { patch_count u(32) occupancy_precision u(8) max_candidate_count u(8) bit_count_u0 u(8) bit_count_v0 u(8) bit_count_u1 u(8) bit_count_v1 u(8) bit_count_d1 u(8) occupancy_aux_stream_size u(32) ByteCount+=15 for(i = 0; i<patchCount; i++) { patchList[i].patch_u0 ae(v) patchList[i].patch_v0 ae(v) patchList[i].orientation ae(3) patchList[i].patch_u1 ae(v) patchList[i].patch_v1 ae(v) patchList[i].patch_d1 ae(v) patchList[i].delta_size_u0 se(v) patchList[i].delta_size_v0 se(v) patchList[i].normal_axis ae(v) } for (i=0; i<blockCount; i++) { if(candidatePatches[i].size( ) == 1) blockToPatch[i] = candidatePatches[i][0] else { candidate_index ae(v) if(candidate_index == max_candidate_count) blockToPatch[i] = patch_index ae(v) else blockToPatch[i] = candidatePatches[i][candidate_index] } } ByteCount += occupancy_auxilary_stream_size }”. Note that video encoding/decoding is normally manipulated in macroblocks as shown in Table 1, and this is mapped to the current limitation).
Allowable Subject Matter
Claims 2-9 and 15-21 are objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims. The best arts searched, Yea, etc. (US 20210217137 A1), Mammou. etc. (US 20190087979 A1) and Graziosi (US 20200105023 A1)m do not teach the cited limitations of “the method of claim 1, wherein the unpacking, in the block-boundary-aligned arrangement, the plurality of samples belonging to the plurality of levels of detail associated with geometry displacements, from the two-dimensional plane comprising the plurality of blocks, comprises: unpacking the samples belonging to each of the plurality of levels of detail from one of the plurality of blocks aligned with a first index associated with a two-dimensional scan order.”
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to GORDON G LIU whose telephone number is (571)270-0382. The examiner can normally be reached Monday - Friday 8:00-5:00.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Devona E Faulk can be reached at 571-272-7515. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/GORDON G LIU/ Primary Examiner, Art Unit 2618