Project · 2013
TCC — Reconhecimento de Plantas por Rede Neural
My Computer Science capstone (2013): a mobile application for plant species recognition. An Android app photographs the leaf, sends it to a Java server, and recognition uses Artificial Intelligence (a neural network) and image processing (contours and colors), classifying against an Oracle database of species. Years before the AI boom.
While the world was dreaming of AI, I was already shipping with it — in 2013, recognizing plant species from a photo, with a neural network and computer vision hand-built in Java.
In 2013, for my Computer Science capstone, I built a mobile app to recognize plant species from a photo of the leaf — years before AI became everyone's topic. The motivation was simple: facing an unknown plant (in a park, say), being able to identify it on the spot with your phone — and back then no such apps existed.
The end user has two ways to send the photo: an Android app (camera) and a web client page. Both send the image, over a socket, to the same Java server — the client only captures; the heavy lifting stays on the server.
On the server, a computer-vision pipeline prepares the image: it resizes, converts to grayscale, binarizes by threshold and detects the leaf's contour by scanning the image in four directions; then it crops the useful frame and builds the feature matrix.
Recognition uses an Artificial Neural Network. I chose ART (Adaptive Resonance Theory) on purpose: it's self-organizing and unsupervised, and solves the stability-plasticity dilemma — it learns a new species without restarting the whole training. I implemented ART from scratch in Java (plus an MLP with backpropagation), with no AI frameworks.
On the other side, a Java desktop application is the specialist's tool: it registers and classifies the reference plants (original photo + processed version) in an Oracle database. Recognition compares against that base — returning to the client the recognized species or a list of candidates, each with a name and a fun fact.
Engineering decisions
- 01
ART for stability-plasticity
I chose ART over a plain MLP because it's self-organizing and learns new patterns without forgetting old ones or restarting training — exactly what a species catalog that grows over time needs.
- 02
Process on the server, not the phone
In 2013 phones were limited; the app only captures and sends the photo over a socket, and all the heavy work — computer vision and the neural network — runs on a Java server.
- 03
Contour instead of the whole leaf
Instead of feeding the network the full image, I extract the leaf's contour (four-direction scan) and crop the useful frame — less data, faster recognition focused on shape.
- 04
Neural networks written by hand
I implemented ART and an MLP with backpropagation from scratch in Java, with no AI libraries — in 2013 today's ecosystem didn't exist.
Architecture
Clientes
Android app + Web
End user sends the leaf photo (camera or browser) over a socket.
Servidor Java
The hub
The Java server that connects everything: receives the clients' images, runs recognition and talks to Oracle.
Visão computacional
Preprocessing
Grayscale → binarize → contour → crop → matrix.
Rede neural (ART)
Recognition
Self-organizing ART network, hand-built in Java.
Banco Oracle
Species
Registered catalog; returns the plant or candidates.
Desktop (especialista)
Java registration
Desktop software where the specialist registers and classifies the reference plants.
Responsive



Stack