- •Литература
- •Введение
- •Введение в Image Processing Library
- •Основные понятия теории сигналов
- •Переход от непрерывных сигналов и преобразований к дискретным
- •Преобразование Фурье
- •Быстрое преобразование Фурье
- •Ввод изображений
- •Кодирование цветных изображений
- •Глубина и квантование цвета
- •Сжатие изображений
- •Форматы графических файлов
- •Работа с файлами в формате bmp
- •Зеркальные отражения изображений
- •Повороты изображений
- •Препарирование изображений
- •Бинаризация
- •Яркостный срез
- •Линейное контрастирование
- •Пилообразное контрастирование
- •Соляризация
- •Эквализация
- •Выполнение логических и арифметических операций над изображенями
- •Выполнение логических операций
- •Выполнение арифметических операций
- •Общие понятия фильтрации изображений
- •Масочная фильтрация
- •Генерация шума
- •Восстановления изображений на основе обратной фильтрации
- •Фильтрация Винера
- •Итерационные методы восстановления изображений
- •Алгебраические методы восстановления изображений
Выполнение логических и арифметических операций над изображенями
Простейшими средствами, которые позволяют решать задачи обнаружения объектов на изображении и распознавания образов, являются логические и арифметические операции. Для выполнения над изображениями арифметических и логических операций библиотека IPL предоставляет большой набор функций, который можно разделить на две группы:
одноместные (monadic) функции, которые в операции участвуют изображения и константа;
двуместные (dyadic) функции, когда в операции участвуют два изображения.
Выполнение логических операций
Рассмотрим выполнение логических операций. Одноместная функция для выполнения логической операции И имеет следующий прототип:
void iplAndS(IplImage* srcImage, IplImage* dstImage, unsigned int value);
где srcImage – указазатель на исходное изображение, а dstImage – указатель на изображение, в котором функция должна сохранить результат. Аргумент value представляет собой последовательность бит, которая будет использоваться в побитовой операции И в комбинации с каждым пикселом изображения.
Функции логических и арифметических операций библиотеки IPL позволяют осуществлять их выполнение по месту, то есть записывать результат операции в исходное изображение. Таким образом, при выполнении логической операции И над изображением img, вызов данной функции может выглядеть следующим образом:
iplAndS(img, img, 128);
Результат выполненного преобразования представлен на рисунке 1. С помощью этой операции нам удалось выделить область изображения, интенсивность которой больше либо равна 128.
|
iplAndS |
|
Рис. 1. Действие функции iplAndS с аргументом value=128
Двуместная функция для выполнения логической операции И имеет следующий прототип:
void iplAnd(IplImage* srcImageA, IplImage* srcImageB, IplImage* dstImage);
где srcImageA и srcImageB – указатели на исходные изображения, а dstImage – указатель на изображение, в котором будет сохранен результат побитовой операции И. Результат выполнения этой функции представлен на рисунке 2. С помощью этой операции удается выделить на изображении те области, которые имеют одинаковый цвет.
|
iplAnd |
|
|
Рис. 2. Действие функции iplAnd
Одноместная функция для выполнения логической операции ИЛИ имеет следующий прототип:
void iplOrS(IplImage* srcImage, IplImage* dstImage, unsigned int value);
где srcImage – указатель на исходное изображение, а dstImage – указатель на изображение, в котором функция должна сохранить результат. Аргумент value представляет собой последовательность бит, которая будет использоваться в побитовой операции ИЛИ в комбинации с каждым пикселом изображения. Результат выполнения побитового ИЛИ с аргументом value = 63 представлен на рисунке 3. В данном примере операция ИЛИ дает четырехцветную топографическую карту исходного изображения.
|
iplOrS |
|
Рис. 3. Действие функции iplOrS с аргументом value=63
Двуместная функция для выполнения логической операции ИЛИ имеет следующий прототип:
void iplOr(IplImage* srcImageA, IplImage* srcImageB, IplImage* dstImage);
где srcImageA и srcImageB – указатели на исходные изображения, а dstImage – указатель на изображение, в котором будет сохранен результат побитовой операции ИЛИ. Результат выполнения этой функции представлен на рисунке 4. С помощью этой операции на изображении выделены пикселы, которые хотя бы на одном из исходных изображений имеют белый цвет.
|
iplOr |
|
|
Рис. 4. Действие функции iplOr
Одноместная функция для выполнения логической операции ИСКЛЮЧАЮЩЕЕ ИЛИ имеет следующий прототип:
void iplXorS(IplImage* srcImage, IplImage* dstImage, unsigned int value);
где srcImage – указатель на исходное изображение, а dstImage – указатель на изображение, в котором функция должна сохранить результат. Аргумент value представляет собой последовательность бит, которая будет использоваться в побитовой операции ИСКЛЮЧАЮЩЕЕ ИЛИ в комбинации с каждым пикселом изображения. Результат выполнения побитового ИСКЛЮЧАЮЩЕГО ИЛИ с аргументом value = 127 представлен на рисунке 5.
|
iplXorS |
|
Рис. 5. Действие функции iplXorS с аргументом value=127
Двуместная функция для выполнения логической операции ИСКЛЮЧАЮЩЕЙ ИЛИ имеет следующий прототип:
void iplXor(IplImage* srcImageA, IplImage* srcImageB, IplImage* dstImage);
где srcImageA и srcImageB – указатели на исходные изображения, а dstImage – указатель на изображение, в котором будет сохранен результат побитовой операции ИСКЛЮЧАЮЩЕЙ ИЛИ. Результат выполнения этой функции представлен на рисунке 6. С помощью этой операции на изображении выделены пикселы, цвет которых на исходных изображениях не совпадает.
|
iplXor |
|
|
Рис. 6. Действие функции iplXor
Функция для выполнения логической операции НЕ имеет следующий прототип:
void iplNot(IplImage* srcImage, IplImage* dstImage, unsigned int value);
где srcImage – указатель на исходное изображение, а dstImage – указатель на изображение, в котором функция должна сохранить результат. Операция НЕ позволяет инвертировать изображение (Рис. 7).
|
iplNot |
|
Рис. 7. Действие функции iplNot на полутоновое изображение
Все функции для выполнения арифметических и логических операций могут применяться не только к полутоновым, но и к цветным изображениям. Тогда побитовые операции выполняются с пикселом каждого цветового канала отдельно. На рисунке 8 представлен результат выполнения логической операции НЕ с цветным изображением.
|
iplNot |
|
Рис. 8. Действие функции iplNot на цветное изображение