Проблемы с краями ядра фильтра изображений (Отражение значений на краях) - PullRequest
0 голосов
/ 14 июня 2019

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

Прежде всего: я знаю, что в opencv есть предварительно скомпонованные опции для обработки этих случаев, но так как это упражнение для университетаМне не разрешено использовать их. Обработка кромок в OpenCV

По сути, я хочу добиться чего-то подобного (буквы для облегчения чтения)

    a b c        e d e
    d e f        b a b
    g h i        e d e

Слева приведен пример набора значений исправа мы смотрим на букву a как центр нашего ядра размером 3х3.Теперь я хочу отразить и пропустить букву, которая находится прямо на краю изображения (а также отразить без пропуска, но это не очень приятно визуализировать с ядром 3x3)

Очевидно, что можно просто пойти дальше и сделатьПримерно 6 различных случаев if / else, чтобы решить эту проблему, но должно быть лучшее и более простое решение, которое я просто не могу найти, и я также не нашел при поиске.

Вот как я это сделалнапример, другие мои крайние режимы (см. mode_clamp, я ищу решение такого рода):

uchar get_edge_intensity(cv::Mat m, int y, int x, int edge_mode, double edge_intensity) {
    uchar result = 0;

    switch (edge_mode) {
      case MODE_NULL:
        break;
      case MODE_CLAMP:        
        result = m.at<uchar>( std::min(std::max(0, y), m.rows - 1), 
                              std::min(std::max(0, x), m.cols - 1));
        break;
      case MODE_MIRROR:
        // TODO
        break;
      case MODE_MIRROR_SKIP:
        // TODO
        break;
      case MODE_CONSTANT:
        result = clamp(PIXEL_MAX_VALUE * edge_intensity);
        break;
    }

    return result;
  }

зажим (двойное значение) просто ограничивает заданное двойное значение до 0-255 и возвращает его как учар, если кто-то должен знать это

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