从线的交叉点找到两个不同对象之间的角度

时间:2015-05-26 15:29:24

标签: matlab opencv image-processing angle

我这里有一些膝盖分割图像是一个例子

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

我的目标是:

  1. 自动在每个对象中生成绿色圆点。
  2. 在每个对象上创建一条线,并自动从十字标记的交叉点创建黑色点。
  3. 从这些线的交点找到角度。
  4. 我的目标插图在这里完成

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

    我在每个物体(股骨和胫骨)中都创建了十字标志,但问题是我不知道该怎么做才能实现下一步。

    拜托,我需要你的帮助。 MATLAB或C实现将是愉快的。感谢

1 个答案:

答案 0 :(得分:2)

你的角度非常扭曲,因为你无法确定足够精确的交叉位置,而且如果骨头稍微变形或有别名,你的输出精度也会很低。

我会改为:

  1. 投射水平扫描线(黄色)
  2. 沿着它找到第一个(红色)和最后一个(绿色)骨点
    • 从左侧扫描第一点
    • 从右侧扫描的最后一点(以避免骨折或分割间隙出现问题)
  3. 计算它们之间的中间点(蓝色/洋红色)
    • 通过某个阈值忽略太近的红/绿点
  4. 每个骨骼中点的回归线
  5. 计算角度
    • atan2,atanxy
    • 如果角度足够受限,
    • acos(dot(linedir1,linedir2))
  6. example

    [注释]

    • 为了提高准确性,您可以忽略太远的起点/终点
    • 这也标志着下一个骨骼正在开始