image — Адаптивный медианный фильтр с переполнением стека Opencv

У меня была проблема с написанием кода адаптивной медианы.

Каков наилучший способ вычисления минимальной интенсивности пикселя max n медиана?

До сих пор я читаю каждое значение пикселей изображения

for (int y = 0; y < h; y++)
{
uchar *ptr = (uchar*)(img->imageData + y * step);
for (int x = 0; x < w; x++){
printf("%u, ", ptr[x]);
}
printf("\n");
}

-3

Решение

Для максимумов и минимумов в прямоугольном окне, я бы посмотрел на алгоритм дилатации Ван Херка, поскольку расширение градаций серого соответствует максимальному оператору, а эрозия серого — минимальному оператору, а прямоугольный структурирующий элемент может быть разложен на вертикальную и горизонтальную линию.

Для медианной фильтрации я бы посмотрел на методы перемещения гистограммы.

0

Другие решения

Для минимального / максимального пикселя вам необходимо записать значение первого пикселя, а затем сравнить каждый пиксель с ним, сохраняя новое значение, если оно ниже / выше соответственно. OpenCV обеспечивает резюме :: minmaxLoc чтобы сделать это легко.

Для медианы вам нужно отсортировать все пиксели и выбрать средний (раз отсортированный, конечно, найти минимальное / максимальное значения тривиально, так как они будут в любом конце списка). Это более сложно, как далеко вы продвинулись и что не работает?

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector