加法
加法运算是指将两幅原始图像对应位置处两个像素的灰度值相加得到一个新的灰度值,作为结果图像对应位置处像素的灰度值。设两个像素为p和q,则加法运算可表示为:
式中:f(x)为像素x的灰度值。
注意:由于图像像素的灰度值范围为[0,255],因此,相加结果如果大于255,则取255。
def add(img1,img2):
H1, W1, C1 = img1.shape
# H2, W2, C2 = img2.shape
out = np.zeros((H1, W1, C1), dtype=np.uint8) # 必须是8 不然显示不出图像
for y in range(H1):
for x in range(W1):
for c in range(C1):
a=int(img1[y,x,c])+int(img2[y,x,c])
if a>255:
a=255
out[y,x,c]=a
return out
图像融合
图像加法消除噪音
图像平均以减少和去除图像采集中混入的噪声
随着平均数量M的增加,噪声在每个像素位置的影响逐步减少。
def noise(img):
H, W, C = img.shape
im = img.copy()
for i in range(3000):
x = np.random.randint(0, H) # 随机取行
y = np.random.randint(0, W) # 随机取列
im[x, y, :] = 255 # 行和列设置为白色噪声点
return im
def add2(img,ncout):
H, W, C = img.shape
list = []
out = np.zeros((H, W, C), dtype=np.uint8)
for i in range(ncout):
img_noise = noise(img)
list.append(img_noise)
out=add(out,img_noise/ncout)
list.append(out)
return list
减法
减法运算是指将两幅原始图像对应位置处两个像素的灰度值相减得到一个新的灰度值,作为结果图像对应位置处像素的灰度值。设两个像素为p和q,则减法运算可表示为:
式中:f(x)为像素x的灰度值。
注意:由于图像像素的灰度值范围为[0,255],因此,相减结果如果小于0,则取0。
乘法
乘法运算是指将两幅原始图像对应位置处两个像素的灰度值相乘得到一个新的灰度值,作为结果图像对应位置处像素的灰度值。设两个像素为p和q,则乘法运算可表示为:
式中:f(x)为像素x的灰度值。
注意:由于图像像素的灰度值范围为[0,255],因此,相乘结果如果大于255,则取255。
def mul(img1,img2):
H1, W1, C1 = img1.shape
# H2, W2, C2 = img2.shape
out = np.zeros((H1, W1, C1), dtype=np.uint8) # 必须是8 不然显示不出图像
for y in range(H1):
for x in range(W1):
for c in range(C1):
a=int(img1[y,x,c])*int(img2[y,x,c])
if a>255:
a=255
out[y,x,c]=a
return out
乘法掩膜
乘法运算可对两幅图像进行掩模操作,屏蔽掉图像的某些部分。
def mul_mask(img1,img2):
H1, W1, C1 = img1.shape
# H2, W2, C2 = img2.shape
out = np.zeros((H1, W1, C1), dtype=np.uint8) # 必须是8 不然显示不出图像
for y in range(H1):
for x in range(W1):
for c in range(C1):
a=int(img1[y,x,c])*int(img2[y,x])
if a>255:
a=255
out[y,x,c]=a
return out
除法
除法运算是指将两幅原始图像对应位置处两个像素的灰度值相除得到一个新的灰度值,作为结果图像对应位置处像素的灰度值。设两个像素为p和q,则除法运算可表示为:
式中:f(x)为像素x的灰度值。
注意:由于图像像素的灰度值范围为[0,255]且为整数,因此,相除结果应保持灰度值范围不变;如果结果为小数,则要进行取整操作。特殊地,如果相除时分子分母均为0,则结果为0;如果仅分母为0,则结果为255。
def div(img1,img2):
H1, W1, C1 = img1.shape
# H2, W2, C2 = img2.shape
out = np.zeros((H1, W1, C1), dtype=np.uint8) # 必须是8 不然显示不出图像
for y in range(H1):
for x in range(W1):
for c in range(C1):
if img2[y,x,c]==0:
a=img1[y, x, c]
else:
a = int(img1[y, x, c] / img2[y, x, c])
out[y,x,c]=a
return out