数字图像处理的数学变换逻辑运算
Posted nanke_yh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数字图像处理的数学变换逻辑运算相关的知识,希望对你有一定的参考价值。
逻辑运算
逻辑运算又称布尔运算,逻辑常量只有两个,即0和1,用来表示两个对立的逻辑状态“假”和“真”。逻辑变量与普通代数变量一样,可以用字母、符号、数字及其组合来表示,当进行逻辑运算时逻辑变量需先通过某种规则转换为逻辑常量。逻辑运算最直接的应用于处理二值图像的,对于非二值图像往往有自己具体的应用场景以及结合阈值化等其他运算来确定像素点真假,所以数字图像处理的算法往往都不是独立的,基本都是相结合的作为图像处理策略以获得最佳图像结果。
逻辑运算主要分为求反运算、与运算、或运算和异或运算。“非”是一个一元操作符,它只对一幅图像操作。剩下的是二元操作符,操作两幅图像。
1求反运算
求反运算又称为非运算,数字表达式为:
其中,f(x,y)为输入图像,g(x,y)为输出图像;
求反运算主要应用于:获得一个图像的负像、获得一个子图像的补图像、绘制区别于背景的,可恢复的图像。
在线性点运算中黑白翻转即为求反运算:h(x,y)=DN-f(x,y),其中DN为f(x,y)图像的灰度级。
2与运算
与运算的数字公式为:
其中,f1(x,y)和f2(x,y)为两幅不同的输入图像,g(x,y)为输出图像;主要用于求两幅图像相交子图。
3或运算
或运算的数字公式为:
其中,f1(x,y)和f2(x,y)为两幅不同的输入图像,g(x,y)为输出图像;主要用于求两幅图像并集图像。
4异或运算
异或运算的数字公式为:
其中,f1(x,y)和f2(x,y)为两幅不同的输入图像,g(x,y)为输出图像;
5实验结果
//对图像进行逻辑运算(非)处理ColorLen=256 int t = srcImg[row * width + col]; if (!t)//not temp = ColorLen-1; else temp = 0; srcImg[row * width + col] = (ImgTyp)(temp); | |||
//对图像进行逻辑运算(与、或、异或)处理ColorLen=256 int temp = 0; bool L = LeftImg[i*width+j]; bool R = RightImg[i*width+j]; switch(flag) case 0: //与 if (L && R)
temp = ColorLen-1;
else
temp = 0;
break; case 1: //或 if (L || R)
temp = ColorLen-1;
else
temp = 0;
break; case 2: //异或 if (L != R)
temp = ColorLen-1;
else
temp = 0;
break; default: cout<<"flag doesn't exist."<<endl; break; resultImg[i*width+j] = temp; | |||
flag | 输入图像 | 输出图像 | |
求反 | |||
0 |
| ||
1 | |||
2 |
基础的原理和操作实现和整理了一下,如果文中有什么错误,希望大家在评论中指出来,谢谢!
以上是关于数字图像处理的数学变换逻辑运算的主要内容,如果未能解决你的问题,请参考以下文章
数字图像处理的数学变化 线性点运算分段线性点运算非线性点运算阈值化运算