Monday, July 22, 2013

ISOC week 3: tweaks and fixes

Day 1:

New week, more fixes! We are currently trying to wrap up some work on some odd behaviour with how we switch fragments and how our application handles configuration changes. We also made some progress on the camera module by implementing a thinning algorithm in order to generate one-pixel wide character/symbols. This will hopefully enable us to generate the information we need to send to the MyScript webservice. It would seem like there was some issues with the sliding menu and our canvas data fragment. It was only saved for one configuration change. What we did was to move it out of the canvas fragment and let the main activity handle it instead, which is a better solution since both our camera fragment and future saved and load fragment need to be able to alter this fragment when loading equations.

We've also had more people involved in ISOC show up at the office!
Emil, works on a project he and some of his friends has started called Continuous , you can find his blog here : http://emilaxelsson.se/

Tor's project involves a gamification ala singstar for learning chinese. You can find his project here http://biggestt.github.io/toney/

Day 2: 

A new thinning algorithm (or rather, a slightly modified) was implemented that should guarantee one-pixel wide characters, except at junction points. The work of creating a load and save system was also started, the user will be able to save anything drawn on the canvas and load it at a later stage.

Day 3:

There has been some promising development with the camera module, and it should now properly generate points and pass it to the fragment which handles the canvas and communication with the MyScript service. Turns out that there was just a stupid mistake in a loop which killed off half of the good points. There is still some cleaning up that needs to be performed, and maybe some more filtering on the input image.

The save and loading system is now working and consists of a new menu item with a list of saved equations as well as a textfield and button to save the current canvas.


Coffee, the rocket fuel for programmers


Day 4:

We reached a milestone today where we have most of features working as expected. The thinning algorithm is giving some unexpected results on printed text were lots of characters/symbols have different weights. This could be because of the filtering process, which consists of performing an unsharp mask followed by a bilateral filter in order to remove some off the noise. Then we perform adaptive thresholdning in order to get a binary image. Further clean up is required, so we perform erode and dilation with a 3x3 kernel. Finally, the thinning algorithm is performed (Zhang-Suen).

Day 5:

The previous problems with the filtering/thinning process was caused by the adaptive thresholding. We decided to let the user perform a manual "normal" threshold with the help of a slider and visual feedback. This let us cut away the the unsharp mask and erode/dilation.
So now we have bilateral filter - threshold - thinning, and it seems to work fine for both handwritten and printed text.

Next week which is our "final", will be spent on polishing up the GUI and working on a fluid user experience. Things are looking good!

No comments:

Post a Comment