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 .
Claim Rejections - 35 USC § 102
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action:
A person shall be entitled to a patent unless –
(a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale, or otherwise available to the public before the effective filing date of the claimed invention.
Claims 1, 2, 4, 6, 10, and 11 are rejected under 35 U.S.C. 102(a)(1) as being anticipated by Cai et al. (US Pub. 2014/0040215), hereinafter Cai.
Regarding claim 1, Cai discloses a mesh decoding device comprising: a circuit that calculates the number of subdivisions of a base mesh, and subdivides the base mesh based on the calculated number of subdivisions (Fig. 4; Paragraphs [0084]-[0087]: an encoder for encoding a mesh model comprises clustering means for clustering the points according to their spatial coordinates into one or more clusters, and encoding means for encoding the clustered points using a hierarchical tree, wherein the encoding means comprises an initialization unit for defining a bounding box around the clusters, a recursive division unit for recursively dividing the bounding box, wherein each dividing step divides a parent cell into a pre-defined number of child cells, a point distribution determining unit for determining the number of points for each dividing step and for each current parent cell to be divided, and for determining if the number of points per parent cell is at least a minimum number (the number is four if each parent cell is split into two child cells), and an encoding unit for encoding the number of points if the number is below the minimum number, as described above with respect to steps…step of determining 480 the positions of said points according to the child cells comprises determining the coding mode and evaluating the indication in the code words. Thus, the positions of the points are iteratively decoded…Corresponding to the above-described method steps shown in FIG. 4 c), in one embodiment of the invention a decoder for decoding a mesh model comprises extraction means for said step of extracting from an encoded data set at least first data and an initial value indicating a total number of points, recursive dividing means (e.g. control means) for said step of recursively dividing a bounding box into cells, wherein each of the recursive division divides a current parent cell into a pre-defined number (two or more) of child cells, and determining means for said step of determining the positions of said points according to said child cells. The determining means comprises a unit for determining the number of points in a current parent cell (e.g. a counter), a coding mode detection unit for detecting a coding mode according to the determined number of points in the current parent cell, and a decoding unit for decoding the k-1 next code words (where k is the number of child cells of a dividing step).
Regarding claim 2, Cai discloses the mesh decoding device according to claim 1, wherein the circuit changes the number of subdivisions in units of base faces or meshpatches (Fig. 2; Paragraph [0045]: FIG. 2 shows a kd-tree example where several points 21-25 are positioned within the bounding box 20 of a 2D mesh model. The invention can also be applied to 1D models or 3D models. The application of the principle to the encoding of 3D mesh models is described further below. The below-described steps are also shown in FIG. 6. As is the case in many large mesh models, the positions of the points are very unevenly distributed within the bounding box. In this example, the enhanced kd-tree coding algorithm is applied for encoding the positions of the points, and it is assumed that a required accuracy is such that five initial division or splitting steps are required before the clusters are sufficiently localized. The accuracy can be increased by increasing the number of splitting steps, or decreased by decreasing the number of splitting steps. Further, it is defined by convention that in this example the effectiveness indication of an effective division is encoded by "1" (1=effective, 0=non-effective), and that child cell indices are encoded by "1" for the upper or the left child cell respectively and by "0" for the lower or the right child cell respectively. Note that these conventions may be defined differently without affecting the invention or the efficiency of the code; Paragraphs [0081]-[0084]: the splitting dimension is changed 435, which results in the next child cell generation, and the processing of the next generation of non-empty cells begins. E.g. if a current generation is r2 in FIG. 2 b), the next generation is sq2. Thus, the positions of the points are iteratively encoded. The recursive division ends when a second stop condition SC2 is fulfilled, e.g. a minimum child cell size (i.e. a desired spatial resolution) or a maximum number of recursions (i.e. maximum processing time). A pre-defined minimum child cell size corresponds to a target spatial resolution of the encoding process…Cells of a same size are herein referred to as a generation. As described above, changing 435 the splitting dimensions is performed in an alternating (i.e. rotating) manner with each generation of child cells, e.g. horizontal splitting a cell to obtain first generation child cells, vertical splitting the first generation child cells to obtain second generation child cells, and depth splitting the second generation child cells to obtain a third child cell generation… encoder for encoding a mesh model comprises clustering means for clustering the points according to their spatial coordinates into one or more clusters, and encoding means for encoding the clustered points using a hierarchical tree, wherein the encoding means comprises an initialization unit for defining a bounding box around the clusters, a recursive division unit for recursively dividing the bounding box, wherein each dividing step divides a parent cell into a pre-defined number of child cells, a point distribution determining unit for determining the number of points for each dividing step and for each current parent cell to be divided, and for determining if the number of points per parent cell is at least a minimum number (the number is four if each parent cell is split into two child cells).
Regarding claim 4, Cai discloses the mesh decoding device according to claim 2, wherein the circuit recursively decodes the number of subdivisions of the base face based on flag information for controlling the subdivision (Paragraph [0070]: the total number of points in the current parent cell is at least four, then a second coding mode decision step 70 follows. In the second coding mode decision step 70, it is determined whether the subdivision is effective. If the subdivision is effective, i.e. each child cell has at least one point and no child cell is empty, then a second encoding step 80 determines the number of points in the particular pre-defined one of the child cells, decrements it by one, and inserts an "effective" flag and the decremented number of points into the code. The decrement is advantageous since in after an effective subdivision of a parent cell with p points, each child cell can have not more than p-1 points, and the encoding of p-1 instead of p may save a bit per subdivision).
Regarding claim 6, Cai discloses the mesh decoding device according to claim 1, wherein the circuit performs adjustment on a subdivided face subdivided by the base mesh subdivision unit at a subsequent stage of the base mesh subdivision unit (Paragraphs [0081]-[0084]: the splitting dimension is changed 435, which results in the next child cell generation, and the processing of the next generation of non-empty cells begins. E.g. if a current generation is r2 in FIG. 2 b), the next generation is sq2. Thus, the positions of the points are iteratively encoded. The recursive division ends when a second stop condition SC2 is fulfilled, e.g. a minimum child cell size (i.e. a desired spatial resolution) or a maximum number of recursions (i.e. maximum processing time). A pre-defined minimum child cell size corresponds to a target spatial resolution of the encoding process…Cells of a same size are herein referred to as a generation. As described above, changing 435 the splitting dimensions is performed in an alternating (i.e. rotating) manner with each generation of child cells, e.g. horizontal splitting a cell to obtain first generation child cells, vertical splitting the first generation child cells to obtain second generation child cells, and depth splitting the second generation child cells to obtain a third child cell generation… encoder for encoding a mesh model comprises clustering means for clustering the points according to their spatial coordinates into one or more clusters, and encoding means for encoding the clustered points using a hierarchical tree, wherein the encoding means comprises an initialization unit for defining a bounding box around the clusters, a recursive division unit for recursively dividing the bounding box, wherein each dividing step divides a parent cell into a pre-defined number of child cells, a point distribution determining unit for determining the number of points for each dividing step and for each current parent cell to be divided, and for determining if the number of points per parent cell is at least a minimum number (the number is four if each parent cell is split into two child cells).
Regarding claim 10, the limitations of this claim substantially correspond to the limitations of claim 1; thus they are rejected on similar grounds.
Regarding claim 11, the limitations of this claim substantially correspond to the limitations of claim 1 (except for a program stored on a non-transitory computer-readable medium, which is disclosed by Cai, Paragraph [0029]: the invention relates to a computer readable medium having stored thereon executable instructions to cause a computer to perform a method comprising the above-mentioned encoding steps. In one aspect, the invention relates to a computer readable medium having stored thereon executable instructions to cause a computer to perform a method comprising the above-mentioned decoding steps); thus they are rejected on similar grounds.
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 3, 5, and 7-9 are rejected under 35 U.S.C. 103 as being unpatentable over Cai, in view of Mammou et al. (US Pub. 2023/0290063), hereinafter Mammou.
Regarding claim 3, Cai discloses the mesh decoding device according to claim 1, wherein the circuit predicts the number of subdivisions of a base face (Fig. 2; Paragraph [0045]: FIG. 2 shows a kd-tree example where several points 21-25 are positioned within the bounding box 20 of a 2D mesh model. The invention can also be applied to 1D models or 3D models. The application of the principle to the encoding of 3D mesh models is described further below. The below-described steps are also shown in FIG. 6. As is the case in many large mesh models, the positions of the points are very unevenly distributed within the bounding box. In this example, the enhanced kd-tree coding algorithm is applied for encoding the positions of the points, and it is assumed that a required accuracy is such that five initial division or splitting steps are required before the clusters are sufficiently localized. The accuracy can be increased by increasing the number of splitting steps, or decreased by decreasing the number of splitting steps. Further, it is defined by convention that in this example the effectiveness indication of an effective division is encoded by "1" (1=effective, 0=non-effective), and that child cell indices are encoded by "1" for the upper or the left child cell respectively and by "0" for the lower or the right child cell respectively. Note that these conventions may be defined differently without affecting the invention or the efficiency of the code; Paragraphs [0081]-[0084]: the splitting dimension is changed 435, which results in the next child cell generation, and the processing of the next generation of non-empty cells begins. E.g. if a current generation is r2 in FIG. 2 b), the next generation is sq2. Thus, the positions of the points are iteratively encoded. The recursive division ends when a second stop condition SC2 is fulfilled, e.g. a minimum child cell size (i.e. a desired spatial resolution) or a maximum number of recursions (i.e. maximum processing time). A pre-defined minimum child cell size corresponds to a target spatial resolution of the encoding process…Cells of a same size are herein referred to as a generation. As described above, changing 435 the splitting dimensions is performed in an alternating (i.e. rotating) manner with each generation of child cells, e.g. horizontal splitting a cell to obtain first generation child cells, vertical splitting the first generation child cells to obtain second generation child cells, and depth splitting the second generation child cells to obtain a third child cell generation… encoder for encoding a mesh model comprises clustering means for clustering the points according to their spatial coordinates into one or more clusters, and encoding means for encoding the clustered points using a hierarchical tree, wherein the encoding means comprises an initialization unit for defining a bounding box around the clusters, a recursive division unit for recursively dividing the bounding box, wherein each dividing step divides a parent cell into a pre-defined number of child cells, a point distribution determining unit for determining the number of points for each dividing step and for each current parent cell to be divided, and for determining if the number of points per parent cell is at least a minimum number (the number is four if each parent cell is split into two child cells).
Cai does not explicitly disclose decodes the number of subdivisions of the base face by adding a prediction division number residual to the predicted number of subdivisions of the base face.
Mammou teaches mesh compression (Abstract), further comprising: decodes the number of subdivisions of the base face by adding a prediction division number residual to the predicted number of subdivisions of the base face (Abstract: method of encoding motion data associated with an input data corresponding to set of 3D meshes M(i), the motion data including at least one of geometry and vertex attribute changes from one frame to another, can include: dividing input mesh M(i) into a set of patches P(i, j), each patch P(i, j) corresponding to a corresponding patch P(k, l) in a previously encoded reference frame; quantizing at least one of vertices and attributes of each patch P(i, j); predicting residuals based on a difference between quantized vertices or attributes of each patch P(i, j) with respect to corresponding patch P(k, l) in the previously encoded reference frame; and entropy encoding the predicted residuals; Paragraphs [0250]-[0258]: above-described notation in mind, the Prediction Module 2902 can implement different predictors as described below. As a few non-limiting examples: [0251] A delta temporal predictor can use temporal information (but not spatial information) to generate the residual p(i, j, v) (defining the difference between the current frame and the reference frame) as follows… the encoder could evaluate multiple different predictors and choose the one that produces the rate distortion performance, i.e., the best tradeoff between number of bits used to encode the motion information and the distortion effects of the encoded mesh as compared to the original mesh. For whatever predictor is used, the index of the predictor (i.e., the identification of the predictor used) together with the prediction residuals can be entropy encoded as described below for transmission to a decoder). Mammou teaches that this will allow for efficient coding (Paragraph [0259]). Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Cai with the features of above as taught by Mammou so as to allow for efficient encoding as presented by Mammou.
Regarding claim 5, Cai discloses the mesh decoding device according to claim 1.
Cai does not explicitly disclose wherein the circuit generates vertices for dividing three edges constituting a base face by an any number, and subdivide the base face by connecting the generated vertices.
Mammou teaches mesh compression (Abstract), further comprising: wherein the circuit generates vertices for dividing three edges constituting a base face by an any number, and subdivide the base face by connecting the generated vertices (Paragraph [0183]: Initial Mesh Deformation Module 2007 can move the vertices of subdivided mesh S(i) so that it has a shape close to the input mesh M(i). The quality of this approximation can directly impact the rate distortion performance of the encoder. One proposed algorithm can proceed as follows: (1) For each vertex v of the subdivided mesh S(i), let Pos(v) indicate its initial 3D position and let N(v) indicate its normal vector. (2) For each initial 3D position Pos(v), find the nearest point H(v) on the surface of the projected mesh P(i), such that the angle between the normal N(v) and the normal to H(v) is below a user-defined threshold. Various distances could be used, including without limitation, L1, L2, Lp, Linf. The threshold could be fixed for the entire mesh, or could be adaptive based on local surface properties and/or user-provided information describing the importance or saliency of subparts of the mesh (e.g., face vs. body). Additionally or alternatively, the threshold could be based on rate distortion criteria or other criteria (e.g., complexity, power consumption, bitrate, etc.) provided as feedback from the encoder module). Mammou teaches that this will allow for efficient coding (Paragraph [0259]). Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Cai with the features of above as taught by Mammou so as to allow for efficient encoding as presented by Mammou.
Regarding claim 7, Cai discloses the mesh decoding device according to claim 1.
Cai does not explicitly disclose wherein the circuit: decodes a displacement bit stream, and generates and outputs a displacement; and outputs a decoded mesh based on a subdivided mesh that is a result of performing the subdivision and the output displacement.
Mammou teaches mesh compression (Abstract), further comprising: wherein the circuit: decodes a displacement bit stream, and generates and outputs a displacement (Fig. 5; Paragraph [0066]: On the decoder side (FIG. 5), the compressed bitstream b(i) is received by a decoder 502 that decodes the bitstream to produce METADATA(i) relating to the bitstream and the decoded mesh, a decoded mesh m′(i), decoded displacements d′(i), and a decoded attribute map A′(i). Each of these outputs of decoder 502 can be provided to a post-processor 503 that can perform various post-processing steps, such as adaptive tessellation); and outputs a decoded mesh based on a subdivided mesh that is a result of performing the subdivision and the output displacement (Paragraph [0066]: Each of these outputs of decoder 502 can be provided to a post-processor 503 that can perform various post-processing steps, such as adaptive tessellation. Post processor 503 can produce a post processed mesh M″(i) and a post processed attribute map A″(i), which correspond to the input mesh M(i) and input attribute map A(i) provided to the encoder. (As will be understood the outputs are not identical to the inputs because of the lossy nature of the compression due to quantization and other encoding effects.) An application 501 consuming the content could provide feedback 501a to decoder 502 to guide the decoding process and feedback 501b to postprocessor 503. As but one example, based on the position of the dynamic mesh with respect to a camera frustum, the decoder 502 and the post processor 503 may adaptively adjust the resolution/accuracy of the produced mesh M″(i) and/or its associated attribute maps A″(i)). Mammou teaches that this will allow for efficient coding (Paragraph [0259]). Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Cai with the features of above as taught by Mammou so as to allow for efficient encoding as presented by Mammou.
Regarding claim 8, Cai discloses the mesh decoding device according to claim 1.
Cai does not explicitly disclose wherein the circuit: defines a displacement expressed in a scalar with respect to a subdivided vertex; and outputs a decoded mesh based on a subdivided mesh that is a result of performing the subdivision and the output displacement.
Mammou teaches mesh compression (Abstract), further comprising: wherein the circuit: defines a displacement expressed in a scalar with respect to a subdivided vertex; (Fig. 5; Paragraph [0066]: On the decoder side (FIG. 5), the compressed bitstream b(i) is received by a decoder 502 that decodes the bitstream to produce METADATA(i) relating to the bitstream and the decoded mesh, a decoded mesh m′(i), decoded displacements d′(i), and a decoded attribute map A′(i). Each of these outputs of decoder 502 can be provided to a post-processor 503 that can perform various post-processing steps, such as adaptive tessellation); and outputs a decoded mesh based on a subdivided mesh that is a result of performing the subdivision and the output displacement (Paragraph [0066]: Each of these outputs of decoder 502 can be provided to a post-processor 503 that can perform various post-processing steps, such as adaptive tessellation. Post processor 503 can produce a post processed mesh M″(i) and a post processed attribute map A″(i), which correspond to the input mesh M(i) and input attribute map A(i) provided to the encoder. (As will be understood the outputs are not identical to the inputs because of the lossy nature of the compression due to quantization and other encoding effects.) An application 501 consuming the content could provide feedback 501a to decoder 502 to guide the decoding process and feedback 501b to postprocessor 503. As but one example, based on the position of the dynamic mesh with respect to a camera frustum, the decoder 502 and the post processor 503 may adaptively adjust the resolution/accuracy of the produced mesh M″(i) and/or its associated attribute maps A″(i)). Mammou teaches that this will allow for efficient coding (Paragraph [0259]). Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Cai with the features of above as taught by Mammou so as to allow for efficient encoding as presented by Mammou.
Regarding claim 9, Cai discloses the mesh decoding device according to claim 1.
Cai does not explicitly disclose wherein the circuit: outputs a displacement in either a vector or a scalar based on flag information for controlling the displacement; and outputs a decoded mesh based on a subdivided mesh that is a result of performing the subdivision and the output displacement.
Mammou teaches mesh compression (Abstract), further comprising: outputs a displacement in either a vector or a scalar based on flag information for controlling the displacement (Paragraph [0329]: mesh_unit_data_type indicates the data type of the mesh_nal_unit. For example, mesh unit data type=MESH MSPS when the data unit is a sequence parameter set. When mesh_nal_unit type indicates the nalu type of the current mesh is a sequence parameter set, mesh unit data type should be MESH MSPS. In some embodiments, it is not signaled in the case mesh unit data type=MESH BODY when the data unit is a coded mesh data which can be decoded with a designated mesh codec such as Draco, and mesh unit data type=MESH MOTION when the data unit contains motion vectors between two meshes which can be decoded by a designated entropy codec. The data type must be associated with one of mi type id signaled in basemesh_information. Designated codecs are decided based on mesh unit data type. In some embodiments, mesh_nal_unit header can signal only mesh_nal_unit type. In some embodiments, mesh unit data type can be signaled in mesh frame header( ) instead of mesh_nal_unit header); and outputs a decoded mesh based on a subdivided mesh that is a result of performing the subdivision and the output displacement (Paragraph [0066]: Each of these outputs of decoder 502 can be provided to a post-processor 503 that can perform various post-processing steps, such as adaptive tessellation. Post processor 503 can produce a post processed mesh M″(i) and a post processed attribute map A″(i), which correspond to the input mesh M(i) and input attribute map A(i) provided to the encoder. (As will be understood the outputs are not identical to the inputs because of the lossy nature of the compression due to quantization and other encoding effects.) An application 501 consuming the content could provide feedback 501a to decoder 502 to guide the decoding process and feedback 501b to postprocessor 503. As but one example, based on the position of the dynamic mesh with respect to a camera frustum, the decoder 502 and the post processor 503 may adaptively adjust the resolution/accuracy of the produced mesh M″(i) and/or its associated attribute maps A″(i)). Mammou teaches that this will allow for efficient coding (Paragraph [0259]). Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Cai with the features of above as taught by Mammou so as to allow for efficient encoding as presented by Mammou.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
Yoon et al. (US Pub. 2026/0203951), teaches compressing and reconstructing mesh data
Any inquiry concerning this communication or earlier communications from the examiner should be directed to MATTHEW D SALVUCCI whose telephone number is (571)270-5748. The examiner can normally be reached M-F: 7:30-4:00PT.
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, XIAO WU can be reached at (571) 272-7761. 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.
/MATTHEW SALVUCCI/Primary Examiner, Art Unit 2613