views:

211

answers:

4

We have some examples of pictures.

And we have on input set of pictures. Every input picture is one of example after combination of next things

1) Rotating

2) Scaling

3) Cutting part of it

4) Adding noise

5) Using filter of some color

It is guarantee that human can recognize picture ease.

I need simple but effective algorithm to recognize from which one of base examples we get input picture.

I am writing in C# and Java

+1  A: 

I don't think there is a single simple algorithm which will enable you to recognise images under all the conditions you mention.

One technique which might cover most is to Fourier transform the image, but this can't be described as simple by any stretch of the imagination, and will involve some pretty heavy mathematical concepts.

You might find it useful to search in the field of Digital Signal Processing which includes image processing since they're just two dimensional signals.

EDIT: Apparently the problem is limited to recognising MONEY (notes and coins) so the first problem of searching becomes avoiding websites which mention money as the result of using their image-recognition product, rather than as the source of the images.

Anyway, I found more useful hits by searching for 'Currency Image Recognition'. Including some which mention Hidden Markov Models (whatever that means). It may be the algorithm you're searching for.

The problem is simplified by having a small set of target images, but complicated by the need to detect counterfeits.

I still don't think there's a 'simple agorithm' for this job. Good luck in your searching.

pavium
This time I want to recognize money(e.g. Euro).There are note and coins. So number of standard image will not be more then 15 examples.I guess. that we can use some characteristics of every input image(e.g. some function of R, G, B parametrs) to recognize. I think, that if i can delete results of color filters using, this method will be enough.
DreamWalker
+1  A: 

There is some good research going on in the field of computer vision. One of the problem being solved is identification of an object irrespective of scale changes,noise additions and skews introduced because photo has been clicked from a different view. I have done little assignment on this two years back as a part of computer vision course. There is a transformation called as scale invariant feature transform by which you can extract various features for the corner point. Corner points are those which are different from all its neighboring pixels. As you can observe, If photo has been clicked from two different views, some edges may disappear and appear like some thing else but corners remain almost same. This transformations explains how feature vector of size 128 can be extracted for all the corner points and tells you how to use these feature vector to find out the similarity between two images. Here in you case You can extract those features for one of all the currency notes you have and check for existence of these corner points in the test image you are supposed to test

As this transformation is robust to rotation,scaling,cropping,noise addition and color filtering, I guess this is the best I can suggest you. You can check this demo to have a better picture of what I explained.

ram
+1  A: 

OpenCV has lots of algorithms and features, I guess it should be suitable for your problem, however you'll have to play with PInvoke to consume it from c# (it's C library) - doable, but requires some work.

Bolek Tekielski
+1  A: 

You would need to build a set of functions that compute the probability of a particular transform between two images f(A,B). A number of transforms have previously been suggested as answers, e.g. Fourier. You would probably not be able to compute the probability of multiple transforms in one go fgh(A,B) with any reliability. So, you would compute the probability that each transform was independently applied f(A,B) g(A,B) h(A,B) and those with P above a threshold are the solution.

If the order is important, i.e you need to know that f(A,B) then g(f,B) then h(g,B) was performed, then you would need to adopt a state based probability framework such as Hidden Markov Models or a Bayesian Network (well, this is a generalization of HMMs) to model the likelihood of moving between states. See the BNT toolbox for Matlab (http://people.cs.ubc.ca/~murphyk/Software/BNT/bnt.html) for more details on these or any good modern AI book.

graveca