【问题标题】:Line detection | Angle detection with Java线路检测 |使用 Java 进行角度检测
【发布时间】:2012-07-12 19:09:09
【问题描述】:

我正在处理我的 UGV(无人地面车辆)捕获的一些图像,以使其在一条线上移动。

我想根据地平线获得那条线的角度。我将尝试用几个例子来解释:

上图会使我的 UGV 保持直线前进,因为角度约为 90 度。 但接下来会使其向左转,因为与地平线对比的角度约为 120。

我可以使用 otsu 进行阈值化,成功地将这些图像转换为下图:

并且还使用了边缘检测算法来得到这个:

但我现在被困在试图找到一种算法来检测这些边缘/线和输出 - 或帮助我输出 - 此类线的角度..

【问题讨论】:

标签: java image image-processing artificial-intelligence


【解决方案1】:

这是我使用 ImageJ 的尝试:

    // Open the Image
ImagePlus image = new ImagePlus(filename);

    // Make the Image 8 bit
IJ.run(image, "8-bit", "");

    // Apply a Threshold (0 - 50)
ByteProcessor tempBP = (ByteProcessor)image.getProcessor();
tempBP.setThreshold(0, 50, 0);
IJ.run(image, "Convert to Mask", "");

    // Analyze the Particles
ParticleAnalyzer pa = new ParticleAnalyzer(
    ParticleAnalyzer.SHOW_MASKS +
    ParticleAnalyzer.IN_SITU_SHOW,
    1023 +
    ParticleAnalyzer.ELLIPSE
    , rt, 0.0, 999999999, 0, 0.5);

IJ.run(image, "Set Measurements...", "bounding fit redirect=None decimal=3");

pa.analyze(image);

int k = 0;
double maxSize = -1;
for (int i = 0; i < rt.getCounter(); i ++) {
    // Determine creteria for best oval.
    // The major axis should be much longer than the minor axis.
    // let k = best oval
}
double bx = rt.getValue("BX", k);
double by = rt.getValue("BY", k);
double width = rt.getValue("Width", k);
double height = rt.getValue("Height", k);

// Your angle:
double angle = rt.getValue("Angle", k);
double majorAxis = rt.getValue("Major", k);
double minorAxis = rt.getValue("Minor", k);

代码的工作原理:

  1. 使图像灰度化。
  2. 对其应用阈值以仅获取暗区。这假定线条将始终接近黑色。
  3. 应用粒子分析器来查找图像上的椭圆。
  4. 遍历“粒子”以找到符合我们标准的粒子。
  5. 从我们的粒子中获取角度。

以下是我分析图像时的示例:

注意:代码未经测试。我只是将我在 Visual ImageJ 中所做的转换为 Java。

【讨论】:

  • 太棒了!!!非常感谢!!!不过我有几个问题:1)你是如何从 imageJ 生成这样的代码的? 2)我将在Android上运行它,你有任何关于它的cmet吗?
  • 我有相当多的经验将我在视觉上所做的事情翻译成 Java,我也经常使用 Macro->Record 选项。对于 Android,您只需确保可以使用 ImageJ 库并确保 ImageJ 不会尝试呈现可视窗口。
  • @Ivan 你能帮忙解决这个非常相似的问题吗? stackoverflow.com/questions/25360544/line-detection-in-java
猜你喜欢
  • 2018-05-07
  • 1970-01-01
  • 2013-03-28
  • 1970-01-01
  • 2018-07-07
  • 1970-01-01
  • 1970-01-01
  • 2018-02-28
  • 1970-01-01
相关资源
最近更新 更多