2013-09-13 3 views
2

Я собираюсь найти наиболее похожие на фигуры прямоугольники между фигурами. Первое изображение - это исходное изображение с фигурами, которые могут быть прямоугольниками, но они не являются. Зеленые прямоугольники во втором изображении - это то, что я хочу. Так есть ли способ сделать это с помощью opencv? Я пытался HOUGH линии, но результат не хорошоЕсть ли способ обнаружить почти прямоугольник в opencv?

Источник изображения: enter image description here

И то, что я хочу, чтобы узнать больше всего смотреть, как прямоугольник среди этих фигур, как прямоугольники в зеленый цвет.

Что я хочу: enter image description here

ответ

1

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

Чем выше процент белых пикселей, тем ближе к прямоугольнику.

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

Edit:

Может быть, вы должны сначала получить минимальные ограничивающие прямоугольники формы, а затем сделать этот вид эвристики:

  • не Shrink размеров прямоугольника до белого пикселя процента внутри прямоугольник достигает определенного вами порогового значения (например, 90% белых пикселей внутри прямоугольника).

Чтобы получить минимальный ограничивающий прямоугольник (наименьший прямоугольник, который содержит всю форму), вы можете проверить этот учебник:

http://docs.opencv.org/doc/tutorials/imgproc/shapedescriptors/bounding_rects_circles/bounding_rects_circles.html

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

+0

findCountours всегда будет охватывать все белые пиксели, но некоторые белые пиксели не являются частью прямоугольника –

+0

Непонятно, какие именно фигуры вы хотите рассматривать как «прямоугольники». Я могу сказать из вашего примера, что вы * не * ищете минимальный ограничивающий прямоугольник (самый маленький прямоугольник, который содержит всю форму), но это также не максимальный внутренний прямоугольник (самый большой прямоугольник, который вы можете поместить в белую фигуру). –

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