Получить точки региона от обнаружения MSER в MATLAB?

После обнаружения MSER в Matlab возвращенные области MSER представляют собой эллипсы. Как мы получаем точные точки, которые составляют каждый регион?

Простой код:

REGIONS = detectMSERFeatures(I)

В OpenCV мы получаем как подогнанные эллипсы, так и точки области (в виде контура). Я не смог найти прямого сопоставления параметров Matlab MSER с параметрами OpenCV. Так что застрял с использованием Matlab для обнаружения MSER.

Однако есть ли способ получить фактические точки, составляющие регион, вместо подогнанного эллипса?


person AruniRC    schedule 28.12.2012    source источник


Ответы (2)


Изменить. Вы можете получить желаемое количество баллов, используя Нарисуйте свойство областей MSER, например (из документации Matlab):

regions = detectMSERFeatures(I);
imshow(I);hold on;
plot(regions);

Постройте области MSER

figure; imshow(I);hold on;
plot(regions,'showPixelList',true, 'showEllipses',false);
hold off;

Исходный ответ:

REGIONS предоставит вам информацию относительно центроида (X0,Y0) угол ориентации (phi) и малая и большая оси (или их половина: параметры a,b эллипса).

Центроид: Массив размером M на 2 [x y] координат центроидов эллипсов, которые имеют те же секунды, что и области MSER. Оси: двухэлементный вектор [majorAxis minorAxis]. Этот вектор указывает большую и малую оси эллипса, которые имеют те же секунды, что и области MSER. Ориентация: значение в диапазоне от -pi/2 до +pi/2 радиан. Это значение представляет собой ориентацию эллипса, измеренную от оси X до главной оси эллипса.

Вы можете зациклить, используя приведенный ниже код для каждой из сохраненных областей (или свойства COUNT).

Чтобы нарисовать контур эллипса, вы можете использовать следующий код:

% These are just values to play with
a=10;
b=20;
phi=0.5236;
X0=40;
Y0=50;

 R  = [ cos(phi) sin(phi); -sin(phi) cos(phi) ];
 theta_r         = linspace(0,2*pi);
 ellipse_x_r     = X0 + a*cos( theta_r );
 ellipse_y_r     = Y0 + b*sin( theta_r );
 rotated_ellipse = R * [ellipse_x_r;ellipse_y_r];

 plot( rotated_ellipse(1,:),rotated_ellipse(2,:),'b' );

введите здесь описание изображения

person bla    schedule 28.12.2012
comment
извините, если мой вопрос был неясен. Я имел в виду не контур эллипса, а контур самого МСЭР. сам этот MSER представляет собой область, состоящую из точек. Это то, что я пытаюсь получить. - person AruniRC; 28.12.2012
comment
plot(regions,'showPixelList',true, 'showEllipses',false); не ответили на ваш вопрос? - person bla; 28.12.2012

Вы можете получить все координаты в каждом регионе, используя:

for i=1:length(regions) 
    coordinates=getfield(regions(i),'PixelList');
end
person Amaresh    schedule 26.08.2017