With the implementation of the PHOG descriptor I came around the situation that no well-performing Canny Edge Detector in pure Java was available. “Pure” in my case means, that it just takes a Java BufferedImage instance and computes the edges. Therefore, I had to implement my own 🙂
As a result there is now a “simple implementation” available as part of LIRE. It takes a BufferedImage and returns another BufferedImage, which contains all the edges as black pixels, while the non-edges are white. Thresholds can be changed and the blurring filter using for preprocessing can be changed in code. Usage is dead simple:
BufferedImage in = ImageIO.read(new File("testdata/wang-1000/128.jpg")); CannyEdgeDetector ced = new CannyEdgeDetector(in, 40, 80); ImageIO.write(ced.filter(), "png", new File("out.png"));
The result is the picture below:
- Java class in the LIRE SVN
- Java class code on pastebin.com
- LIRE on Google Code