I am going to build of a counting of vote program with optical MC sheet in android platform
However, i find that there is not many SDK for OMR in android.
Is it possible for me to read answer on optical MC sheet answer in OCR?
OMR is much different from OCR, normally OMR on a form are template-based, so you may need to have a template designer, the technology may not be new or complex, but it is hard to make it accurate and robust, there are lots of omr engines on the market, the most efficient way is calling online omr api service from http://ssomr.com/eng/video.asp?#api
This is a very tough project. OMR is based on templates where each checkmark area has to be consistent and clearly defined. OMR is comparison of black to white threshold against blank checkmark. For example, if there is 15% or more black pixels compared to blank 'template' checkmark, then it can be considered marked.
With mobile pictures, each picture is inconsistent in size, and lighting will affect how your binarization works, so thresholding will be very tough to standardize.
In general, on device OCR (not even talking about OMR) is weak or too expensive, even for machine text. I would consider server-based processing for OMR. It is not on device, but it can be fast enough to seem like it is running right on your device.
Related
Last week i have chosen my major project. It is a vision based system to monitor cyclists in time trial events passing certain points on the course. It should detect the bright yellow race number on a cyclist's back and extract the number from it, and besides record the time.
I done some research about it and i decided to use Tesseract Android Tools by Robert Theis called Tess Two. To speed up the process of recognizing the text i want to use a fact that the number is mend to be extracted from bright (yellow) rectangle on the cyclist back and to focus the actual OCR only on it. I have not found any piece of code or any ideas how to detect the geometric figures with specific color. Thank you for any help. And sorry if i made any mistakes I am pretty new on this website.
Where are the images coming from? I ask because I was asked to provide some technical help for the design of a similar application (we were working with footballer's shirts) and I can tell you that you'll have a few problems:
Use a high quality video feed rather than rely on a couple of digital camera images.
The number will almost certainly be 'curved' or distorted because of the movement of the rider and being able to use a series of images will sometimes allow you to work out what number it really is based on a series of 'false reads'
Train for the font you're using but also apply as much logic as you can (if the numbers are always two digits and never start with '9', use this information to help you get the right number
If you have the luxury of being able to position the camera (we didn't!), I would have thought your ideal spot would be above the rider and looking slightly forward so you can capture their back with the minimum of distortions.
We found that merging several still-frames from the video into one image gave us the best overall image of the number - however, the technology that was used for this was developed by a third-party and they do not want to release it, I'm afraid :(
Good luck!
I am starting to build my first Android app. I have reached the point where I need to start adding custom graphics and Art to make it look good. However I have also realized I have no skills or knowledge in this area at all.
What practical steps can a programmer take to develop the basic skills necessary to draw/render the kind of small, low resolution artwork suitable for mobile devices (I don't want to be able to paint a full painting or anything)?
I am particularly interested in any tools that may be of assistance, either software or devices like drawing tablets, as well as guides and tutorials.
NOTE: I know this is not strictly a programming question, and there are probably other Art forums out there, but I want to specifically hear from other programmers in a similar situation how they have acquired the skills to make mobile art.
When it comes to the tools and soft, there is nothing better than Adobe Photoshop (it's very expensive but you can download CS6 beta for free for limited time now) with a Wacom tablet (Bamboo would suffice here, or Intuos if you have too much money).
Colors are extremely important and color palettes are hard to do for a beginner. It's not simply a matter of combining two or three hexes. Check out Adobe Kuler and ColourLovers for a little help with that.
Also if you don't like beginning the work from scratch, there are plenty of PSD templates, just like this one.
And looks are nothing without feeling, so UX (user experience) is extremely important, it's also an art:). Personally I find the tips in Android Design Guidelines very useful, even if they cover mostly ICS features. You can copy most of the functionality to the pre-Honeycomb apps. There are also lots of tips on UX in the SmashingMagazine.
I've been digging since while for 3D graphics tutorials for Android. I tried raw opengl (es). I also tried min3d. I found out that things can be very complex or very easy if someone else did the math for you. Min3D is really great and easy to use, but is also really minimalistic. I can't find how to make lights actually cast shadows (and I doubt it's supported), I can't find how to make the surface reflect, how to change the surface to diffuse more or less.
Is there any library that has scene handling and supports shadows (also shadow cast by diffused light), control materials to achieve different levels of diffusion, reflections and transparency.
Note: I forgot to mention I need free framework.
Since the answer of Eric convinced me that realistic 3d is hard to achieve on mobile devices I would accept answers that explain how to fake these effects (or links). Again effects I need are:
shadows
reflections
from glossy material
from matte material
transparency (I think that's in the min3d examples, but it's here for completeness
I've seen shadows in 3d android games, although I'm not 100% convinced that are real (cast by objects).
I can't think of any libraries that meet your requirements for a mobile platform, but there are several middleware products to choose from:
Unity3d : http://unity3d.com/
Unreal SDK : http://udk.com
Ogre : http://www.ogre3d.org/
All of these offer scene management, lighting, material management, etc... yet, I doubt any of these are a silver bullet for what you are asking. Regardless of pricing and licensing - upto 3500 dollars for Unity3D pro mobile - you will still have to do a serious amount of coding yourself and often in a language you may not be familar with.
Also, keep in mind that a lot of the gfx in opengl-es based products (mostly games) are often faked. While it's perfectly possible to have dynamic lighting, shadows and transparency, these things can be crippling for your performance if you have a lot of geometry. After all, a phone or tablet is not the powerhouse that a desktop cpu/gpu is these days. Not yet anyway.
Another thing to note: I'm not sure what level of realism you are trying to achieve, but all the things you mention are typically associated with raytracing/raycasting. And that's a whole other bag of tricks as you can forget about real-time interaction, especially on mobile devices.
No way around it: coding and creating with real-time graphics in mind is hard and it's even harder on mobile platforms.
I want to transplant a 3D program written in OpenGL on windows platform to Android, but I wonder if it can run smoothly on general Android platforms, so i want to estimate how much hardware resource is sufficient for it to run smoothly. It is some kind like the hardware requirements for a software or 3d game that a company will recommend the users. I don't know how can i get a hardware requirements of my program when transplant to Android.
i used gdebugger and it gave me some information but i don't think that is enough for me. Anyone here have some idea or solution? Many thanks in advance!
If your program is simple enough, you could write up some estimates about texture fill rate, which is a pretty basic (and old) metric of rendering performance. Nearly every 3D chip comes with a theoretical fill rate, so you can get the theoretical numbers of both your desktop system and some Android phones.
The texture memory footprint is another thing that you can estimate, especially using gdebugger. Once again, these numbers are known for most chips.
This is a quick way to produce some numbers, obviously without any real life performance guarantees.
The best way would be to test it on an actual device, and get an idea of what hardware works well. You could distribute a beta app and get some feedback too.
Depends on feature set that you use. For example, if you use FBO, the device will have to support framebuffer extension. If you use MSAA, smooth line, the device will have support corresponding extensions.
After listing down your requirements, you can use glGet to check for the device suppport
http://www.opengl.org/sdk/docs/man/xhtml/glGet.xml
I'm interested in using Android for a E-Ink
based platform. I know it has been demonstrated once by MOTO, but I'm interested in using it for a commercial grade product and not 'just' a technology demo. I have got a question on the ability to change the platform to cope with specific display effect caused by E-Ink. I'm asking this question from the role of system architect and have no prior experience with Android.
E-ink has several characteristics which are very different than the common LCD displays:
time to update display (50-700ms)
it costs power to change the display (none to maintain)
display life time is determined by number of display updates!
tradeoffs can be made between quality, performance and display lifetime
grayscale versions available
The great thing: it costs no power to retain display information and they can be read in bright sunlight with no backlight. Also the display can be literally as thin as paper...
This means that the platform software needs to have a degree of control over the number of display updates and the type of display updates to get the best performance. Otherwise, an application which is unaware of the display characteristics could quickly drain the battery, or worse, shorten display life time to months instead of years. Conceptually I'd be interested in replacing a display driver, but I'm not sure if this part is open. I know it is hard to get info on the Qualcomm chipsets....
My question: can this be done? Can the Android platform be modified to support a drastically different display effect? Any pointers to an android roadmap?
The reason I find Android interesting for this application is because there is a significant overlap in functionality (from cell phone to browser).
Thanks!
I cannot agree more and started to lobby with app and OS developers on improving readability on e-ink:
Make scrolling and page turns e-ink friendly http://github.com/aarddict/android/issues/28#issuecomment-3512595
Looking around on the web I find a recurring theme "we had to rebuild WebView from scratch to adapt it to the e-ink display"
There are already coding solutions which reduce flicker and page refreshes. Most of them are kept by those who market the e-ink readers who prefer to keep them as frontends to their shops.
I contacted the author(s) of cool reader on their implementation of
smooth scrolling on e-ink devices and got the following reply:
Hello, Look at N2EpdController.java Author
is DairyKnight from xda-developers. At least you can use it under GPL.
For use in closed project I would recommend to contact him.
Ideally, display components for e-ink devices should be part of the Webkit's WebView framework. I've submitted a feature request via
http://bugs.webkit.org/show_bug.cgi?id=76429
fyi, E-Ink has an Android on E-Ink development kit, AM350 that's being sold now. http://www.eink.com/sell_sheets/AM350_Kit_Sell_Sheet.pdf
http://www.linuxworld.com/news/2007/112707-kernel.html
In this case the application domain is e-reading, in which case the advantages of E-ink are more imporant than the disadvantages (slow display updates).
I've done some further studies of Android. I believe the trick is to perform display updates asynchronously; to provide applications with an environment which mimicks immediate display updates, whilst detecting the relevant updates (i.e. by using graphics processor and/or MMU) to have an intelligent display update. Not all types of applications would be suitable; i.e. games and video playback require immediate display updates.
Making such a platform will be less than trivial; however, with the growing number of different hardware platforms, abstractions are becoming better all the time.
I know this is an old question, but I have found it through Google - others might want to know this too.
PocketBook Pro 902/903 are based on Android and feature e-ink screen. You might want to check them out. There might be other models too - I am interested in these because of their 10" screen. YMMV.