Вернуться наверх
aco.ifmo.ru photonic
вернуться в оглавление предыдущая глава предыдущий параграф следующий параграф следующая глава


Выполнение логических операций

Рассмотрим выполнение логических операций. Одноместная функция для выполнения логической операции И имеет следующий прототип:

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 на цветное изображение