Как рассчитать стандартный размер изображения с определенным размером roi?

Прежде всего, моя цель — реализовать «Алгоритм Сауволы».

В алгоритме требуется среднее значение изображения и стандартное отклонение («стандартное отклонение») с ROI-подобным сверточным фильтром.

Уже я получаю среднее значение, используя функцию «размытие», которая является средним фильтром.

Однако для «std dev» нужно много функций: Blur, Multiply, Minus и Square root.

Этот шаг потребляет слишком много для моего устройства, «Note3», которое является устройством Android.

Код ниже — это способ вычисления «стандартного отклонения» сейчас.

PARAM_WINDOW_SIZE = 15;

blur(grayF, mean, cv::Size(PARAM_WINDOW_SIZE, PARAM_WINDOW_SIZE),
cv::Point(-1, -1), BORDER_REPLICATE);

meanSQ = mean.mul(mean);
grayF_SQ = grayF.mul(grayF);
blur(grayF_SQ, grayF_SQ, cv::Size(PARAM_WINDOW_SIZE, PARAM_WINDOW_SIZE),
cv::Point(-1, -1), BORDER_REPLICATE);
sqrt(grayF_SQ - meanSQ, deviation);

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

Если вы знаете, дайте мне знать … пожалуйста …

0

Решение

Попробуйте рассчитать его, используя «Интегральное изображение».

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

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

  1. I1 = первое интегральное изображение — это встроенное изображение оригинального изображения
  2. I2 = Второе интегральное изображение является интегральным изображением точечного квадрата изображения (то есть значение каждого пикселя умножается на себя)

Чем формула для получения стандартного будет:

1 / n * (S2 — (S1) ^ 2 / n)

Где n — количество пикселей в roi.

S2 — значение интегрального изображения I2 для

S1 — значение интегрального изображения I1 для

Для более глубокого объяснения, пожалуйста, посмотрите на:
https://en.wikipedia.org/wiki/Summed_area_table

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

Удачи

3

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

Проверьте

cv.AvgSdv (обр, маска = нет) -> (среднее значение, stdDev)

метод это должно работать для вас.

0

По вопросам рекламы [email protected]