2.2 Python图像的空域增强处理-算术运算

2.2 Python图像的空域增强处理-算术运算

1 算法原理

1)加法与减法

假设 f(x,y),g(x,y)分别为两幅已知的图像,图像的加法和减法操作就是直接在每个位置的像素上做运算(两幅图像的尺寸需保持一致),最终得到的图像 s(x,y),可能会出现以下问题:

会出现不在 [ 0-255 ] 之间的像素点存在,最简单的操作就是小于 0 的像素点置为 0,大于 255 的像素点置为 255,或者可以做最大最小值均衡,将图像的对比度拉回来;可能会出现 float,double 等,一般来说最后图像像素的类型都是无符号整数 unit8。

加法公式: s(x,y) = f(x,y) + g(x,y)

减法公式: s(x,y) = f(x,y) - g(x,y)

可以使用函数 cv2.add(), cv2.addWeighted()将两幅图像进行加法运算,两幅图像的大小,类型必须一致,或者第二个图像可以使一个简单的标量值

2)平均值去噪

带有噪声的图像可以看作原始图像函数与噪声函数的和:

f(x,y)=I(x,y)+Noise(x,y)

当样本量足够大时,噪声 Noise(x,y)对图像的影响可以忽略。所以通过对样本就行平均可以起到去噪效果。OpenCV 中有一个专门的平均滤波模板供使用— —归一化卷积模板,所有的滤波模板都是使卷积框覆盖区域所有像素点与模板相乘后得到的值作为中心像素的值。

2 代码

运行代码说明

1.要改变代码中的图片地址(地址不能有中文)

更改put(path)函数中的路径put(r'../image/image1.jpg')

2.注意最后的plt.savefig('1.new.jpg' )是保存plt图像,如果不使用可以注释掉

这个代码要两张图片进行相加,所以还要改变第十行图片地址

import cv2
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False


def put(path):
    image = cv2.imread(path, 1)
    img2 = cv2.imread('test.jpg', 1)

    height, width = image.shape[:2]
    new_img2 = cv2.resize(img2, (width, height), interpolation=cv2.INTER_CUBIC) # 将相加图像设置为何原图一样大小

    # 图像相加, 要把两张图片的宽高设置为一样才可以加减
    # add_img = cv2.add(new_img2,image)
    # 第二种图像相加,可给图像赋予不同的权重(0到1之间),使得它具有混合感或透明感。
    add_img = cv2.addWeighted(new_img2,0.5,image,0.5,0)
    # 平均值去噪
    img_medianBlur = cv2.medianBlur(image, 3)

    # 图像相减
    sub_img = image - img_medianBlur

    fig = plt.figure(figsize=(8,7))
    ax0 = fig.add_subplot(221)
    ax0.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
    ax0.title.set_text('原图')

    ax1 = fig.add_subplot(222)
    ax1.imshow(cv2.cvtColor(add_img, cv2.COLOR_BGR2RGB))
    ax1.title.set_text('图像相加')

    ax2 = fig.add_subplot(223)
    ax2.imshow(cv2.cvtColor(img_medianBlur, cv2.COLOR_BGR2RGB))
    ax2.title.set_text('平均值去噪')

    ax3 = fig.add_subplot(224)
    ax3.imshow(cv2.cvtColor(sub_img, cv2.COLOR_BGR2RGB))
    ax3.title.set_text('原图减去噪图像')
    # plt.savefig('2.new.jpg')
    plt.show()

put(r'../image/image2.jpg')

3 效果

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值