я использую этот код: http://blogs.mathworks.com/steve/2010/07/30/visualizing-regionprops-ellipse-measurements/, чтобы создать эллипс вокруг объекта. Как я могу найти угол, созданный из центра эллипса к вертикальной линии, которая находится в середине изображения?
как найти угол между эллипсом и вертикальной линией, которая находится в середине изображения?
Ответы (1)
Угол между большой осью эллипса и осью X задается свойством Orientation
элемента regionprops
а>. Угол указывается в градусах и находится в диапазоне от -90° до +90°. Я предполагаю, что вы используете именно указанный код. Там значение Orientation
уже рассчитано и используется для рисования эллипса.
Таким образом, вы получаете значение с
s(k).Orientation
Если вы хотите получить угол от главной оси до вертикальной линии, вы можете просто добавить к этому углу 90°. Результат будет находиться в диапазоне от 0° до 180°.
person
hbaderts
schedule
23.01.2015
Вы можете быть более конкретным? Я хочу найти угол, чтобы узнать, на сколько градусов мне нужно переместить эллипс и сделать его горизонтальным. Я думаю, что мне нужно использовать Centroid и MinorAxisLength, но я не знаю, как это сделать. Можете ли вы дать мне пример программирования?
- person constantinos; 23.01.2015
Извините, я не совсем уверен, чего вы хотите достичь. Я добавил предложение о том, как найти угол к вертикальной линии. Если вам нужна дополнительная помощь, попробуйте добавить дополнительную информацию о том, что вы хотите сделать, к своему вопросу, желательно с примером изображения. (Вы можете предоставить ссылку на изображение, а затем кто-то с большей репутацией сможет его вставить).
- person hbaderts; 23.01.2015
извините, теперь я понимаю, что вы сказали. спасибо за вашу помощь. У меня есть еще один вопрос. если s(k).Orientation имеет три значения, как я могу выбрать наибольшее значение?
- person constantinos; 24.01.2015
Я написал это, и оно отлично работает, но нет ли более простого способа???
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
point
(центр эллипса) и линией (вертикальная линия в середине изображения). Читая комментарий в ответе hbaderts, похоже, вы ищете угол между главной осью эллипса и осью x (чтобы затем повернуть эллипс, чтобы он был горизонтальным). Вы должны отредактировать свой вопрос, чтобы отразить это. - person Hoki   schedule 23.01.2015