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