среда, 17 октября 2012 г.

среда, 3 октября 2012 г.

Нормировка изображений в OpenCV и awpipl2

OpenCV

Норма изображения ||Image|| OpenCV вычисляется с использованием функции cvNorm().
Прототип функции:

double cvNorm(const CvArr* arr1, const CvArr* arr2, int normType = CV_L2, const CvArr* mask)

arr1 - первое исходное изображение.
arr2 - второе исходное изображение.
normType - тип вычисляемой нормы.
mask - маска, по которой вычисляется норма изображений.

Если arr2 или arr2 = NULL, то вычисляется абсолютная норма первого или второго и изображения, в противном случае вычисляется абсолютная норма разности изображения, либо относительная норма разности изображений.

Типы вычисляемых норм.
normType может принимать следующие значения:

В случае, если одно из изображений NULL
CV_C    normC = ||arr|| = max(|arr(i)|)
CV_L1  normL1 = ||arr|| = Sum(|arr(i)|)
CV_L2  normL2 = ||arr|| = Sqrt(Sum(arr(i)*arr(i)))

В случае, если оба изображения не равны NULL


CV_C    normC = ||arr|| = max(|arr1(i)-arr2(i)|)
CV_L1  normL1 = ||arr|| = Sum(|arr1(i)-arr2(i)|)
CV_L2  normL2 = ||arr|| = Sqrt(Sum((arr1(i) - arr2(i))*(arr1(i) - arr2(i))))

В случае, если normType & CV_RELATIVE != 0


CV_C    normC = ||arr|| = max(|arr1(i)-arr2(i)|) /  max(|arr2(i)|)
CV_L1  normL1 = ||arr|| = Sum(|arr1(i)-arr2(i)|) /  Sum(|arr2(i)|)
CV_L2  normL2 = ||arr|| = Sqrt(Sum((arr1(i) - arr2(i))*(arr1(i) - arr2(i)))/ Sqrt(arr2(i)*arr2(i)))

Функция возвращает вычисленную норму. Много-канальное изображение рассматривается как одно-канальное и возвращается норма комбинации каналов.



awpipl2

Нормировка изображений в awpipl2 выполняется с помощью функции awpNormImage. Вычисление нормы изображение выполняется с помощью функции awpGetNorm.

Прототипы функций:

AWPRESULT awpGetNorm(const awpImage* src, const awpImage* mask, awpImage** result, int normType);

Параметры функции:
src - исходное изображение, для которого требуется вычислить норму.
mask - изображение маски, которое может быть использовано для вычисления нормы
result - результирующее изображение, содержащее значения нормы.
normType - типы вычисляемой нормы

Комментарии:
awpGetNorm вычисляет норму изображения src, c учетом маски mask и сохраняет результат в изображение result. Размерности маски mask должны в точности соответствовать размерностям исходного изображения src, число каналов в должно быть равно 1, типа данных должен быть AWP_BYTE. Для вычисления нормы используются только те пиксели маски, значения которых не равны нулю. Если значение переменной mask равно NULL, то вычисляется норма всего изображения src. Формат результирующего изображения result AWP_DOUBLE, его высота равна 1,  ширина соответствует числу каналов изображения src, число каналов равно 1, значения нормы для каждого канала лежат в соответствующих пикселях изображения result. Если изображение result равно NULL, то функция awpGetNorm создает подходящее изображение, в противном случае использует изображение пользователя. Если формат или размерности изображения result, переданные пользователем в функцию awpGetNorm не соответствуют требованиям, описанным выше, то функция возвращает статус AWP_BADARG.

Типы вычисляемой нормы:
Параметр normType может принимать два значения

AWP_NORM_L1,  normL1 = ||src|| = Sum(|src(i)|)
AWP_NORM_L2,  normL2 = ||src|| = Sqrt(src(i)*src(i))

AWPRESULT awpNormImage(const awpImage* src, awpImage** result, int normType);


Параметры функции:
src - исходное изображение, для которого требуется выполнить нормировку.
result - результирующее нормированное изображение
normType - типы используемой нормировки

Комментарий:
awpNormImage выполняет нормировку normType изображения src и записывает результат в изображение result. Изображение result имеет тип AWP_DOUBLE, его размерности и число каналов соответствуют изображению src. В случае, если изображения result равно NULL, то функция awpNormImage создает подходящее изображение, в противном случае используется изображение пользователя. Если формат или размерности изображения result, переданные пользователем в функцию  awpNormImage  не соответствуют требованиям, описанным выше, то функция возвращает статус AWP_BADARG.

Типы используемой нормировки:
AWP_NORM_L1, result(i) = src(i) / ||src|| = src(i) / Sum(|src(i)|)
AWP_NORM_L2, result(i) = src(i) / ||src|| = src(i) / Sqrt(Sum(src(i)*src(i)))

В случае, если ||src|| равна 0, то функция awpNormImage возвращает статус AWP_EMPTY_IMAGE