Image processing

I’m trying to build a program meant to recognize plants by looking at a
picture of their leafs or similar parts.

The approach that I had thought to would be:

  • create a mathematical model of the leaves to be recognized
  • maybe use some algorithm to combine two pictures from different angles
    into one with depth measurement (absolutely don’t know how this is done)
  • confront the elements of the picture using distance or colors with the
    models in the database (basically using only the shape of the borders)

Therefore I am looking for some good and deep guides/sources to teach me
something about this kind of “data modeling”, geometrical analysis and
image processing. For now the best that I could find is the Camelia
Library (witch helps a little with colors, but I don’t think will be
enough for the shape detection).

I’m aware that this is not a simple project, but I am willing to learn
and spend a good amount of months to get this started

On 9/25/2012 3:40 AM, Nicol

On 09/25/2012 06:24 AM, Jam B. wrote:

A crude start could be doing a diff in imagemagick.
+1

I used it for image processing, like computing vertical and horizontal
integrals. You can treat images like
pixel arrays, which gives you the possibility to combine them with
NArray(http://narray.rubyforge.org/) and
the GSL(http://rb-gsl.rubyforge.org/). Imagemagick, NArray and GSL
should provide a good toolbox for
implementing your analysis.

bw
ralf

I think you could use neural networks too.

You can train them, to identify leaves based on their shape, color, etc.

2012/9/25 Ralf M. [email protected]

A crude start could be doing a diff in imagemagick.

Recognizing arbitrary shapes of irregular objects from different angles,
though, is hard.

On 25.09.2012 13:14, Alexander Blagoev wrote:

I think you could use neural networks too.

Artificial neural network - Wikipedia

You can train them, to identify leaves based on their shape, color, etc.

Coursera.org provides a course starting next week, see details at
https://www.coursera.org/course/neuralnets . It’s free and the
introduction video is … impressive I’d say.

HTH,

  • Markus

On Mon, Sep 24, 2012 at 8:40 PM, Nicol L. [email protected] wrote:

I’m trying to build a program meant to recognize plants by looking at a
picture of their leafs or similar parts.

I’m doing this kind of detection with animals.
There is a ruby opencv library, but it doesn’t have 100% api coverage
and
opencv can be a beast in its own right to install.

The approach that I had thought to would be:

  • create a mathematical model of the leaves to be recognized
  • maybe use some algorithm to combine two pictures from different angles
    into one with depth measurement (absolutely don’t know how this is done)
  • confront the elements of the picture using distance or colors with the
    models in the database (basically using only the shape of the borders)

Stone Age. You will need a lot of samples, but there are a lot of
algorithms you aren’t even considering.
You need to look more into Boosting, Bagging, and Stacking algorithms.
For starters look at AdaBoost or WaldBoost algorithm.
Also, check out Bag of Words and SIFT.

Therefore I am looking for some good and deep guides/sources to teach me
something about this kind of “data modeling”, geometrical analysis and
image processing. For now the best that I could find is the Camelia
Library (witch helps a little with colors, but I don’t think will be
enough for the shape detection).

You need something like opencv. I think the library you need is
ruby-opencv.
It can be found on github. Follow the instructions for installing opencv
with python first
and build it from source. Also, you are going to want to have fftw
library
installed.

As for reading material, computer vision/ machine learning for plants
has a
lot of literature.
Start using scholar.google.com and don’t be afraid to ask people at
other
.edu addresses for advise.

hope this helps.

Andrew McElroy

Thanks a lot everybody for all your answers and suggestions!
I thought that maybe I could make some use of microsoft kinect or
similar device to make the 3d map of the object (since getting the data
from simple photos looks incredibly cpu intensive) using some open
source elaboration program like PCL ( http://pointclouds.org/ )

Still I’ll be extremely interested if anybody could link me some info
about 3d objects handling in ruby or would simply have some insight to
share on the argument.

Many thanks,
Nicolò

On Fri, Sep 28, 2012 at 9:25 AM, andrew mcelroy [email protected]
wrote:

opencv can be a beast in its own right to install.

image processing. For now the best that I could find is the Camelia

As for reading material, computer vision/ machine learning for plants has
a lot of literature.
Start using scholar.google.com and don’t be afraid to ask people at other
.edu addresses for advise.

hope this helps.

One more thing, brush up on your calculus, matrix algebra, statistics,
and
trig.
You want to add the search term “deformable parts” because after all
plants
leaves are not stiff.
They can twist, bend, fold, etc. You wouldn’t want wind screwing up your
detection.

What you want to do, particularly the “combine two images from different
angles” is usually called Image Stitching, and there are some standart
methods of doing this

One of the must-know-about API’s for this kind of image manipulation is
OpenCV, which is in C/C++. I used it myself last year to do precisely
Image
Stitching

There is a project on github that wraps it to a ruby gem. The fork with
the
most recent updates (about 10 days ago) is this one

However, i’ve never used it (just learning about it by searching about
your
question), so i can’t tell if it’s any good.
But in case it’s not usable for your project, you can always code the
image
processing code in C/C++, and integrate that in your final ruby app

color adjustment, image sharpen can all be found in this image
processing algorithm. image manipluation contain features of combining
two images into one. check the link down below: