2015-08-05 4 views
2

Как уже упоминалось, я пытаюсь получить расстояние между двумя нечеткими линиями от изображения с применением обнаруженного края. В качестве примера, пожалуйста, ознакомьтесь с приведенным ниже изображением для уточнения.Android OpenCV - расстояние между двумя нечеткими линиями

enter image description here

Как вы можете видеть, линии неправильной формы. В идеале я хотел бы получить самые отдаленные точки от каждой строки, как показано выше, и вычислить их расстояние от этого. Возможно ли это с OpenCV? Я знаю, что могу использовать функцию величины, чтобы правильно рассчитать расстояние, но проблема связана с тем, что на самом деле пытается найти самые удаленные точки в первую очередь.

У кого-нибудь есть идея, как я могу это сделать?

+2

Если вы можете удалить одну из строк изображения, вы можете использовать [distanceTransform] (http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html#distancetransform), чтобы рассчитать расстояние от всех пикселей в другой строке; затем вы прошли через все пиксели в другой строке и найдите ту, которая имеет наибольшее значение расстояния, преобразованного в другую. –

+0

Хм, ты дал мне идею. Я мог бы сделать это для каждой линии индивидуально, а затем взять среднее максимальное расстояние друг от друга. Вы понимаете, что я имею в виду? Я ужасно объясняю потоки идей, которые приходят на ум. – Zy0n

+1

Вам не нужно делать это для каждой строки по отдельности: вам нужно только сделать это для одной строки или другой. Результат должен быть симметричным. –

ответ

1

Если вы знаете две точки на этих строках, то вы можете рассчитать расстояние, используя приведенный ниже код в OpenCV.

public double euclideanDistance(Point a, Point b){ 
    double distance = 0.0; 
    try{ 
     if(a != null && b != null){ 
      double xDiff = a.x - b.x; 
      double yDiff = a.y - b.y; 
      distance = Math.sqrt(Math.pow(xDiff,2) + Math.pow(yDiff, 2)); 
     } 
    }catch(Exception e){ 
     System.err.println("Something went wrong in euclideanDistance function in "+Utility.class+" "+e.getMessage()); 
    } 
    return distance; 
} 

Надеюсь, это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^