Send the link below via email or IMCopy
Present to your audienceStart remote presentation
- Invited audience members will follow you as you navigate and present
- People invited to a presentation do not need a Prezi account
- This link expires 10 minutes after you close the presentation
- A maximum of 30 users can follow your presentation
- Learn more about this feature in our knowledge base article
Do you really want to delete this prezi?
Neither you, nor the coeditors you shared it with will be able to recover it again.
Make your likes visible on Facebook?
You can change this under Settings & Account at any time.
Transcript of BankNote Recognizer
How does it work?
Whom does it help? It tells you what kind of currency
you are holding in front of the camera
out loud and visually. Android Platform NDK Native Development Kit Implement parts of your application in C and C++
Generate native code libraries from C and C++
Embed libraries into the apk NDK How to: Create android Project in Eclipse
Create a folder named "jni"
In External Tools Configurations add a new program
add name, and set Location for ndk-build file
Add previously created jni file from workspace
Create Android.mk file in jni folder
Add the c++ or c files in jni folder, functions will be called with JNIEXPORT type JNICALL pachage name, project name, and function name as the function name
In java you have to load the native library with System.loadLibrary
Declare functions as private native type and name to make them accessible My Activity's: MainActivity
NativeBanknoteRecognizer Start: calls the Camera activity
How to: Explains the usage of the app
Setting: the Language and the currency as sound or no sound can be selected
Exit: ends the app Options: Settings: Language and Currency: can be selected from the available that are loaded from the asset file
Sound: enables the vocal alert after a banknote has been found Image Matching: What it does: It loads the image database of the currently selected currency
It takes a camera image that the user can record with the push of the Menu button
Calling the native Image Matching function with ndk and gets the number of good matches
Then it compares them and the best one is the Image the user has scanned
The image matching is performed in a Thread Pool lowering time of a match
An AlertDialog is issued to show the banknote that was detected, and a sound is played, that is related to the match Using openCv's OrbDetector i have detected, the key points in the images to be compared
OrbExtractor extracts the descriptors of these key Points
BruteForceMatcher then finds the matching points from them
Three filters have been additionally applied
ratio Test, symmetry Test, and ransac Test. Visualization: Key points Matching Szigeti Peter Thank you for your attention Whom does it help? It is intended to help visually impaired users who need to identify banknotes as a means to succeed in day life
As for them to use this a stand is built, and the banknote can be placed at a specified location, after witch the button can be pressed Filters: ratio Test: for each point there are two matches, they are the best ones based on the distance between their descriptors. If the ratio between the first and the second best distance is large, larger than 0.65 in our case the match get accepted if it's near it it will be abandoned
symmetry Test: The matches have been performed from images1 to image2 and reversed as well. To pass the symmetry test the matches must be in agreement with the ones in the reverse match list.
ransac Test: A number of 8 random points get selected multiple times from the good matches list, and a fundamental matrix is estimated, and all the other matches are tested against this matrix, and the ones that have features at a short distance from the epipolar line the ones that are nearest pass What actually happens: Color Circles: key points
White lines: matches remaining after filters Data source: Images are stored in the asset folder and get handled with the AssetManager The images currently set as a default are romanian bank notes: Bank notes: Good match: image key points are searched and found , after that the three filters are applied to the matches of these key points, and the matches that pass all the filters get returned to the user as a signal pointing out to which image they match the best(which banknote the scanned image is related the moust)
Bad match: If the matches all fail to pass a "Nothing Found" message will be issued References: OpenCV 2 Computer Vision Application Programming Cookbook http://www.laganiere.name/opencvCookbook/
opencv documentation http://docs.opencv.org/doc/user_guide/ug_features2d.html
Q & A site Stack Overflow, and OpenCv Questions http://answers.opencv.org/questions/ Thread pool vs Serial Performance: NDK Hogyan: Hozz létre Android Projektet Eclipse-ben
Készíts egy "jni" nevü mappát a projektbe
Az External Tools Configurations -ban adj hozzá egy új projektet nevezd el és határozd meg az ndk-build file elérhetőségét
Add hozzá az előbb elkészitett jni foldert a projekthez
Hozz létre Android.mk filet a "jni" mappában
Helyezd a c++ vagy c állományt a "jni" mappába, a fuggvények neve "JNIEXPORT" tipus "JNICALL" csomag név, project név, és függvény név, mint függvény név
Java-ban be kell töltsd a natív könyvtárat a System.loadLibrary utasítással
Deklaráld a függvényeket mint privát native tipussá hogy elérhetőek legyenek