Tuesday, August 27, 2013

PictoStencil --- Image Manipulation Software

This month I've been working on an image processing application that takes images and converts them to fully supported, contiguous stencils for woodworking, paper-craft, jack o' lantern carving, and more.  It can do this either automatically, or through a guided process.  I'd hoped to finish it before September hit, not happening.  Figured I'd throw up a post describing some of what I have so far.

I'm continuing to use my custom JavaFX windows.  I'm using a much lighter color scheme this time around.  I've written algorithms for Color Balance, Gaussian Smoothing, Otsu Binarization, Sobel Edge Detection, as well as some binary morphological image transforms (Manhattan dilate&erode, close, open, invert, edge find, Tarjan connected component search).  There are so many cool mathematical operators out there for applying to images.  I really want to keep going, but I think I'm going to refrain from writing any more myself.  I'd really like to have Fourier band pass filtering.  Might go back some time and incorporate a few of OpenCV's free to use image operations.

I also had to write custom code for the paint tools.  They've been problematic.  I'm using a JavaFX Canvas for the working area and it loves to anti-alias everything.  There are no rendering hints that would allow me to customize this behavior.  I'll make a post if I find a way around this, but at the moment it appears I'll need to try some other option.

I'll try to get a video and .jar file up some time in September/October.  That way it'll be useful for making custom jack 'o lantern patterns.  I shouldn't have to write installers unless I start incorporating native libraries.

Update:  Haven't done any more work on this project.  I might come back to it once I've played around with Java 8 some more.  At the moment though there are enough minor canvas problems that they've added up to kill my initiative.