Opencv with Android- OCR - android

I want to do OCR for Sindhi, in an Android application, the idea is to let the person write on screen and then capture up the frame and then compare it with the images of the words pre saved in the mobile, and the image that matches up the most(using FLANN?) with the frame would have some text against it, and I just want to pronounce that text then. So please tell me if my approach is wrong, as I am new to Android and OpenCV both, or else tell me how do I start?

If I understand well your aim, you want to compare the text written on the screen of the mobile with images where text is present, right?
I've done a bit of OCR on Android and I used OpenCV and Tesseract.
Tesseract is a real OCR engine but you need to have images that are as "clean" as possible. That's why you need OpenCV to clean them up before using Tesseract.
OpenCv for Android : http://opencv.org/platforms/android.html
Tesseract for Android : https://github.com/rmtheis/tess-two
So to give you the main lines of my workflow for a similar application :
Grab the text written by the user in a string or an array of strings.
Go fetch your pre-saved images
Process them through OpenCV, OpenCV is mainly used here to clean the images by getting rid of noise especially. You should try using a Glaussian Blur, then an Adaptive Threshold and a Bitwise-NOT (OCR engines deal better with black and white images that you obtain with the Bitwise-NOT)
After you get some clean images with OpenCV, process these images through Tesseract. That will give you a string for each image that contains the detected text on the images.
Compare your different strings gathered on Tesseract with the user's text by parsing each word to find out the text that matches the best.
For the audio part of your app, I'm not sure how to proceed, they must be some libraries out there that might help.
You must be aware that using all these libraries on Android is quite a struggle, you might have problems with the build of the project, follow well the different documentation that is provided on the official websites.

Related

How to improve image quality for OCR reader in Android

I've made an app which uses the phone's camera to take a photo and then parses this photo (with Tesseract OCR) into a string.
The problem is that the string I obtain is very ugly, it contains wrong or unreadable characters.
I've read here that a filter to reduce image's noise may improve OCR's result. I've googled some of them and I've found this website which contains a lot of image filters written in Java. The issue is that they use BufferedImage class, which is not in Android SDK.
Does anyone know any other library which performs this operation in android?
You should use Bitmap. https://developer.android.com/reference/android/graphics/Bitmap.html
It's the equivalent (in theory, not in api) with BufferedImage.
Chek this post too:
How to load BufferedImage in android?

Retrieving Pixels from a DNG file within Android

I am currently working on an HDR application that requires the use of Camera2 to be able to customize HDR settings.
I have developed a customized algorithm to retrieve certain data from Raw DNG images and I would like to implement it on Android.
I am unfortunately not an expert in Java/Android, so I taught myself how to code. Using other formats, I have usually worked with bitmaps to retrieve pixel data. ( which was relatively an easy task concerning the existing methods )
Concerning DNG files, I have found no documentation showing me how to retrieve the pixels data. I thought of bufferizing the image, however the DNG file format contains many information other than pixels and I'm afraid I am unable to find an extraction strategy using bufferstream. (I just want to store the pixels inside an array)
Anyone has an idea ? Would highly appreciate some tips.
Best regards
Camera2 does not produce DNGs directly - it produces plain RAW buffers, which you can then save to a DNG via DngCreator.
Are you operating on the initial RAW buffers, or saving DNGs and then loading them back?
In general, DNGs are not full baked images, so quite a bit of code is needed to render them completely - see for example Adobe's DNG SDK.

How to render the 3 D models from CT scan DICOM files on the marker for medical augment reality purpose in Android application

I am new to android and ARToolkit.I have to develop the android application which can augment and render the 3D models from CT scan images in DICOM format on the detected marker. I am using ARToolkit SDK for my purpose. But don't how to proceed with the dicom files and render the 3D model on marker. Someone please suggest some approach. Any sort of help will be highly appreciated.
Thanks
I recommend the following process;
Figure out a tool for segmentation. This is the process whereby you will build a 3d model of subset of the data depending on density. For example, you will build a model of the ribs of a chest CT. You should do this outside of Android and then figure out how to move it later. You can use tools like ITK and VTK to learn how to do this stage.
If you want to avoid the ITK/VTK learning curve, use GDCM (grass roots dicom) to learn how to load a DICOM series. With this approach you can have a 3D array of density points in your app in a few hours. At this point you can forget about the DICOM and just work on the numbers. You still have the segmentation problem.
You can look at the NIH app ImageVis3D which has source code and see what there approach is.
Once you have a segmented dataset, conversion to a standard format is not too hard and you will be on your way.
What is the 'detected marker' you refer to? If you have a marker in the image set to aid in segmentation, you can work on detection from the 3d dataset you get back from loading the dicom data.
Once you have the processes worked out, you can then see how to apply it all to Android.
It seems a little old but, recommended for a start: Android OpenGL .OBJ file loader
I was wondering too about building a CustomView to address your needs, since in a CV you can display anything.

Open CV Vs NDK for Image processing

I am writing a program to manipulate images,ie change its color,brightness,contrast etc...
The DVM doesn't support the manipulation of images of size beyond a limit...Can any one tell me whether using Open CV will solve the issue(as this seems to be a better option than NDK)?
Or will I have to use NDK?
I have done a lot of search and was not able to find answer..
First of all, there are different options for Image processing in Android, see here for a comparison of the most popular options: see Android Computer Vision JavaCV OpenCV FastCV comparison and Image processing library for Android and Java
Coming back to your question: If the images you deal are really very large so that they do not fit into the memory of the device, you need to process the images in small chunks called tiles.
If your images are not that big, I recommend you to use OpenCv, if you have to do anything more than very simple tasks such as brightness/contrast adjustment.

Image recognition convert an image to text in android

I am now currently doing a project on image to text convertion, i have go through various process like canny algorithm and so many, but did not get a solution.Finally i got a video in the following link here
i need exactly the same application now how can i implement this please find me a solution
I believe you want to recognize the characters from a picture, here are some related posts
Is there any free OCR library for Android?
What kind of OCR Java library should I use in Android?
Proof-of-concept word input from camera for Android
http://code.google.com/p/wordsnap-ocr/

Categories

Resources