OpenCV干货2:图像运算

本文详细介绍了OpenCV中的图像运算,包括加法运算的规则、cv2.add和cv2.addWeighted函数,以及位运算如按位与、或、异或和非的操作。还涉及掩模在图像处理中的应用和位平面分解技术,以及图像加密和数字水印的原理。
摘要由CSDN通过智能技术生成

OpenCV干货2:图像运算

1.加法运算

加号运算符

a + b = m o d ( a + b , 256 ) a+b=mod(a+b,256) a+b=mod(a+b,256)

cv2.add()

a+b不满255时取直接加结果,大于等于255时取饱和值255

  1. cv2.add(num1,num2)

    正常按规则加。

  2. cv2.add(image1,image2)

    image1和image2的图像大小、类型必须一致。

  3. cv2.add(num,image)或者cv2.add(image,num)

    将超过image饱和值的数值处理为饱和值。

2.图像加权和

cv2.addWeighted()

以satuurate表示取饱和值,则加权和计算公式如下:
d s t = s a t u r a t e ( s r c 1 × a l p h a + s r c 2 × b e t a + γ ) dst=saturate(src1×alpha+src2×beta+γ) dst=saturatesrc1×alpha+src2×beta+γ
表示为代码形式为:

dst=cv2.addWeighted(src1,alpha,src2,beta,gamma)
  • src1、src2为两个大小、类型相同的图像;
  • alpha、beta表示图像权重;
  • gamma可以理解为亮度调节量,可以为0,但不能省略。

3.位运算

cv2.bitwise_and()——按位与

在这里插入图片描述
代码语法格式如下:

dst=cv2.bitwise_and(src1,src2[,mask]]
  • dst表示与输入值具有同样大小的array输出值;
  • src1表示第一个array或scalar类型的输入值;
  • src2表示第二个array或scalar类型的输入值;
  • mask表示可选操作掩码,8位单通道array;

按位与具有如下特点:

  • 任何数值N与数值0进行按位与操作,都会得到数值0;
  • 任何数值N(这里仅考虑8位值)与数值255(8位二进制数是1111 1111)进行按位与操作,都会得到数值N本身。

cv2.bitwise_or()——按位或

代码语法格式与参数解析参考按位与。
在这里插入图片描述

cv2.bitwise_xor()——按位异或

代码语法格式与参数解析参考按位与。
在这里插入图片描述

cv2.bitwise_not()——按位非

代码语法格式如下:

dst=cv2.bitwise_not(src[,mask]]
  • dst 表示与输入值具有同样大小的array输出值。
  • src表示array类型的输入值。
  • mask表示可选操作掩码,8位单通道array值。

4.掩模

当使用掩模参数时,操作只会在掩模值为非空的像素点上执行,并将其他像素点的值置为0。

例如加法和位运算都可以使用掩模参数:

dst=cv2.add(num1,num2,mask=mask)
dst=cv2.bitwise_and(src1,src2[,mask]]

5.位平面分解

​ 在8位灰度图中,每一个像素使用8位二进制值来表示,其值的范围在[0,255]之间。可以将其中的值表示为:
v a l u e = a 7 × 27 + a 6 × 26 + a 5 × 25 + a 4 × 24 + a 3 × 23 + a 2 × 22 + a 1 × 21 + a 0 × 20 value=a7×2 7+a6×2 6+a5×2 5+a4×2 4+a3×2 3+a2×2 2+a1×2 1+a0×2 0 value=a7×27+a6×26+a5×25+a4×24+a3×23+a2×22+a1×21+a0×20
​ 公式中各个ai的权重是不一样的,a7的权重最高,a0的权重最低。这代表a7的值对图像的影响最大,而a0的值对图像的影响最小。

​ 通过提取灰度图像像素点二进制像素值的每一比特位的组合,可以得到多个位平面图像。图像中全部像素值的ai值所构成的位平面,称为第i个位平面(第i层)。在8位灰度图中,可以组成8个二进制值图像,即可以将原图分解为8个位平面。

处理步骤:

  1. 图像预处理读取原始图像O,获取原始图像O的宽度M和高度N;
  2. 建立一个值均为2 n的Mat作为提取矩阵,使用按位与操作将一个数值指定位上的数字提取出来;
  3. 将灰度图像与提取矩阵进行按位与运算,得到各个位平面;
  4. 将得到的二值位平面进行阈值处理,将其中大于零的值处理为255;
  5. 将位平面显示出来,直观地观察各个位平面的具体情况。
    示例程序(仿照参考书中例子):
    在这里插入图片描述

6.图像加密与解密(应用

​ 通过对原始图像与密钥图像进行按位异或,可以实现加密;将加密后的图像与密钥图像再次进行按位异或,可以实现解密。

7.数字水印(应用

​ 将一个需要隐藏的二值图像信息嵌入载体图像的最低有效位,即将载体图像的最低有效位层替换为当前需要隐藏的二值图像,从而实现将二值图像隐藏的目的。由于二值图像处于载体图像的最低有效位上,所以对于载体图像的影响非常不明显,其具有较高的隐蔽性。

欢迎朋友们找我讨论学习中的问题
希望朋友们能点赞收藏加关注支持我的后续总结~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值