如何创建一个非常基本的Java边缘检测器

时间:2014-01-24 17:26:23

标签: java edge-detection

我的计算机科学老师为我们的第二次Java任务分发了这个问题。我有Java的基本知识,但我不知道如何创建边缘检测器。

“编写一个读取图像文件的程序,检测图像中的边缘并输出一个新图像,其中作为边缘一部分的像素是黑色,其他像素是白色。一种简单的方法来判断一个像素是否属于边缘是要计算的 grad = abs(im(x + 1,y)-im(x-1,y))+ abs(im(x,y + 1)-im(x,y-1)) 并将其与阈值进行比较。对所有颜色通道求和。“

一个非常BASIC边缘检测器的例子很棒,这样我就可以看到边缘检测器的工作原理。

请不要连接到Canny或Sobel边缘探测器;我需要自己创建这个程序,并且只使用他给出的公式和阈值。

另外,我不确定他对所有颜色通道的渐变是什么意思。他在谈论RGB吗?

我已经能够将我的图像放入GUI中,并且我知道如何使用绘图功能。我遇到的问题是我的老师没有向我们解释如何创建边缘检测器。这是课程的开始,所以我很困惑。我只想弄清楚如何使用他给我们的公式来对抗BufferedImage。

1 个答案:

答案 0 :(得分:1)

分配始终将多个方面/编程功能合并到一个程序中。所以,你可以通过Google得到你想要的全部问题的答案,通常你找不到答案。

从头开始。您想要扫描图像。谷歌如何做到这一点: http://www.coderanch.com/t/566543/java/java/scanning-image-pixel-color-java

您的老师希望您将图像更改为带有黑色边缘的白色方块。在你写的时候,他给你一个函数,可以检测哪些像素用哪种颜色绘制。这是你的课程,所以你应该能够解决这个问题。

最后一部分是将图像实际更改为所需的输出。为此,你需要画画。查看如何绘制简单的东西,如带边框的正方形。

http://docs.oracle.com/javase/tutorial/uiswing/painting/

当然,还有很多其他方法可以解决这些问题。

编辑:阅读完评论后:Java允许您获取组件的宽度和高度。从该结果中扣除2个像素以绘制黑色。休息变白了。

Change color in java.awt.Image?