2013-12-14 1 views
0

У меня есть изображение с произвольной формой областей (например, объекты), предположим, что пиксели фона обозначены как нули, тогда как любой объект имеет уникальную метку (пиксели объекта 1 обозначены как 1 , объект 2 пикселя обозначается как 2, ...). Теперь для каждого объекта мне нужно найти наилучшее эллиптическое соответствие его пикселей. Это требует поиска центра объекта, главной и вспомогательной оси и угла поворота. Как я могу найти их?Лучший эллиптический размер для нерегулярных фигур в изображении

Спасибо;

+0

это действительно сложно. убедитесь, что это стоит усилий. –

ответ

1

Анализ основных компонентов (PCA) - один из способов. See Wikipedia here.

Центр тяжести достаточно прост, чтобы определить, являются ли ваши формы выпуклыми - только средневзвешенное значение интенсивностей по положениям xy - и PCA даст вам основные и второстепенные оси, следовательно, ориентацию.

Как только у вас есть центр и оси, у вас есть основа для набора эллипсов, которые покрывают вашу форму. Расширение осей - в пропорции - и тестирование каждого пикселя для входа/выхода, вы можете найти эллипс, который только охватывает вашу форму. Или, если хотите, вы можете проецировать каждую позицию пикселя на мажорную и второстепенную оси и находить грубые границы за один проход, а затем тестировать вход/выход в «угловых» случаях.

Это может помочь, если вы разместите пример изображения.

+0

вы уверены? да, это даст направление и 2 магната, но они только статистические. OP нуждается в алгоритме, который дает минимальный эллипс, содержащий все (не 99%) пикселей –

+0

@eznme, если вы используете весь выход PCA, который охватывает все пиксели. Может быть, вы путаете это с помощью PCA для уменьшения размерности? Он даст векторы для осей, и вы можете решить расширить до двух сигма, три сигмы, какую бы точность вы ни хотели. –

+0

проблема в том, как выбрать сигмы. мы не хотим сигмы, которая делает эллипс, который покрывает 99% или 99,9% пикселей, и мы не хотим, чтобы сигма была слишком большой (т.е. сигма, из которой сигма * 0,7 уже покрывала 100% пикселей). выбор ** минимальной ** сигмы, которая покрывает 100% пикселей, затрудняет задачу. –

1

Как вы, кажется, используете Matlab, вы можете просто использовать команду regionprops, учитывая, что у вас есть Image Processing Toolbox.

Он может извлечь всю необходимую информацию (и многие другие свойства областей изображения), и он будет выполнять PCA для вас, если подход на основе PCA подходит вашим потребностям.

Док here, обратите внимание на параметры по 'Centroid', 'Orientation', 'MajorAxisLength' и 'MinorAxisLength' конкретно.

+0

+1 as OP использует Matlab, это лучший ответ. –

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