Как рассчитать периметр двоичного изображения в Java? - PullRequest
2 голосов
/ 01 апреля 2011

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

Как я могу реализовать это, чтобы вернуть числовое значение для периметра, используя Java?

Спасибо

Tom

        Raster raster = source.getRaster();
    int perimeter = 0;
    for(int y = 0; y<source.getHeight(); y++)
        for(int x = 0; x< source.getWidth(); x++)
        {
            if(raster.getSample(x, y, 0) == 1 && ((raster.getSample(x+1, y, 0)==0) || (raster.getSample(x-1, y, 0)==0) || (raster.getSample(x, y+1, 0)==0) || (raster.getSample(x, y-1, 0)==0)))
                perimeter ++;
        }
    return perimeter;

Ответы [ 2 ]

1 голос
/ 01 апреля 2011

У меня нет примера этого, и на его создание может потребоваться некоторое время, но вы можете взглянуть на алгоритм марширующих квадратов .

Редактировать: здесь это реализация Марширующих площадей, написанных на Java Томом Гибарой.

1 голос
/ 01 апреля 2011

Вы можете использовать подход, аналогичный Matlab (описан здесь )

Пиксель является частью периметра, если он ненулевой, и это связано с хотя бы один нулевой пиксель

Вы можете определить различные окрестности для пикселей (например, окружающая сетка из трех или просто вверх / вниз / влево / вправо). После того как вы отфильтровали изображение, считайте пиксели, чтобы получить значение.

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