Определить направления подобных треугольников в MATLAB - PullRequest
1 голос
/ 01 ноября 2011

У меня есть черно-белое растровое изображение схожих треугольников .Я пытаюсь определить направление каждого треугольника.Под «лицом» я имею в виду описание направления, которое является постоянным во всех треугольниках, например, путем направления медианы самой длинной стороны.

До сих пор я мог идентифицировать треугольники индивидуально, но я не знаю, как лучше узнать направление каждого треугольника.

В качестве первой идеи я подумал об использовании преобразования Хафа в линии соответствиядля сторон каждого отдельного треугольника.Когда у меня есть 3 стороны, я могу вычислить их пересечения , и тогда у меня есть координаты 3 вершин.Из 3 вершин легко определить медиану самой длинной стороны.

Моя проблема с этим подходом заключается в том, что я никогда не использовал преобразования Хафа и не знаю, насколько сложно написать функцию, которая находит стороныи возвращает их таким образом, что я могу использовать для расчета пересечений.Можете ли вы связать меня с какой-нибудь статьей или кратко объяснить , как использовать преобразование Хафа для нахождения сторон в представлении, которое я могу использовать для вычисления пересечений?

Другая моя идея - использовать моменты инварианта вращения , непосредственно на растровых изображениях, без распознавания их сторон преобразованием Хафа.

Моя проблема с этим решением заключается в том, что я не знаю, что такое «значение» направления, когда я описываю его с помощью моментов. Если я использую инвариантные моменты, как можно определить направление ссылки

1034 * Образец изображения с выявленными объектами: sample 1037 * Один объект sample1

1 Ответ

1 голос
/ 01 ноября 2011

Используйте houghlines, чтобы найти самое длинное в каждом треугольнике , т. Е. Вход BW должен содержать только ребер одного треугольника (например, используйте BW = edge(I,'canny') ). Это даст вам уравнение самой длинной стороны вашего треугольника.

Если ваши треугольники - равнобедренные, то нормаль к самой длинной стороне, проходящей через ее среднюю точку, равна медиане, и все готово.

Если нет, я думаю, вам нужно будет найти 3 ребра и т. Д.

Обновление:

Глядя на ваши сгустки, я бы порекомендовал поэкспериментировать с R = regionprops(BW,'Orientation');

...