Image Processing
Author: Samuel Williams When: Tuesday, 27 April 2010April 2009
May 2009
August 2009
September 2009
October 2009
- Building a Concrete Bath
- LED Lighting Comparison
- Thinking about Programming Languages
- How To Be A Consultant
- Lucid Programming Dojo
- Exim4 + ClamAV + SpamAssassin
- Secure login using AJAX
- Ramaze And Rack
- ActiveMerchant
- Concurrency And Immutability
- Floating Point Numbers
- Programming And Debugging
- Useful jQuery Plugins
- Loading Anonymous Ruby Classes
- 尺八 (Shakuhachi)
- Card Trick
- Object Oriented C
- Gemcutter
- Writing Clearly
- Richard Stallman In Christchurch
- Magnatune
- Client Side Graphing
- Zena CMS
November 2009
February 2010
March 2010
April 2010
May 2010
June 2010
July 2010
August 2010
September 2010
December 2010
January 2011
March 2011
May 2011
August 2011
September 2011
I have a dream.. that one day a robot can paint.
Painting is surprisingly difficult. It involves a huge number of cognitive processes such as shape recognition and color matching. I've been interested in robots that can paint for some time.
I've decided to focus on one area of painting - contrasting edges. The end reproduction is essentially one color (black ink on white canvas). This simplifies the problem, but not the ability to be creative and expressive.
Processing is essentially divided into several steps:
- Reduce texture in the image using a bilateral filter.
- Divide the color channels and perform laplacian edge detection on each channel, the recombine.
- Build a list of edge circles - a point in the center of a line with diameter equal to the width of the line.
- Build a list of lines by connecting these circles.
The analysis step is fairly robust and uses a basic heuristic to create lines, taking into account:
- The current direction of the last line segment, and the potential point.
- The number of low intensity (i.e. non-edge) pixels between the end of the line and the potential point.
- The distance between the end of the line and the potential point.
Once that is done, the final result should be generated by a robotic arm. For simulation purposes, I've created a water colour based painting algorithm that uses a subtractive colour model.
A masterpiece is born! Thanks Mr Robot.
Other Examples
I respectfully thank the authors of the source images I used for these examples.
Comments
Please note, you can leave a comment that uses (limited) XHTML and Textile syntax.