![ ](fig/me.jpg width="20%")
I am a PhD candidate at the [College of Information and Computer Sciences](https://www.cics.umass.edu/) in the
[University of Massachusetts - Amherst](https://www.cics.umass.edu/).
Currently, I am working as a Research Assistant in the
[Computer Graphics Research Group](http://graphics.cs.umass.edu/) and in the
[Computer Vision Lab](http://vis-www.cs.umass.edu/) under the supervision of
[Prof. Rui Wang](https://people.cs.umass.edu/~ruiwang/) and
[Prof. Subhransu Maji](http://people.cs.umass.edu/~smaji/).
Prior to joining UMass, I've obtained my bachelor's and master's degrees in Computer Science
from [Federal University of Rio Grande do Norte](https://sistemas.ufrn.br/portal/PT/),
while working at IMAGINA Research Lab, under the supervision of Profs. Selan dos Santos
and Bruno Motta de Carvalho.
I am interested in Computer Graphics, Vision and their intersections with Machine Learning.
More recently, I've been working on 3D shape processing through deep learning
with [Prof. Subhransu Maji](http://people.cs.umass.edu/~smaji/) and
[Prof. Rui Wang](https://people.cs.umass.edu/~ruiwang/).
- (July 5th, 2018) Our paper _Multiresolution Tree Networks for Point Cloud Processing_ has been accepted do ECCV 2018!
- (September 10th, 2017) We got _two_ papers accepted to 3DV 2017! (Check them below)
- (July 20th, 2017) The [page](https://people.cs.umass.edu/~zlun/papers/SketchModeling/) for our paper _3D Shape Reconstruction from Sketches via Multi-view Convolutional Networks_ is online.
- (July 19th, 2017) [Check](sppc/index.html) the page for our paper _Shape Generation using Spatially Partitioned Point Clouds_.
- (July 4th, 2017) Our paper _Shape Generation using Spatially Partitioned Point Clouds_ has been accepted do BMVC 2017!
- (December 23rd, 2016) [Check](prgan/index.html) the page for our paper _3D Shape Induction from 2D Views of Multiple Objects_.
- (December 18th, 2016) Our new paper _3D Shape Induction from 2D Views of Multiple Objects_ is on [ArXiv](https://arxiv.org/pdf/1612.05872.pdf).
(##) Multiresolution Tree Networks for Point Cloud Processing (ECCV 2018)
_**Matheus Gadelha**, Rui Wang, Subhransu Maji_
![Ordering and pooling induces multiple point cloud resolutions.](mrt/fig/smallabs.png width="25%")
We present multiresolution tree-structured networks to process point clouds
for 3D shape understanding and generation tasks. Our network represents a 3D
shape as a set of locality-preserving 1D ordered list of points at multiple
resolutions. This allows efficient feed-forward processing through 1D
convolutions, coarse-to-fine analysis through a multi-grid architecture, and it
leads to faster convergence and small memory footprint during training. The
proposed tree-structured encoders can be used to classify shapes, while
tree-structured decoders can be used for generating point clouds directly.
(##) Unsupervised 3D Shape Induction from 2D Views of Multiple Objects (3DV 2017)
_**Matheus Gadelha**, Subhransu Maji, Rui Wang_
![Learning to create shapes from images without any annotation.](prgan/fig/overview.png width="25%")
Our approach called "Projective Generative Adversarial Networks" (PrGANs) trains a deep generative
model of 3D shapes whose projections match the distributions of the input 2D views.
The addition of a projection module allows us to infer the underlying 3D shape distribution without
using any 3D, viewpoint information, or annotation during the learning phase.
We show that our approach produces 3D shapes of comparable quality to GANs trained on 3D data
for a number of shape categories including chairs, airplanes, and cars.
Experiments also show that the disentangled representation of 2D shapes into geometry and viewpoint
leads to a good generative model of 2D shapes.
The key advantage is that our model allows us to predict 3D, viewpoint, and generate novel views
from an input image in a completely unsupervised manner.
(##) 3D Shape Reconstruction from Sketches via Multi-view Convolutional Networks (3DV 2017 - _Oral_)
_Zhaoliang Lun, **Matheus Gadelha**, Evangelos Kalogerakis, Subhransu Maji, Rui Wang_
![Shapes from sketches.](fig/sketch.png width="25%")
We propose a method for reconstructing 3D shapes from 2D sketches in the form of line drawings.
Our method takes as input a single sketch, or multiple sketches,
and outputs a dense point cloud representing a 3D reconstruction of the input sketch(es).
The point cloud is then converted into a polygon mesh.
Based on our experiments, compared to other methods, such as volumetric networks,
our architecture offers several advantages, including more faithful reconstruction,
higher output surface resolution, better preservation of topology and shape structure.
(##) Shape Generation using Spatially Partitioned Point Clouds (BMVC 2017)
_**Matheus Gadelha**, Subhransu Maji, Rui Wang_
![_kd-tree_ sorted Point Clouds.](sppc/fig/airplanes_sorting_new2.png width="25%")
We propose a method to generate 3D shapes using point clouds.
Given a point-cloud representation of a 3D shape, our method builds a _kd-tree_ to spatially partition the points.
This orders them consistently across all shapes, resulting in reasonably good correspondences across all shapes.
We then use PCA analysis to derive a linear shape basis and optimize the point ordering
by iteratively minimizing the PCA reconstruction error.
We propose to use the expressive power of neural networks to learn a distribution over the shape coefficients in a generative-adversarial framework.
Compared to 3D shape generative models trained on voxel-representations,
our point-based method is considerably more light-weight and scalable, with little loss of quality.
Furthermore, our method can easily incorporate other point attributes such as normal and color information,
an additional advantage over voxel-based representations.
(##) Discrete Image Descriptors (ICPR 2014)
_**Matheus Gadelha**, Bruno Motta_
Computing descriptors for image features is a crucial task in many applications.
A good feature descriptor is capable of providing invariance to geometric and lightning transformations
while consuming as few memory as possible.
Binary descriptors only store a single bit per pixel comparison, and an useful portion of information,
about how large the difference of intensity is, is lost due to this quantization.
This work proposes a generalization of the binary descriptor idea: the discrete descriptor called DRINK.
Using this idea, we are able to use more information related to the intensity difference while
preserving the speed of the original binary descriptor.
(##) Interactive Mesh Deformation w/ ARAP Surface Modeling
![As Rigid as Possible Interactive Demo](https://www.youtube.com/watch?v=QUtpoybhYA8)
Implementation of the ARAP Surface Modeling paper.
It includes a software to deform any mesh, applying the computed transformation in real time.
It was coded in C++ with Eigen library and OpenGL.
(##) Rigid Body Simulation
Rigid body simulator coded in C++ with Eigen library and OpenGL.
The code includes a demo where you can load any model and interactively draw forces.
(##) Subdivision Surface
![Smoothing bunnies w/ subdivision surfaces.](fig/bunny_gets_better.png width="25%")
Code in C++ to perform subdivision of a closed triangular mesh. Made from scratch, so no
libraries are required.
(##) Generic A* implementation and CSP solver
Template-based implementation for the A* algorithm and CSP solver written in C++.
It is a generic solver, where you can simply define the successor and heuristic function for each problem.
Includes examples on solving knight shortest path problem and the classic TSP (w/ Minimum Spanning Tree heuristic).
CSP solver includes an efficient sudoku solver example.