Алгоритм нахождения квадратной формы на изображении? - PullRequest
7 голосов
/ 20 ноября 2010

Предположим, у меня есть изображение, скажем, с кругом и квадратом. Есть ли способ найти квадрат по матрице изображения? (есть только один квадрат, и время не является проблемой). Спасибо.

Ответы [ 4 ]

3 голосов
/ 20 ноября 2010

Примерно так?

for (x,y of every black pixel) {
 #those methods should return true if the lines length is more than one pixel
 if (hasLineToRight(x,y)&&hasLineToBottom(x,y)) {
  otherx=highestXOfLineToRight();
  othery=highestYOfLineToBottom();
  if (isLine(x,y,x,othery)&&isLine(x,y,otherx,y)) {
   addBoxToList(x,y,otherx,othery);
  }
 }
}

box image

Возможно, вы захотите использовать коробку с самыми высокими значениями ширины и высоты.

3 голосов
/ 20 ноября 2010

Давайте разделим все точки на «светлые» и «темные».

Найдите точки, которые подсвечены, а точки сверху и снизу также подсвечены.Они, вероятно, являются частью ребра.

Аналогично: если точка (x, y) светится, а точки (x + 1, y), (x + 2, y) также подсвечиваютсяно (x-1, y) и (y-1, y) темны, и аналогично в направлении Y, вы, скорее всего, нашли верхний левый угол.И так далее.Таким образом, вы можете найти углы, а затем найти квадрат из них - кажется, простой подход.

0 голосов
/ 20 ноября 2010

Как насчет заливки , начиная со случайных точек, пока вы не нашли свой прямоугольник?

0 голосов
/ 20 ноября 2010

Если квадрат на изображении идеален, проверьте, есть ли граница в ожидаемой позиции. Псевдокод в ответе jh должен нормально работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...