我正在處理一些圖像,我的UGV(無人地面車輛)捕捉它以使其在一條線上移動。線路檢測|使用Java進行角度檢測
我想根據地平線得到那條線的角度。我會嘗試用一些例子來解釋:
上面的圖像將讓我的UGV直行保持,隨着角度約爲90度。 但下面將使其左轉,作爲compaired地平線的夾角約舍120
我能成功地將這些圖像在圖像下方採用大津的閾值:
而且還使用邊緣檢測算法得到這個:
但我堅持現在試圖找到detecs那些邊緣/線條和輸出的算法 - 或者幫我輸出 - 這種線的角度..
我正在處理一些圖像,我的UGV(無人地面車輛)捕捉它以使其在一條線上移動。線路檢測|使用Java進行角度檢測
我想根據地平線得到那條線的角度。我會嘗試用一些例子來解釋:
上面的圖像將讓我的UGV直行保持,隨着角度約爲90度。 但下面將使其左轉,作爲compaired地平線的夾角約舍120
我能成功地將這些圖像在圖像下方採用大津的閾值:
而且還使用邊緣檢測算法得到這個:
但我堅持現在試圖找到detecs那些邊緣/線條和輸出的算法 - 或者幫我輸出 - 這種線的角度..
這裏的使用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);
代碼是如何工作的:
這裏是什麼樣的形象看起來,當我分析它像一個例子:
注意:代碼是未經測試。我只是將我在Visual ImageJ中所做的轉換爲Java。
AWESOOOMMEEE !!!非常感謝!!! 雖然我得到了一些排隊:1)你是如何從imageJ生成這樣的代碼? 2)我將在Android上運行它,你有任何意見嗎? – 2012-07-13 00:49:00
我有很多經驗將我在視覺上做了什麼翻譯成Java,我也使用Macro-> Record選項。對於Android,您只需確保可以使用ImageJ庫並確保ImageJ不會嘗試呈現可視窗口。 – Ivan 2012-07-13 01:00:59
@伊萬你能幫忙解決這個問題嗎? http://stackoverflow.com/questions/25360544/line-detection-in-java – Jjang 2014-08-18 09:55:37
你看過ImageJ嗎? – Ivan 2012-07-12 23:03:06
看看[Hough變換](http://en.wikipedia.org/wiki/Hough_transform)。 – Maurits 2012-07-12 23:16:28