- •Литература
- •Введение
- •Введение в Image Processing Library
- •Основные понятия теории сигналов
- •Переход от непрерывных сигналов и преобразований к дискретным
- •Преобразование Фурье
- •Быстрое преобразование Фурье
- •Ввод изображений
- •Кодирование цветных изображений
- •Глубина и квантование цвета
- •Сжатие изображений
- •Форматы графических файлов
- •Работа с файлами в формате bmp
- •Зеркальные отражения изображений
- •Повороты изображений
- •Препарирование изображений
- •Бинаризация
- •Яркостный срез
- •Линейное контрастирование
- •Пилообразное контрастирование
- •Соляризация
- •Эквализация
- •Выполнение логических и арифметических операций над изображенями
- •Выполнение логических операций
- •Выполнение арифметических операций
- •Общие понятия фильтрации изображений
- •Масочная фильтрация
- •Генерация шума
- •Восстановления изображений на основе обратной фильтрации
- •Фильтрация Винера
- •Итерационные методы восстановления изображений
- •Алгебраические методы восстановления изображений
Выполнение арифметических операций
Одноместная функция для выполнения арифметической операции сложения имеет следующий прототип:
void iplAddS(IplImage* srcImage, IplImage* dstImage, int value);
где srcImage – указатель на исходное изображение, а dstImage – указатель на изображение, в котором функция должна сохранить результат. Аргумент value представляет собой значение, которая будет добавлено к значению интенсивности каждого пиксела изображения. На рисунке 1 представлен результат выполнения функции iplAddS, с помощью которой в данном случае была повышена яркость исходного изображения.
|
iplAddS |
|
Рис. 1. Действие функции iplAddS с аргументом value=50
Двуместная функция для выполнения арифметического сложения двух изображений имеет следующий прототип:
void iplAdd(IplImage* srcImageA, IplImage* srcImageB, IplImage* dstImage);
где srcImageA и srcImageB – указатели на исходные изображения, а dstImage – указатель на изображение, в котором будет сохранен результат арифметического сложения. Результат выполнения этой функции, приведенный на рисунке 2, показывает, что для данных исходных изображений операция алгебраического сложения эквивалентно операции логического ИЛИ.
|
iplAdd |
|
|
Рис. 2. Действие функции iplAdd
Одноместная функция для выполнения арифметической операции сложения имеет следующий прототип:
void iplSubtractS(IplImage* srcImage, IplImage* dstImage, int value, BOOL flip);
где srcImage – указатель на исходное изображение, а dstImage – указатель на изображение, в котором функция должна сохранить результат. Аргумент value представляет собой значение, которое будет вычитаться из значению интенсивности каждого пиксела изображения, если аргумент flip = false (Рис. 3). Если аргумент flip = false, то значение интенсивности каждого пиксела будет вычтено из значения аргумента value (Рис. 4).
|
iplSubtractS |
|
Рис. 3. Действие функции iplSubtractS с аргументом value=50 и flip=false
|
iplSubtractS |
|
Рис. 4. Действие функции iplSubtractS с аргументом value=200 и flip=true
Двуместная функция для выполнения арифметического сложения двух изображений имеет следующий прототип:
void iplSubtract(IplImage* srcImageA, IplImage* srcImageB, IplImage* dstImage);
где srcImageA и srcImageB – указатели на исходные изображения, а dstImage – указатель на изображение, в котором будет сохранен результат вычитания интенсивности пикселей изображения srcImageB из интенсивности пикселей изображения srcImageA, то есть (srcImageA - srcImageB). На рисунке 5 представлен результат вычитания изображения с горизонтальными линиями из изображения с вертикальными, а на рисунке 6 наоборот – результат вычитания изображения с вертикальными линиями из изображения с горизонтальными.
|
iplSubtract |
|
|
Рис. 5. Действие функции iplSubtract
|
iplSubtract |
|
|
Рис. 6. Действие функции iplSubtract
Одноместная функция для выполнения арифметической операции умножения имеет следующий прототип:
void iplMultiplyS(IplImage* srcImage, IplImage* dstImage, int value);
где srcImage – указатель на исходное изображение, а dstImage – указатель на изображение, в котором функция должна сохранить результат. Аргумент value представляет собой целочисленное значение, на которое домножается значение интенсивности каждого пиксела изображения. Применение этой функции позволяет добиться существенного повышения яркости изображения (Рис. 7).
|
iplMultiplyS |
|
Рис. 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.
|
iplMultiplySScale |
|
Рис. 8. Действие функции iplMultiplySScale с аргументом value=200
Двуместная функция для выполнения арифметического умножения двух изображений имеет следующий прототип:
void iplMultiply(IplImage* srcImageA, IplImage* srcImageB, IplImage* dstImage);
где srcImageA и srcImageB – указатели на исходные изображения, а dstImage – указатель на изображение, в котором будет сохранен результат арифметического умножения. Результат выполнения этой функции, приведенный на рисунке 9, показывает, что для данных исходных изображений операция алгебраического сложения эквивалентно операции логического И.
|
iplMultiply |
|
|
Рис. 9. Действие функции iplMultiply