与运算
与运算是指将两幅原始图像对应位置处两个像素的灰度值通过与操作得到一个新的灰度值,作为结果图像对应位置处像素的灰度值。设两个像素为p和q,则与运算可表示为:
两幅图像的矩阵数据如下所示,试求X·Y的结果。
两幅图像相与的结果为:
img1 = self.xBitMap1.img
img2 = self.xBitMap2.img
out=img1&img2
XImage.imShow(out, self.lb3)
或运算
或运算是指将两幅原始图像对应位置处两个像素的灰度值通过或操作得到一个新的灰度值,作为结果图像对应位置处像素的灰度值。设两个像素为p和q,则或运算可表示为:
式中:f(x)为像素x的灰度值。
两幅图像的矩阵数据如下所示,试求X+Y的结果。
两幅图像相或的结果为:
out=img1|img2
非运算(补运算)
补运算是指将两幅原始图像对应位置处两个像素的灰度值通过补操作得到一个新的灰度值,作为结果图像对应位置处像素的灰度值。设像素为p,则补运算可表示为:
式中:f(x)为像素x的灰度值。
图像X的矩阵数据如下所示,试求 的结果。
图像X的补运算结果为:
out=~img1
out2=~img2
异或运算
异或运算是指将两幅原始图像对应位置处两个像素的灰度值通过异或操作得到一个新的灰度值,作为结果图像对应位置处像素的灰度值。设两个像素为p和q,则异或运算可表示为:
式中:f(x)为像素x的灰度值。
两幅图像的矩阵数据如下所示,试求X⊕Y的结果。
两幅图像异或的结果为:
out = img1 ^ img2
边缘检测
逻辑运算的典型应用为边缘检测。基于逻辑运算的边缘检测算法包括以下六个步骤。注意:算法针对二维图像;对于三维图像,需要在6个方向(左右上下前后)上进行操作。
(1) 设原始图像为图(a);
(2) 将图(a)的像素向左移动1个像素的位置得到图(b);
(3) 将图(a)和图(b)进行逻辑或运算得到图©;
(4) 将图(a)和图©进行逻辑异或运算得到图(d);
(5) 对左右上下共4个方向都进行上述操作得到4个结果图像,将4个结果图像进行逻辑或运算得到原图像的边缘。
img1=XCV.left(img)
img2=XCV.right(img)
img3=XCV.up(img)
img4=XCV.down(img)
out= img1|img2|img3|img4