2015-05-26 3 views
1

у меня есть некоторые сегментации изображений коленных вот примерНайти угол между двумя различными объектами от пересечения линий

http://s8.postimg.org/hkz3o2d51/image.png

Мои цели:

  1. Генерация зеленого цвет точки в каждом объекте автоматически.
  2. Создайте линию, которая пересекает каждый объект и черную точку с точки пересечения перекрестного знака автоматически.
  3. найти угол от пересечения этих линий.

Иллюстрация из моих целей это делается здесь

http://s1.postimg.org/9icxu0tzj/xxx.jpg

Я создал перекрестную знак в каждом объектов (бедренной и большеберцовой костей), но проблема в том, что я не знаю, что делать, чтобы выполните следующие шаги.

Пожалуйста, мне нужна ваша помощь. Реализация MATLAB или C будет приятной. Спасибо

+5

Я даже не понимаю, что такое предыдущие шаги, я боюсь. Вам нужно включить основную справочную информацию и добавить [mcve] (http://stackoverflow.com/help/mcve). Важно [mcve] (http://stackoverflow.com/help/mcve). Не откладывайте это. Количество усилий, которые вы поставили на свой вопрос, поможет вам получить полезный ответ. – kkuilla

ответ

2

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

я бы вместо этого:

  1. отлитых горизонтальные линии сканирования (желтые)
  2. найти первый (красную) и последнюю (зеленый) точку кости вдоль нее
    • первой точки пути сканирования из левый
    • последний пункт путем сканирования справа (во избежание проблем с трещинами или сегментационными зазорами)
  3. вычисления средней точки между ними (голубой/пурпурный)
    • игнорировать слишком близко красный/зеленый точки некоторыми Treshold
  4. регресс линий на каждой кости серединах
  5. угол Compute
    • от atan2,atanxy
    • или по acos(dot(linedir1,linedir2)), если углы ограничены достаточно

example

[Примечания]

  • для повышения точности вы можете игнорировать слишком отдаленные старт/конечные точки слишком
  • и это также флаги, рядом кость начинает
+0

@ArseneWe законченное редактирование ... не поможет вам с кодом в Matlab, поскольку я его не использую. В C/C++ это не проблема, но это пахнет проектом ассистента/домашней работы/школы, поэтому вам нужно сначала показать некоторые усилия ... btw, если ваш угол не является углом между осями костей, тогда вам нужно указать больше – Spektre

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