Выполнение арифметических операций
Одноместная функция для выполнения арифметической операции сложения имеет следующий прототип:
void iplAddS(IplImage* srcImage, IplImage* dstImage, int value);
где srcImage – указатель на исходное изображение, а dstImage – указатель на изображение, в котором функция должна сохранить результат. Аргумент value представляет собой значение, которая будет добавлено к значению интенсивности каждого пиксела изображения. На рисунке 1 представлен результат выполнения функции iplAddS , с помощью которой в данном случае была повышена яркость исходного изображения.
Рис. 1. Действие функции iplAddS с аргументом value=50
Двуместная функция для выполнения арифметического сложения двух изображений имеет следующий прототип:
void iplAdd(IplImage* srcImageA, IplImage* srcImageB, IplImage* dstImage);
где srcImageA и srcImageB – указатели на исходные изображения, а dstImage – указатель на изображение, в котором будет сохранен результат арифметического сложения. Результат выполнения этой функции, приведенный на рисунке 2, показывает, что для данных исходных изображений операция алгебраического сложения
эквивалентно
операции логического ИЛИ.
Рис. 2. Действие функции iplAdd
Одноместная функция для выполнения арифметической операции сложения имеет следующий прототип:
void iplSubtractS(IplImage* srcImage, IplImage* dstImage, int value, BOOL flip);
где srcImage – указатель на исходное изображение, а dstImage – указатель на изображение, в котором функция должна сохранить результат. Аргумент value представляет собой значение, которое будет вычитаться из значению интенсивности каждого пиксела изображения, если аргумент flip = false (Рис. 3). Если аргумент flip = false , то значение интенсивности каждого пиксела будет вычтено из значения аргумента value (Рис. 4).
Рис. 3. Действие функции iplSubtractS с аргументом value=50 и flip=false
Рис. 4. Действие функции iplSubtractS с аргументом value=200 и flip=true
Двуместная функция для выполнения арифметического сложения двух изображений имеет следующий прототип:
void iplSubtract(IplImage* srcImageA, IplImage* srcImageB, IplImage* dstImage);
где srcImageA и srcImageB – указатели на исходные изображения, а dstImage – указатель на изображение, в котором будет сохранен результат вычитания интенсивности пикселей изображения srcImageB из интенсивности пикселей изображения srcImageA , то есть (srcImageA - srcImageB) . На рисунке 5 представлен результат вычитания изображения с
горизонтальными
линиями из изображения с вертикальными, а на рисунке 6 наоборот – результат вычитания изображения с вертикальными линиями из изображения с горизонтальными.
Рис. 5. Действие функции iplSubtract
Рис. 6. Действие функции iplSubtract
Одноместная функция для выполнения арифметической операции умножения имеет следующий прототип:
void iplMultiplyS(IplImage* srcImage, IplImage* dstImage, int value);
где srcImage – указатель на исходное изображение, а dstImage – указатель на изображение, в котором функция должна сохранить результат. Аргумент value представляет собой целочисленное значение, на которое домножается значение интенсивности каждого пиксела изображения. Применение этой функции позволяет добиться существенного повышения яркости изображения (Рис. 7).
Рис. 7. Действие функции iplMultiplyS с аргументом value=2
Для выполнения арифметической операции умножения с последующим масштабированием результата используется функция, которая имеет следующий прототип:
void iplMultiplySScale(IplImage* srcImage, IplImage* dstImage, int value);
где srcImage – указатель на исходное изображение, а dstImage – указатель на изображение, в котором функция должна сохранить результат. Аргумент value представляет собой целочисленное значение, на которое будет использоваться при вычислении значения интенсивности каждого пиксела изображения по формуле:
dst_pixel = src_pixel * value / max_val
где src_pixelis – исходное значение интенсивности пиксела, dst_pixelis – новое значение интенсивности пиксела и max_valis – это максимально возможное значение интенсивности пиксела. Таким образом, эта функция может использоваться для домножения изображений на число большее 0 и меньшее 1. Результат действия этой функции представлен на рисунке 8.
Рис. 8. Действие функции iplMultiplySScale с аргументом value=200
Двуместная функция для выполнения арифметического умножения двух изображений имеет следующий прототип:
void iplMultiply(IplImage* srcImageA, IplImage* srcImageB, IplImage* dstImage);
где srcImageA и srcImageB – указатели на исходные изображения, а dstImage – указатель на изображение, в котором будет сохранен результат арифметического умножения. Результат выполнения этой функции, приведенный на рисунке 9, показывает, что для данных исходных изображений операция алгебраического сложения
эквивалентно
операции логического И.
Рис. 9. Действие функции iplMultiply
|