python数字图像处理笔记12 算术运算

加法

加法运算是指将两幅原始图像对应位置处两个像素的灰度值相加得到一个新的灰度值,作为结果图像对应位置处像素的灰度值。设两个像素为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
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值