Удаление границы изображения с помощью opencv - PullRequest
0 голосов
/ 13 февраля 2011

У меня много изображений с толстой белой рамкой вокруг них.Какой самый простой способ для меня удалить / изолировать эти границы?В любом случае я могу сделать это с помощью OpenCV?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2011

Один из подходов состоит в том, чтобы использовать разложение четырех деревьев так, чтобы область границы была «листовым» узлом.Тогда вы можете вычесть это.

0 голосов
/ 13 февраля 2011

Не очень элегантное решение, но вот моя первая попытка.

            if( direction == BORDER_SEARCH_DIRECTION.TOP || 
            direction == BORDER_SEARCH_DIRECTION.BOTTOM )
        {
            for (int y = startY; y >= 0 && y < _image.Height; y += deltaY)
            {
                bool foundNonWhite = false;
                for (int x = startX; x < _image.Width; x += deltaX)
                {
                    if (Convert.ToInt32(_image.ManagedArray.GetValue(y, x, 0)) < BORDER_WHITENESS_THRESHOLD)
                    {
                        foundNonWhite = true;
                        break;
                    }
                }
                if (!foundNonWhite)
                {
                    borderAt = y;
                    break;
                }
            }
        }

По сути, это предполагает, что граница начинается не более чем на пятой части изображения сверху / снизу, ион ищет первый ряд, который полностью «белый».Я запускаю процедуру дважды, и если я обнаруживаю целый ряд белых сверху и снизу изображения, я предполагаю, что у нас есть граница.

Чертова вещь занимает 250 миллисекунд.

...