代数运算指的是两幅或者多幅图之间进行点对点的加减乘除运算最后输出图像的一个过程, 如果输入图像为 A(x,y),B(x,y), 输出图像为: C(x,y) 则有以下这几种形式:
1. 图像的加法运算
主要应用举例: 图像的叠加, 利用均值算法去除 "叠加性" 的随机噪音.
2. 图像的减法运算
将不同时刻拍摄的同一个景色的图像进行相减, 这就是图像的减法运算, 实际当中也常常称为差影法. 差值图像提供了图像间的差值信息, 能够用于指导动态监测, 运动目标的监测和跟踪, 图像背景的消除和目标识别等.
主要应用举例:
1. 差影法
2. 混合图像的分离 (去除不需要的叠加的图像)
这一节的理论比较的简单, 只要理解其概念就好, 我们的 opencv 代码实现在这里:
首先导入 opencv 的包, 同时写好读入图像的函数:
- import numpy as np
- import cv2
- import matplotlib.pyplot as plt
- def show(image):
- plt.imshow(image)
- plt.axis('off')
- plt.show()
- def imread(image):
- image=cv2.imread(image)
- image=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
- return image
开始图像的加法运算:
- image=imread('qwe.jpg')
- # 生成和图像 shape 相同的图片, 且全为 100 的数据
- M=np.ones(image.shape,dtype='uint8')*100
- image=cv2.add(M,image)
- show(image)
图像的减法运算:
- image=imread('qwe.jpg')
- # 生成和图像 shape 相同的图片, 且全为 100 的数据
- M=np.ones(image.shape,dtype='uint8')*100
- image=cv2.subtract(M,image)
- show(image)
这就是我们的加减运算了, 代码实现以及原理都十分的简单
来源: http://www.bubuko.com/infodetail-3136101.html