Abstract: The disclosure relates to method (300) and system (100) for encoding point clouds of 3D model. The method (300) includes receiving (302) an unorganized point cloud. The 3D model includes a plurality of points and void regions. Each of the void regions may include a void boundary (404) along edges of each of the void regions. For each void region from the void regions and for each of iterations, the method (300) further includes identifying (304) a set of neighbouring points (402) around the void boundary (404); grouping (306) each of the set of neighbouring points (402) into three or more rings; arranging (308) the set of grouped points (502) along each of the three or more rings in clockwise order; and generating (316) 2-Dimensional (2D) matrix (704) based on point data corresponding to each of the arranged set of grouped points (702).
[001] This disclosure relates generally to point cloud encoding, and more particularly to a method and system for encoding point clouds of 3-dimensional (3D) models.
Background
[002] The success of Convolutional Neural Networks (CNN) has been largely responsible for the resurgence of interest in deep neural networks. The CNNs have been successfully applied to two dimensional (2D) images, videos, and one-dimensional data like audio signals and other time series data. The CNNs may be effectively capture an underlying structure of image and time-series data and thus perform very well.
[003] The CNNs have been applied to rendered 2D projections of 3D data for 3D object classification. Here, a 3D object is rendered from different viewpoints into fixed sized 2D images, and a CNNs is trained using these images. Converting the 3D problem into a 2D image classification problem allows one to reuse large pre-trained CNN models and achieve good results. A problem with such an approach however is that they may only capture global features of the 3D object and may not be used for predicting local features.
[004] The CNNs may also be used with voxellized 3D data, however since in 3D there is one more dimension to take into consideration, the size of the discretized 3D data is easily one or two orders of magnitude more than the size of image data. The convolution operation in 3D also uses a 3D kernel matrix. The operation of convolution in 3D is thus doubly expensive and the training times can be prohibitively large.
[005] The voxellization of 3D data also inherently reduces the accuracy with which it may represent arbitrarily oriented surfaces. The memory requirements and computational complexity of training the CNN rapidly increases with a fineness of the voxelization. This limits the size of the voxels and thus, an accuracy with which they may be used to approximate 3D surface data. Therefore, predicting accurate surface points and other surface properties using CNNs on voxellized 3D data may be difficult task.
[006] Another problem with the 3D data is achieving pose-invariance. In one dimension, the problem of pose correction does not arise. While two-dimensional image data may be subjected to orientation problems, in practice the variations in pose are much restricted. This is because image data is naturally oriented by the orientation of the capturing device (like a camera) which are almost always placed or used in standard orientations. In the 2D image data, contents may be translated or rotated by small amount but CNNs are robust to these variations. In 3D, however, the designed models and captured data are often oriented freely depending on the context in which they are used and found. In addition, in 3D there may be an additional degree of freedom. The CNNs may not be robust to arbitrary rotations.
[007] Therefore, there is a need in the art for improved methods and systems for encoding point clouds of 3D models.
SUMMARY
[008] In one embodiment, a method for encoding point clouds of a 3-Dimensional (3D) model is disclosed. The method may include receiving an unorganized point cloud corresponding to the 3D model that may include a plurality of points and one or more void regions. Each of the plurality of points is absent in the one or more void regions of the unorganized point cloud, and each of the one or more void regions may include a void boundary along edges of each of the one or more void regions. For each void region from the one or more void regions and for each of one or more iterations, the method may further include identifying, for a query point in the void region near the corresponding void boundary, from the plurality of points, a set of neighbouring points around the void boundary, grouping each of the set of neighbouring points into three or more rings based on a predefined resolution distance from the query point to obtain a set of grouped points, the query point may be centre of each of the three or more rings, each of the three or more rings may include a plurality of ring points, and number of the corresponding set of grouped points is based on area of each of the three or more rings, arranging the set of grouped points along each of the three or more rings in a clockwise order based on a signed distance of each of the set of grouped points from one of the plurality of ring points, and generating a 2-Dimensional (2D) matrix based on point data corresponding to each of the arranged set of grouped points, number of rows in the 2D matrix is based on number of the three or more rings and number of columns in the 2D matrix is based on number of the arranged set of grouped points in largest of the three or more rings.
[009] In another embodiment, a system for encoding point clouds of a 3-Dimensional (3D) model is disclosed. The system may include a point cloud encoding device comprising a processor and a memory communicatively coupled to the processor. The memory may store processor-executable instructions, which, on execution, may causes the processor to receive an unorganized point cloud corresponding to the 3D model that may include a plurality of points and one or more void regions, each of the plurality of points is absent in the one or more void regions of the unorganized point cloud, and each of the one or more void regions may include a void boundary along edges of each of the one or more void regions. For each void region from the one or more void regions and for each of one or more iterations, the processor-executable instructions, on execution, may further cause the processor to identify, for a query point in the void region near the corresponding void boundary, from the plurality of points, a set of neighbouring points around the void boundary. The processor-executable instructions, on execution, may further cause the processor to group each of the set of neighbouring points into three or more rings based on a predefined resolution distance from the query point to obtain a set of grouped points. The query point may be centre of each of the three or more rings, each of the three or more rings may include a plurality of ring points, and number of the corresponding set of grouped points is based on area of each of the three or more rings. The processor-executable instructions, on execution, may further cause the processor to arrange the set of grouped points along each of the three or more rings in a clockwise order based on a signed distance of each of the set of grouped points from one of the plurality of ring points. The processor-executable instructions, on execution, may further cause the processor to generate a 2-Dimensional (2D) matrix based on point data corresponding to each of the arranged set of grouped points, number of rows in the 2D matrix is based on number of the three or more rings and number of columns in the 2D matrix is based on number of the arranged set of grouped points in largest of the three or more rings.
[010] It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed.
BRIEF DESCRIPTION OF THE DRAWINGS
[011] The accompanying drawings, which are incorporated in and constitute a part of this disclosure, illustrate exemplary embodiments and, together with the description, serve to explain the disclosed principles.
[012] FIG. 1 is a block diagram of an exemplary system for encoding point clouds of a 3-Dimensional (3D) model, in accordance with some embodiments of the present disclosure.
[013] FIG. 2 is a block diagram of various modules within the memory of the point cloud encoding device configured to encode point clouds of the 3D model, in accordance with some embodiments of the present disclosure.
[014] FIGs. 3A and 3B illustrate flowcharts of a method for encoding point clouds of the 3D model, in accordance with some embodiments of the present disclosure.
[015] FIGs. 4A and 4B is a pictorial representation of neighbouring points on one side of the void boundary and around the void boundary 404, in accordance with some embodiments of the present disclosure
[016] FIG. 5 illustrates grouping of neighbouring points into three or more rings, in accordance with some embodiments of the present disclosure.
[017] FIGs. 6A and 6B illustrate calculation of signed distance of each of a set of grouped points, in accordance with some embodiments of the present disclosure.
[018] FIG. 7 illustrates pictorial representation for generating 2-Dimensional (2D) matrix from arranged set of grouped points, in accordance with some embodiments of the present disclosure.
[019] FIG. 8 illustrates a CNN architecture for predicting coordinates of query point, in accordance with some embodiments of the present disclosure.
[020] FIG. 9A-9C illustrate progressively filling of void in an exemplary triangulated 3D model using encoded point clouds, in accordance with some embodiments of the present disclosure.
[021] FIG. 10 is a block diagram of an exemplary computer system for implementing embodiments consistent with the present disclosure.
DETAILED DESCRIPTION
[022] The following description is presented to enable a person of ordinary skill in the art to make and use the invention and is provided in the context of particular applications and their requirements. Various modifications to the embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the invention. Moreover, in the following description, numerous details are set forth for the purpose of explanation. However, one of ordinary skill in the art will realize that the invention might be practiced without the use of these specific details. In other instances, well-known structures and devices are shown in block diagram form in order not to obscure the description of the invention with unnecessary detail. Thus, the invention is not intended to be limited to the embodiments shown but is to be accorded the widest scope consistent with the principles and features disclosed herein.
[023] While the invention is described in terms of particular examples and illustrative figures, those of ordinary skill in the art will recognize that the invention is not limited to the examples or figures described. Those skilled in the art will recognize that the operations of the various embodiments may be implemented using hardware, software, firmware, or combinations thereof, as appropriate. For example, some processes can be carried out using processors or other digital circuitry under the control of software, firmware, or hard-wired logic. (The term “logic” herein refers to fixed hardware, programmable logic and/or an appropriate combination thereof, as would be recognized by one skilled in the art to carry out the recited functions.) Software and firmware can be stored on computer-readable storage media. Some other processes can be implemented using analog circuitry, as is well known to one of ordinary skill in the art. Additionally, memory or other storage, as well as communication components, may be employed in embodiments of the invention.
[024] The techniques that will be discussed in the consecutive embodiments of the present disclosure may be designed for estimating local features and properties of a mesh or a point cloud. The techniques may use the point data sampled from a 3D model directly without requiring any plane fitting and projection. This makes the techniques much simpler, robust and accurate in comparison to projection-based methods as discussed in the prior art. The techniques may further be implemented to practical problem of patching voids in meshes based on an advancing front method in which a new point may be estimated through a CNN model.
[025] Referring now to FIG. 1, a block diagram of an exemplary system 100 for encoding point clouds of a 3-Dimensional (3D) model is illustrated, in accordance with some embodiments. The system 100 may include a point cloud encoding device 102 that may be responsible for encoding point clouds of the 3D model. Examples of the point cloud encoding device 102 may include, but are not limited to, a server, a desktop, a laptop, a notebook, a tablet, a smartphone, a mobile phone, an application server, or the like.
[026] The point cloud encoding device 102 may include various modules within a memory 106 that enable the point cloud encoding device 102 to encode point clouds of the 3D model. These modules are explained in detail in conjunction with FIG. 2. In order to encode point clouds of the 3D model, initially, the point cloud encoding device 102 may receive an unorganized point cloud corresponding to the 3D model. The 3D model may include a plurality of points and one or more void regions, each of the plurality of points may be absent in the one or more void regions of the unorganized point cloud, and each of the one or more void regions may include a void boundary along edges of each of the one or more void regions.
[027] For each void region from the one or more void regions and for each of one or more iterations, the point cloud encoding device 102 may identify, from the plurality of points and for a query point in the void region near the corresponding void boundary, a set of neighbouring points around the void boundary. Once the set of neighbouring points around the void boundary are identified, the point cloud encoding device 102 may further group each of the set of neighbouring points into three or more rings based on a predefined resolution distance from the query point to obtain a set of grouped points. The query point may be centre of each of the three or more rings. Each of the three or more rings may include a plurality of ring points, and number of the corresponding set of grouped points may be based on area of each of the three or more rings.
[028] Further, the point cloud encoding device 102 may arrange the set of grouped points along each of the three or more rings in a clockwise order based on a signed distance of each of the set of grouped points from one of the plurality of ring points. The point cloud encoding device 102 may further generate a 2-Dimensional (2D) matrix based on point data corresponding to each of the arranged set of grouped points. It may be noted that, number of rows in the 2D matrix may be based on number of the three or more rings and number of columns in the 2D matrix may be based on number of the arranged set of grouped points in largest of the three or more rings. The complete process followed by the system 100 is further explained in detail in conjunction with FIG. 2 to FIG. 10.
[029] The point cloud encoding device 102 may further include a processor 104 that is communicatively coupled to the memory 106 which may be a non-volatile memory or a volatile memory. Examples of non-volatile memory, may include, but are not limited to a flash memory, a Read Only Memory (ROM), a Programmable ROM (PROM), Erasable PROM (EPROM), and Electrically EPROM (EEPROM) memory. Examples of volatile memory may include, but are not limited Dynamic Random Access Memory (DRAM), and Static Random-Access Memory (SRAM).
[030] The memory 106 may store instructions that, when executed by the processor 104, may cause the processor 104 to encode point clouds of the 3D model. The memory 106 may also store various data (e.g., 3D data, point cloud data, 2D image data, etc.) that may be captured, processed, and/or required by the point cloud encoding device 102.
[031] The point cloud encoding device 102 may further include a display 108. The display 108 may include a user interface 110. The end-user may interact with the point cloud encoding device 102 and vice versa via the user interface 110 accessible via the display 108. By way of an example, the display 108 may be used to display results (i.e., the encoded point clouds), to the end-user.
[032] The system 100 may also include one or more external devices 112. In some embodiments, the point cloud encoding device 102 may interact with the one or more external devices 112 over a communication network 114 for sending or receiving various data. Examples of the external devices 112 may include, but are not limited to, computer, tablet, smartphone, and laptop. The communication network 114, for example, may be any wired or wireless network and the examples may include, but may be not limited to, the Internet, Wireless Local Area Network (WLAN), Wi-Fi, Long Term Evolution (LTE), Worldwide Interoperability for Microwave Access (WiMAX), and General Packet Radio Service (GPRS).
[033] Referring now to FIG. 2, a block diagram 200 of various modules within the memory 106 of the point cloud encoding device 102 configured to encode point clouds of the 3D model is illustrated, in accordance with some embodiments. The memory 106 may include an identification module 202, a grouping module 204, an arranging module 206, and a matrix generation module 208. Once the unorganized point cloud corresponding to the 3D model are received, then for each void region from the one or more void regions and for each of one or more iterations, the point cloud encoding device 102 may identify, from the plurality of points and for a query point in the void region near the corresponding void boundary, a set of neighbouring points around the void boundary through the identification module 202.
[034] The grouping module 204 may be configured to group each of the set of neighbouring points into three or more rings based on a predefined resolution distance from the query point to obtain a set of grouped points. It may be noted that, the query point may be centre of each of the three or more rings. Each of the three or more rings may include a plurality of ring points, and number of the corresponding set of grouped points may be based on area of each of the three or more rings.
[035] The arranging module 206 may arrange the set of grouped points along each of the three or more rings in a clockwise order based on a signed distance of each of the set of grouped points from one of the plurality of ring points. In some embodiments, in order to arrange the set of grouped points, for each ring from the three or more rings, the arranging module 206 may randomly select one of the plurality of ring points corresponding to the ring, calculate a signed distance of each of the set of grouped points in each of the three or more rings from the randomly selected one of the plurality of ring points, and for each of the three or more rings, relocate each of the set of neighbouring points to the three or more rings based on the signed distance.
[036] Once the set of grouped points are arranged, the matrix generation module 208 may generate a 2-Dimensional (2D) matrix based on point data corresponding to each of the arranged set of grouped points. It may be noted that, number of rows in the 2D matrix may be based on number of the three or more rings and number of columns in the 2D matrix may be based on number of the arranged set of grouped points in largest of the three or more rings.
[037] It should be noted that all such aforementioned modules 202 – 208 may be represented as a single module or a combination of different modules. Further, as will be appreciated by those skilled in the art, each of the modules 202 – 208 may reside, in wvoid or in parts, on one device or multiple devices in communication with each other. In some embodiments, each of the modules 202 – 208 may be implemented as dedicated hardware circuit comprising custom application-specific integrated circuit (ASIC) or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. Each of the modules 202 – 208 may also be implemented in a programmable hardware device such as a field programmable gate array (FPGA), programmable array logic, programmable logic device, and so forth. Alternatively, each of the modules 202 – 208 may be implemented in software for execution by various types of processors (e.g., processor 104). An identified module of executable code may, for instance, include one or more physical or logical blocks of computer instructions, which may, for instance, be organized as an object, procedure, function, or other construct. Nevertheless, the executables of an identified module or component need not be physically located together, but may include disparate instructions stored in different locations which, when joined logically together, include the module and achieve the stated purpose of the module. Indeed, a module of executable code could be a single instruction, or many instructions, and may even be distributed over several different code segments, among different applications, and across several memory devices.
[038] As will be appreciated by one skilled in the art, a variety of processes may be employed for encoding point clouds of the 3D model. For example, the exemplary system 100 and the associated point cloud encoding device 102 may encode point clouds of the 3D model by the processes discussed herein. In particular, as will be appreciated by those of ordinary skill in the art, control logic and/or automated routines for performing the techniques and steps described herein may be implemented by the system 100 and the associated point cloud encoding device 102 either by hardware, software, or combinations of hardware and software. For example, suitable code may be accessed and executed by the processor 104 on the system 100 to perform some or all of the techniques described herein. Similarly, application specific integrated circuits (ASICs) configured to perform some or all of the processes described herein may be included in the processor 104 on the system 100.
[039] Referring now to FIGs. 3A and 3B, a flowchart of a method 300 for encoding point clouds of the 3D model is illustrated, in accordance with some embodiments. With reference to FIG. 3A, at step 302, an unorganized point cloud corresponding to the 3D model may be received. The unorganized point cloud may include a plurality of points and one or more void regions. It may be noted that, each of the plurality of points may be absent in the one or more void regions of the unorganized point cloud, and each of the one or more void regions may include a void boundary along edges of each of the one or more void regions.
[040] Once the unorganized point cloud corresponding to the 3D model are received, then, for each void region from the one or more void regions and for each of one or more iterations, at step 304, a set of neighbouring points around the void boundary may be identified, from the plurality of points, and for a query point in the void region near the corresponding void boundary. A pictorial representation of the set of neighbouring points on one side and around the void boundary is depicted via FIGs. 4A and 4B respectively.
[041] At step 306, each of the set of neighbouring points may be grouped into three or more rings based on a predefined resolution distance from the query point to obtain a set of grouped points. It may be noted that, the query point may be centre of each of the three or more rings. Each of the three or more rings may include a plurality of ring points, and number of the corresponding set of grouped points may be based on area of each of the three or more rings.
[042] At step 308, the set of grouped points may be arranged along each of the three or more rings in a clockwise order based on a signed distance of each of the set of grouped points from one of the plurality of ring points. In order to arrange the set of grouped points, for each ring from the three or more rings, one of the plurality of ring points corresponding to the ring may be randomly selected, at step 310.
[043] Further, at step 312, a signed distance of each of the set of grouped points may be calculated in each of the three or more rings from the randomly selected one of the plurality of ring points. For each of the three or more rings, at step 314, each of the set of neighbouring points may be relocated to the three or more rings based on the signed distance.
[044] Once the set of grouped points are arranged, with reference to FIG. 3B, at step 316, a 2-Dimensional (2D) matrix may be generated based on point data corresponding to each of the arranged set of grouped points. It may be noted that, number of rows in the 2D matrix may be based on number of the three or more rings and number of columns in the 2D matrix may be based on number of the arranged set of grouped points in largest of the three or more rings.
[045] In some embodiments, for generating the 2D matrix, for each of the three or more rings, the point data corresponding to each of the arranged set of grouped points may be transformed into a fixed length vector through supersampling each of the arranged set of grouped points, at step 318. By way of an example, once set of grouped points are arranged, then supersampling of point data may be done in each of the three or more rings to convert the point data into a 2D image data. The 2D image may be a rectangle with number of rows equal to one more than the number of rings in the neighborhood r i.e. r+1. The number of columns in the 2D image may be chosen to be the number of points in the last or further ring, although larger number may be used. Each of the lower rings may include less points than are required to fill the image. Therefore, the points in each of the three or more rings may be super-sampled while maintaining their order to artificially create an equal number of points for filling up the image.
[046] Further, at step 320, the 2D matrix may be generated based on the fixed length vector corresponding to each of the three or more rings. This is further explained in conjunction with FIG. 7.
[047] Once the 2D matrix is generated, then at step 322, coordinates of the query point may be predicted based on the 2D matrix through a Convolutional Neural Network (CNN) model. In some embodiments, a void boundary corresponding to the void region along edges of the void region may be identified. In some embodiments, the method 300 may be implemented for patching voids in triangulated 3D models. The process of patching voids is explained in detail in conjunction with FIG. 9A-9C.
[048] Referring now to FIGs. 4A and 4B, is a pictorial representation 400 of neighbouring points on one side of the void boundary 404 and around the void boundary 404, respectively. In order to encode point clouds of the 3D model, initially, for a query point 406 in the void region near the corresponding void boundary, a set of neighbouring points 402 around the void boundary 404 may be identified, from the plurality of points.
[049] In one embodiment, the set of neighbouring points 402 may be primarily on one side of the void boundary 404 as depicted via Figure 4A. In other embodiment, the set of neighbouring points 402 may be surrounded completely on all sides of the void boundary 404 as depicted via FIG. 4B.
[050] Once the set of neighbouring points 402 are identified, each of the set of neighbouring points 402 may be grouped into three or more rings based on a predefined resolution distance from the query point 406 to obtain a set of grouped points 502. The grouping of each of the set of neighbouring points 402 into three or more rings is depicted in FIG. 5 via pictorial representation 500. In reference to the present FIG. 5, the set of neighbouring points 402 may be primarily on one side of the void boundary 404. The grouping of the set of neighbouring points 402 may be based on the predefined resolution distance from the query point 406 discretized by a small multiple of the resolution ‘r’, which may be the resolution used to advance the void boundary 404 and to identify surrounding surface with a uniformly distributed point cloud. It may be noted that, since ‘r’ is the resolution of the point cloud, the number of points in an area r2 may be approximately 1.
[051] Further, each of the three or more rings may include a plurality of ring points proportional to area of each of the three or more rings. For example, if four rings are selected of radii 2r, 3r, 4r and 5r, then the four rings may include the plurality ring points approximately proportional to their area. For the first ring with radii 2r, the area may be p(2r)2 i.e., approximately equal to ˜12r2 and hence approximately 12/2 = 6 points may be found. Similarly, for the next ring with radii 3r, the area may be approximately p(3r)2 - p(2r)2 ˜15r2 and hence approximately 7 or 8 (15/2 = 7.5) points may typically be present in the ring.
[052] Once the set of grouped points are obtained, the set of grouped points along each of the three or more rings may be arranged in a clockwise order based on a signed distance of each of the set of grouped points from one of the plurality of ring points. The calculation of the signed distance of each of the set of grouped points is depicted in FIGs. 6A and 6B via pictorial representation 600. With reference to FIG. 6A, in order to arrange the set of grouped points, for each ring from the three or more rings, one of the plurality of ring points corresponding to the ring may be randomly selected. For example, a random point Pr may be selected from the ring.
[053] Further, a signed distance of each of the set of grouped points may be calculated in each of the three or more rings from the randomly selected one of the plurality of ring points. As an example, for each point Pi in the ring, another cross product Ci = (P – Pi)×(P – Pr) and a dot product d = (P – Pi)?(P – Pr) x sign(N?Ci) may be calculated which may provide a signed distance of the rest of the points Pi from the selected random point Pr. It may be noted that that, ‘P’ is the estimation of the query point and ‘N’ is the estimated normal at this query point. Based on the signed distance, each of the set of grouped points in the ring may be arranged. In some embodiments, based on the signed distance, each of the set of neighbouring points 402 may be relocated to the three or more rings, for each of the three or more rings.
[054] Referring now to FIG. 7, a pictorial representation 700 for generating 2D matrix 704 from the arranged set of grouped points 702 is illustrated, in accordance with some embodiments. Once, the set of grouped points are arranged, the point cloud encoding device 102 may generate the 2D matrix 704 based on point data corresponding to each of the arranged set of grouped points 702. The number of rows in the 2D matrix 704 may be based on number of the three or more rings and the number of columns in the 2D matrix 704 may be based on number of the arranged set of grouped points in largest of the three or more rings.
[055] FIG. 7 depicts at least four rings and therefore 4+1 rows may be created in the 2D matrix 704. The set of grouped points may be indicated by numbering “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “10”, “11” that may be arranged in clockwise within the three or more rings. There may be 11 points in the outer most ring, and therefore, in this case 11 columns may be chosen in the 2D matrix. It may be noted that, one may choose more or less than this number. In the first row of the 2D matrix 704 the points from the third ring may be placed in order since there are exactly 11 points available. In the second row of the 2D matrix 704, several points from the second ring may be replicated, since only 6 points are available to fill in 11 columns. Similarly in the third row, several points may be repeated thrice, since only 4 unique points are available to fill in the 11 column spaces. The identification of the query point may be repeated through all the columns in the last row of the 2D matrix 704.
[056] The generated 2D matrix 704 may further be used to predict coordinates of the query point through the CNN model. Referring now to FIG. 8For example, in case of void patching where identification of the point coordinates of the query point are required, the values in the 2D matrix 704 may be set to the point coordinates of the neighborhood points. Since there are three coordinate values associated with each point in 3D, three separate 2D images (for example, 2D matrix 704) may be created each containing one of x, y, or z values of each of the set of the neighboring points 402. In case where some other property of the points needs to be identified, then the 2D images (for example, 2D matrix 704) may include the values of these properties, for example, color, texture or any other feature.
[057] Referring now to FIG. 8, a CNN model architecture 800 for predicting coordinates of the query point is illustrated, in accordance with some embodiments. Once input data of the point cloud is reduced to 2D images i.e., 2D matrix, a standard CNN model architecture (for example, the CNN model architecture 800) may be used for training and post training to predict a desired quantity. In case of void patching, the CNN model architecture 800 may be used with a fully connected layer to output the three coordinates of the query point on the void boundary. It may be noted that, since the present techniques uses an advancing front method for filling the void, a problem of error magnification when filling a large void remains. The front propagating from opposite ends of the large void may not meet smoothly near the center of the void. This results in an undulating surface near the centers of larger voids. Therefore, the void filling process may be iterated multiple times over the resulting patch to smooth out any undulation.
[058] Referring now to FIGs. 9A-9C, progressively filling of void in an exemplary triangulated 3D model 900 using encoded point clouds is illustrated, in accordance with an exemplary embodiment. A void 902 in the exemplary triangulated 3D model 900 that is to be patched is depicted via FIG. 9A. It may be noted that, the void 902 in the exemplary triangulated 3D model 900 may be detected based on the method 300 which is already explained in conjunction with FIG. 3.
[059] In order to patch the detected void of the exemplary triangulated 3D model 900, the void 902 may be progressively filled using boundary propagation. FIG. 9B illustrates a patched region 904 within the exemplary triangulated 3D model 900 after performing at least two boundary iterations and FIG. 9C illustrates a patched region 906 within the exemplary triangulated 3D model 900 after performing at least three boundary iterations.
[060] The techniques described in various embodiments provide for adapting 3D point data for processing with a neural network (for example, CNN). The techniques for processing the plurality of points in the point cloud is unique and designed specifically for accurate interpolation of new points.
[061] Additionally, the techniques may be designed to handle partial point neighborhoods, where it may be possible to preserve the order of the points in the rings. Further, the disclosed techniques use a super-sampling method to ensure that fixed sized data is available for input into CNNs.
[062] Further, the disclosed techniques use deep learning for void filling to learn the underlying structure of smooth surface. The deep learning-based techniques may learn to represent the underlying surface much more accurately since it uses a much larger number of parameters to learn the structure of the surface.
[063] Further, the use of deep learning for regression tasks requiring high accuracy is not common. This is because the data for regression is often either noisy or prediction inherently involves some uncertainty. The disclosed techniques may provide enough accurate data points such that the deep learning model may learn to predict accurate results. The deep learning may be applied to the 3D model mainly for point cloud completion, shape correspondence and shape retrieval. The techniques provide accurate filling of voids for use in computations in manufacturing and other industrial processes.
[064] As will be appreciated, the above-described techniques may take the form of computer or controller implemented processes and apparatuses for practicing those processes. The disclosure can also be embodied in the form of computer program code containing instructions embodied in tangible media, such as floppy diskettes, solid state drives, CD-ROMs, hard drives, or any other computer-readable storage medium, wherein, when the computer program code is loaded into and executed by a computer or controller, the computer becomes an apparatus for practicing the invention. The disclosure may also be embodied in the form of computer program code or signal, for example, whether stored in a storage medium, loaded into and/or executed by a computer or controller, or transmitted over some transmission medium, such as over electrical wiring or cabling, through fiber optics, or via electromagnetic radiation, wherein, when the computer program code is loaded into and executed by a computer, the computer becomes an apparatus for practicing the invention. When implemented on a general-purpose microprocessor, the computer program code segments configure the microprocessor to create specific logic circuits.
[065] The disclosed methods and systems may be implemented on a conventional or a general-purpose computer system, such as a personal computer (PC) or server computer. Referring now to FIG. 10, an exemplary computing system 1000 that may be employed to implement processing functionality for various embodiments (e.g., as a SIMD device, client device, server device, one or more processors, or the like) is illustrated. Those skilled in the relevant art will also recognize how to implement the invention using other computer systems or architectures. The computing system 1000 may represent, for example, a user device such as a desktop, a laptop, a mobile phone, personal entertainment device, DVR, and so on, or any other type of special or general-purpose computing device as may be desirable or appropriate for a given application or environment. The computing system 1000 may include one or more processors, such as a processor 1002 that may be implemented using a general or special purpose processing engine such as, for example, a microprocessor, microcontroller or other control logic. In this example, the processor 1002 is connected to a bus 1004 or other communication medium. In some embodiments, the processor 1002 may be an Artificial Intelligence (AI) processor, which may be implemented as a Tensor Processing Unit (TPU), or a graphical processor unit, or a custom programmable solution Field-Programmable Gate Array (FPGA).
[066] The computing system 1000 may also include a memory 1006 (main memory), for example, Random Access Memory (RAM) or other dynamic memory, for storing information and instructions to be executed by the processor 1002. The memory 1006 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by the processor 1002. The computing system 1000 may likewise include a read only memory (“ROM”) or other static storage device coupled to bus 1004 for storing static information and instructions for the processor 1002.
[067] The computing system 1000 may also include storage devices 1008, which may include, for example, a media drive 1010 and a removable storage interface. The media drive 1010 may include a drive or other mechanism to support fixed or removable storage media, such as a hard disk drive, a floppy disk drive, a magnetic tape drive, an SD card port, a USB port, a micro USB, an optical disk drive, a CD or DVD drive (R or RW), or other removable or fixed media drive. A storage media 1012 may include, for example, a hard disk, magnetic tape, flash drive, or other fixed or removable medium that is read by and written to by the media drive 1010. As these examples illustrate, the storage media 1012 may include a computer-readable storage medium having stored therein particular computer software or data.
[068] In alternative embodiments, the storage devices 1008 may include other similar instrumentalities for allowing computer programs or other instructions or data to be loaded into the computing system 1000. Such instrumentalities may include, for example, a removable storage unit 1014 and a storage unit interface 1016, such as a program cartridge and cartridge interface, a removable memory (for example, a flash memory or other removable memory module) and memory slot, and other removable storage units and interfaces that allow software and data to be transferred from the removable storage unit 1014 to the computing system 1000.
[069] The computing system 1000 may also include a communications interface 1018. The communications interface 1018 may be used to allow software and data to be transferred between the computing system 1000 and external devices. Examples of the communications interface 1018 may include a network interface (such as an Ethernet or other NIC card), a communications port (such as for example, a USB port, a micro USB port), Near field Communication (NFC), etc. Software and data transferred via the communications interface 1018 are in the form of signals which may be electronic, electromagnetic, optical, or other signals capable of being received by the communications interface 1018. These signals are provided to the communications interface 1018 via a channel 1020. The channel 1020 may carry signals and may be implemented using a wireless medium, wire or cable, fiber optics, or other communications medium. Some examples of the channel 1020 may include a phone line, a cellular phone link, an RF link, a Bluetooth link, a network interface, a local or wide area network, and other communications channels.
[070] The computing system 1000 may further include Input/Output (I/O) devices 1022. Examples may include, but are not limited to a display, keypad, microphone, audio speakers, vibrating motor, LED lights, etc. The I/O devices 1022 may receive input from a user and also display an output of the computation performed by the processor 1002. In this document, the terms “computer program product” and “computer-readable medium” may be used generally to refer to media such as, for example, the memory 1006, the storage devices 1008, the removable storage unit 1014, or signal(s) on the channel 1020. These and other forms of computer-readable media may be involved in providing one or more sequences of one or more instructions to the processor 1002 for execution. Such instructions, generally referred to as “computer program code” (which may be grouped in the form of computer programs or other groupings), when executed, enable the computing system 1000 to perform features or functions of embodiments of the present invention.
[071] In an embodiment where the elements are implemented using software, the software may be stored in a computer-readable medium and loaded into the computing system 1000 using, for example, the removable storage unit 1014, the media drive 1010 or the communications interface 1018. The control logic (in this example, software instructions or computer program code), when executed by the processor 1002, causes the processor 1002 to perform the functions of the invention as described herein.
[072] As will be appreciated by those skilled in the art, the techniques described in the various embodiments discussed above are not routine, or conventional, or well understood in the art. The techniques discussed above provide for encoding point clouds of the 3D model. Further, the techniques may be implemented for predicting points and point properties in 3D data. In order to check the effectiveness, the presented techniques may further be implemented for patching voids in the exemplary triangulated 3D model 900. The techniques may also be used to predict other properties like normals, colors and textures on 3D points clouds and triangulated meshes.
[073] In light of the above-mentioned advantages and the technical advancements provided by the disclosed method and system, the claimed steps as discussed above are not routine, conventional, or well understood in the art, as the claimed steps enable the following solutions to the existing problems in conventional technologies. Further, the claimed steps clearly bring an improvement in the functioning of the device itself as the claimed steps provide a technical solution to a technical problem.
[074] The specification has described method and system for intelligently managing time and attendance of the user in the establishment. The illustrated steps are set out to explain the exemplary embodiments shown, and it should be anticipated that ongoing technological development will change the manner in which particular functions are performed. These examples are presented herein for purposes of illustration, and not limitation. Further, the boundaries of the functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternative boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed. Alternatives (including equivalents, extensions, variations, deviations, etc., of those described herein) will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein. Such alternatives fall within the scope and spirit of the disclosed embodiments.
[075] Furthermore, one or more computer-readable storage media may be utilized in implementing embodiments consistent with the present disclosure. A computer-readable storage medium refers to any type of physical memory on which information or data readable by a processor may be stored. Thus, a computer-readable storage medium may store instructions for execution by one or more processors, including instructions for causing the processor(s) to perform steps or stages consistent with the embodiments described herein. The term “computer-readable medium” should be understood to include tangible items and exclude carrier waves and transient signals, i.e., be non-transitory. Examples include random access memory (RAM), read-only memory (ROM), volatile memory, nonvolatile memory, hard drives, CD ROMs, DVDs, flash drives, disks, and any other known physical storage media.
[076] It is intended that the disclosure and examples be considered as exemplary only, with a true scope and spirit of disclosed embodiments being indicated by the following claims.
CLAIMS
We claim:
1. A method (300) for encoding point clouds of a 3-Dimensional (3D) model, the method (300) comprising:
receiving (302), by a point cloud encoding device (102), an unorganized point cloud corresponding to the 3D model comprising a plurality of points and one or more void regions, wherein each of the plurality of points is absent in the one or more void regions of the unorganized point cloud, and wherein each of the one or more void regions comprises a void boundary (404) along edges of each of the one or more void regions; and
for each void region from the one or more void regions and for each of one or more iterations,
for a query point (406) in the void region near the corresponding void boundary (404), identifying (304), by the point cloud encoding device (102), from the plurality of points, a set of neighbouring points (402) around the void boundary (404);
grouping (306), by the point cloud encoding device (102), each of the set of neighbouring points (402) into three or more rings based on a predefined resolution distance from the query point (406) to obtain a set of grouped points (502), wherein the query point (406) is centre of each of the three or more rings, wherein each of the three or more rings comprises a plurality of ring points, and wherein number of the corresponding set of grouped points (502) is based on area of each of the three or more rings;
arranging (308), by the point cloud encoding device (102), the set of grouped points (502) along each of the three or more rings in a clockwise order based on a signed distance of each of the set of grouped points from one of the plurality of ring points; and
generating (316), by the point cloud encoding device (102), a 2-Dimensional (2D) matrix (704) based on point data corresponding to each of the arranged set of grouped points (702), wherein number of rows in the 2D matrix (704) is based on number of the three or more rings and number of columns in the 2D matrix (704) is based on number of the arranged set of grouped points (702) in largest of the three or more rings.
2. The method (300) as claimed in claim 1, further comprising predicting (322) coordinates of the query point (406) based on the 2D matrix (704) through a Convolutional Neural Network (CNN) model.
3. The method (300) as claimed in claim 1, wherein arranging the set of grouped points (502) comprises, for each ring from the three or more rings, randomly selecting (310) one of the plurality of ring points corresponding to the ring.
4. The method (300) as claimed in claim 3, further comprising calculating (312) a signed distance of each of the set of grouped points (502) in each of the three or more rings from the randomly selected one of the plurality of ring points.
5. The method (300) as claimed in claim 4, further comprising, for each of the three or more rings, relocating (314) each of the set of neighbouring points (402) to the three or more rings based on the signed distance.
6. The method (300) as claimed in claim 1, wherein, for each of the three or more rings, generating a 2D matrix (704) based on point data corresponding to each of the arranged set of grouped points (702) further comprises:
for each of the three or more rings, transforming (318) the point data corresponding to each of the arranged set of grouped points (702) into a fixed length vector through supersampling each of the arranged set of grouped points (702); and
generating (320) the 2D matrix (704) based on the fixed length vector corresponding to each of the three or more rings.
7. The method (300) as claimed in claim 1, further comprising identifying a void boundary (404) corresponding to the void region along edges of the void region.
8. A system (100) for encoding point clouds of a 3-Dimensional (3D) model, the system (100) comprising:
a point cloud encoding device (102) comprising a processor (104) and a memory (106) communicatively coupled to the processor (104), wherein the memory (106) stores processor-executable instructions, which, on execution, causes the processor (104) to:
receive an unorganized point cloud corresponding to the 3D model comprising a plurality of points and one or more void regions, wherein each of the plurality of points is absent in the one or more void regions of the unorganized point cloud, and wherein each of the one or more void regions comprises a void boundary (404) along edges of each of the one or more void regions; and
for each void region from the one or more void regions and for each of one or more iterations,
for a query point (406) in the void region near the corresponding void boundary (404), identify from the plurality of points, a set of neighbouring points (402) around the void boundary (404);
group each of the set of neighbouring points (402) into three or more rings based on a predefined resolution distance from the query point (406) to obtain a set of grouped points (502), wherein the query point (406) is centre of each of the three or more rings, wherein each of the three or more rings comprises a plurality of ring points, and wherein number of the corresponding set of grouped points (502) is based on area of each of the three or more rings;
arrange the set of grouped points along each of the three or more rings in a clockwise order based on a signed distance of each of the set of grouped points (502) from one of the plurality of ring points; and
generate a 2-Dimensional (2D) matrix (704) based on point data corresponding to each of the arranged set of grouped points (702), wherein number of rows in the 2D matrix (704) is based on number of the three or more rings and number of columns in the 2D matrix (704) is based on number of the arranged set of grouped points (702) in largest of the three or more rings.
9. The system (100) as claimed in claim 8, wherein the processor instructions, on execution, cause the processor (104) to predict coordinates of the query point (406) based on the 2D matrix (704) through a Convolutional Neural Network (CNN) model.
10. The system (100) as claimed in claim 8, wherein to arrange the set of grouped points (502), the processor instructions, on execution, cause the processor (104) to, for each ring from the three or more rings, randomly select one of the plurality of ring points corresponding to the ring.
11. The system (100) as claimed in claim 10, wherein the processor instructions, on execution, cause the processor (104) to calculate a signed distance of each of the set of grouped points (502) in each of the three or more rings from the randomly selected one of the plurality of ring points.
12. The system (100) as claimed in claim 11, wherein the processor instructions, on execution, cause the processor (104) to, for each of the three or more rings, relocate each of the set of neighbouring points (402) to the three or more rings based on the signed distance.
13. The system (100) as claimed in claim 8, wherein, for each of the three or more rings, to generate a 2D matrix (704) based on point data corresponding to each of the arranged set of grouped points (702), the processor instructions, on execution, cause the processor (104) to:
for each of the three or more rings, transform the point data corresponding to each of the arranged set of grouped points (702) into a fixed length vector through supersampling each of the arranged set of grouped points (702); and
generate the 2D matrix (704) based on the fixed length vector corresponding to each of the three or more rings.
14. The system (100) as claimed in claim 8, wherein the processor instructions, on execution, cause the processor (104) to identify a void boundary (404) corresponding to the void region along edges of the void region.
| # | Name | Date |
|---|---|---|
| 1 | 202211019098-CLAIMS [26-03-2023(online)].pdf | 2023-03-26 |
| 1 | 202211019098-STATEMENT OF UNDERTAKING (FORM 3) [30-03-2022(online)].pdf | 2022-03-30 |
| 2 | 202211019098-CORRESPONDENCE [26-03-2023(online)].pdf | 2023-03-26 |
| 2 | 202211019098-REQUEST FOR EXAMINATION (FORM-18) [30-03-2022(online)].pdf | 2022-03-30 |
| 3 | 202211019098-REQUEST FOR EARLY PUBLICATION(FORM-9) [30-03-2022(online)].pdf | 2022-03-30 |
| 3 | 202211019098-DRAWING [26-03-2023(online)].pdf | 2023-03-26 |
| 4 | 202211019098-PROOF OF RIGHT [30-03-2022(online)].pdf | 2022-03-30 |
| 4 | 202211019098-FER_SER_REPLY [26-03-2023(online)].pdf | 2023-03-26 |
| 5 | 202211019098-POWER OF AUTHORITY [30-03-2022(online)].pdf | 2022-03-30 |
| 5 | 202211019098-FER.pdf | 2022-09-26 |
| 6 | 202211019098-FORM-9 [30-03-2022(online)].pdf | 2022-03-30 |
| 6 | 202211019098-COMPLETE SPECIFICATION [30-03-2022(online)].pdf | 2022-03-30 |
| 7 | 202211019098-FORM 18 [30-03-2022(online)].pdf | 2022-03-30 |
| 7 | 202211019098-DECLARATION OF INVENTORSHIP (FORM 5) [30-03-2022(online)].pdf | 2022-03-30 |
| 8 | 202211019098-DRAWINGS [30-03-2022(online)].pdf | 2022-03-30 |
| 8 | 202211019098-FORM 1 [30-03-2022(online)].pdf | 2022-03-30 |
| 9 | 202211019098-FIGURE OF ABSTRACT [30-03-2022(online)].jpg | 2022-03-30 |
| 10 | 202211019098-FORM 1 [30-03-2022(online)].pdf | 2022-03-30 |
| 10 | 202211019098-DRAWINGS [30-03-2022(online)].pdf | 2022-03-30 |
| 11 | 202211019098-FORM 18 [30-03-2022(online)].pdf | 2022-03-30 |
| 11 | 202211019098-DECLARATION OF INVENTORSHIP (FORM 5) [30-03-2022(online)].pdf | 2022-03-30 |
| 12 | 202211019098-FORM-9 [30-03-2022(online)].pdf | 2022-03-30 |
| 12 | 202211019098-COMPLETE SPECIFICATION [30-03-2022(online)].pdf | 2022-03-30 |
| 13 | 202211019098-POWER OF AUTHORITY [30-03-2022(online)].pdf | 2022-03-30 |
| 13 | 202211019098-FER.pdf | 2022-09-26 |
| 14 | 202211019098-PROOF OF RIGHT [30-03-2022(online)].pdf | 2022-03-30 |
| 14 | 202211019098-FER_SER_REPLY [26-03-2023(online)].pdf | 2023-03-26 |
| 15 | 202211019098-REQUEST FOR EARLY PUBLICATION(FORM-9) [30-03-2022(online)].pdf | 2022-03-30 |
| 15 | 202211019098-DRAWING [26-03-2023(online)].pdf | 2023-03-26 |
| 16 | 202211019098-REQUEST FOR EXAMINATION (FORM-18) [30-03-2022(online)].pdf | 2022-03-30 |
| 16 | 202211019098-CORRESPONDENCE [26-03-2023(online)].pdf | 2023-03-26 |
| 17 | 202211019098-STATEMENT OF UNDERTAKING (FORM 3) [30-03-2022(online)].pdf | 2022-03-30 |
| 17 | 202211019098-CLAIMS [26-03-2023(online)].pdf | 2023-03-26 |
| 1 | searchE_26-09-2022.pdf |