Перейти к содержимому
Compvision.ru
ozalexo

Конвертация mask в ROI

Recommended Posts

Доброе время,

Подскажите плиз, как получить top-left и bottom-right координаты маски, а точнее замакИрованного объекта?

Это нужно, чтобы получить ROI (region of interests) из маски (которая может быть и с градиентом).

Надеюсь, что есть иной способ, кроме как пробежаться по массиву самой маски.

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

post-4510-0-04923700-1312887680_thumb.pn

Про детектор углов уже читал, но в случае с маской типа "круг с градиентом" этот фокус не сработает.

И, да, в opencv я пока нуб.

Thanks in advance.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если я правильно понял задачу, то нужно определить минимальный прямоугольник, вмещающий в себя некоторое пятно с ярко выраженными гранями.

Тогда нужно сначала скормить маску детектору контуров cvFindContours (есть стандартный пример в библиотеке).

Затем аппроксимировать контур ломаной cvApproxPoly.

Извлечь точки этой ломаной, и скормить их ф-ции cvBoundingRect, которая и даст Вам желаемый "up-right bounding rectangle".

На форуме есть много примеров по работе с контурами см.тему "работа с контурами".

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если я правильно понял задачу, то нужно определить минимальный прямоугольник, вмещающий в себя некоторое пятно с ярко выраженными гранями.

Тогда нужно сначала скормить маску детектору контуров cvFindContours (есть стандартный пример в библиотеке).

Затем аппроксимировать контур ломаной cvApproxPoly.

Извлечь точки этой ломаной, и скормить их ф-ции cvBoundingRect, которая и даст Вам желаемый "up-right bounding rectangle".

На форуме есть много примеров по работе с контурами см.тему "работа с контурами".

Минимальный прямоугольник - да.

Ярко выраженные грани - нет.

Но предложенный алгоритм может сработать даже и на градиенте. Т.к. это маска, то границы будут найдены довольно точно.

Спасибо.

Вот более детальный и точный пример:

Маска:

post-4510-0-95179500-1312890635_thumb.pn

Интересуют координаты прямоугольника отмеченного синим (т.е. прямоугольные границы градинентного круга):

post-4510-0-34204600-1312890696_thumb.pn

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну тогда еще один шаг - бинаризация (cvThreshold). То есть все что не равно 0 сделать равным 255 и будут резкие границы.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну тогда еще один шаг - бинаризация (cvThreshold). То есть все что не равно 0 сделать равным 255 и будут резкие границы.

Спасибо. Вот оно, то, что нужно!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×