2010-03-02 16 views
3

可能有人让我开始有以下想法:在图像上的Java 2D绘图和编辑对象和图像检测形状

我想要的图像加载到我的Java(的Java Swing)申请(平面图或蓝色打印)。 让我们假设平面图像有一个白色背景,上面有三个形状(矩形,三角形和圆形)。形状有一个黑色边框。

程序应检测这些形状并在其上绘制3个形状。

例如:它检测矩形,并将在该矩形的顶部绘制一个新的矩形。 当额外绘制矩形,用户应该能够修改矩形,并用它做额外的东西像填充矩形,改变边框样式,...

例如:在这种情况下,小点或正方形在角落应该是可见的,以便我们可以拖动/调整大小/移动矩形。有点像这样的视觉工作室截图:http://farm1.static.flickr.com/49/132219212_061a1300af_o.png

有没有人有这个教程?我是否缺少一些非常有用的java算法?等等...?所有的建议或帮助是值得欢迎

TNX提前

+0

这是计算机视觉。有很多已发布的例程(不一定是Java)来检测线条和其他形状。 http://en.wikipedia.org/wiki/Edge_detection – Pool 2010-03-02 20:02:46

回答

1

好了,这样做的一个强力的方法是经过图像中的像素,请参阅API为BufferedImage的,并通过连续像素检测形状某种颜色。我相信有这样做的更有效率的方法。

+0

嗯,我也有这个想法,但这只适用于水平/垂直线。椭圆呢? – juFo 2010-03-02 19:59:33

+0

您需要找到一些近似球形或圆形的启发式扫描,并在扫描像素时查找。我仍然认为有更好的方法来实现这一点,但现在想不出任何事情。有几篇论文讨论了这些问题(http://www.umiacs.umd.edu/~hankyu/shape_html/)。 – broschb 2010-03-03 05:33:45

+0

这看起来有点复杂(对于像我这样的初学者),但是无论如何thnx都是broschb。你有没有找到更好的方法?我发现了Canny边缘检测的一些问题,但我不知道这是否容易实现。 – juFo 2010-03-12 13:12:14

1

正确检测扫描图片中可能遇到各种问题(颜色,dpi,旋转,剪切)的形状。即使是未扫描的图片也可能非常困难。你可能想看看OpenCVJava