как найти угол между эллипсом и вертикальной линией, которая находится в середине изображения?

я использую этот код: http://blogs.mathworks.com/steve/2010/07/30/visualizing-regionprops-ellipse-measurements/, чтобы создать эллипс вокруг объекта. Как я могу найти угол, созданный из центра эллипса к вертикальной линии, которая находится в середине изображения?


person constantinos    schedule 23.01.2015    source источник
comment
Это похоже на математический вопрос, а не на вопрос программирования. Предлагаем вам взять его на math.stackexchange.com.   -  person Dave Kielpinski    schedule 23.01.2015
comment
Вы не можете определить угол между point (центр эллипса) и линией (вертикальная линия в середине изображения). Читая комментарий в ответе hbaderts, похоже, вы ищете угол между главной осью эллипса и осью x (чтобы затем повернуть эллипс, чтобы он был горизонтальным). Вы должны отредактировать свой вопрос, чтобы отразить это.   -  person Hoki    schedule 23.01.2015


Ответы (1)


Угол между большой осью эллипса и осью X задается свойством Orientation элемента regionprops. Угол указывается в градусах и находится в диапазоне от -90° до +90°. Я предполагаю, что вы используете именно указанный код. Там значение Orientation уже рассчитано и используется для рисования эллипса.

Таким образом, вы получаете значение с

s(k).Orientation

Если вы хотите получить угол от главной оси до вертикальной линии, вы можете просто добавить к этому углу 90°. Результат будет находиться в диапазоне от 0° до 180°.

person hbaderts    schedule 23.01.2015
comment
Вы можете быть более конкретным? Я хочу найти угол, чтобы узнать, на сколько градусов мне нужно переместить эллипс и сделать его горизонтальным. Я думаю, что мне нужно использовать Centroid и MinorAxisLength, но я не знаю, как это сделать. Можете ли вы дать мне пример программирования? - person constantinos; 23.01.2015
comment
Извините, я не совсем уверен, чего вы хотите достичь. Я добавил предложение о том, как найти угол к вертикальной линии. Если вам нужна дополнительная помощь, попробуйте добавить дополнительную информацию о том, что вы хотите сделать, к своему вопросу, желательно с примером изображения. (Вы можете предоставить ссылку на изображение, а затем кто-то с большей репутацией сможет его вставить). - person hbaderts; 23.01.2015
comment
извините, теперь я понимаю, что вы сказали. спасибо за вашу помощь. У меня есть еще один вопрос. если s(k).Orientation имеет три значения, как я могу выбрать наибольшее значение? - person constantinos; 24.01.2015
comment
Я написал это, и оно отлично работает, но нет ли более простого способа??? k=1; orientation_num=s(k).Orientation; while k<=length(s) if orientation_num>=(s(k).Orientation) orientation_num=s(k).Orientation; end k=k+1; конец - person constantinos; 25.01.2015