使用Python实现图像融合及加法运算

目录
  • 一.图像加法运算
    • 1.Numpy库加法
    • 2.OpenCV加法运算
  • 二.图像融合
  • 三.图像类型转换

一.图像加法运算

1.Numpy库加法

其运算方法是:目标图像 = 图像1 + 图像2,运算结果进行取模运算。

  • 当像素值<=255时,结果为“图像1+图像2”,例如:120+48=168
  • 当像素值>255时,结果为对255取模的结果,例如:(255+64)%255=64

2.OpenCV加法运算

另一种方法是直接调用OpenCV库实现图像加法运算,方法如下:

目标图像 = cv2.add(图像1, 图像2)

此时结果是饱和运算,即:

  • 当像素值<=255时,结果为“图像1+图像2”,例如:120+48=168
  • 当像素值>255时,结果为255,例如:(255+64) = 255

两种方法对应的代码如下所示:

#encoding:utf-8
import cv2
import numpy as np
import matplotlib.pyplot as plt
#读取图片
img = cv2.imread('picture.bmp')
test = img
#方法一:Numpy加法运算
result1 = img + test
#方法二:OpenCV加法运算
result2 = cv2.add(img, test)
#显示图像
cv2.imshow("original", img)
cv2.imshow("result1", result1)
cv2.imshow("result2", result2)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下图所示,其中result1为第一种方法,result2为第二种方法,白色点255更多。

注意:参与运算的图像大小和类型必须一致。下面是对彩色图像进行加法运算的结果。

二.图像融合

图像融合通常是指将2张或2张以上的图像信息融合到1张图像上,融合的图像含有更多的信息,能够更方便人们观察或计算机处理。如下图所示,将两张不清晰的图像融合得到更清晰的图。

图像融合是在图像加法的基础上增加了系数和亮度调节量。

  • 图像加法:目标图像 = 图像1 + 图像2
  • 图像融合:目标图像 = 图像1 * 系数1 + 图像2 * 系数2 + 亮度调节量

主要调用的函数是addWeighted,方法如下:

dst = cv2.addWeighter(scr1, alpha, src2, beta, gamma)
dst = src1 * alpha + src2 * beta + gamma

其中参数gamma不能省略。

代码如下:

#encoding:utf-8
import cv2
import numpy as np
import matplotlib.pyplot as plt
#读取图片
src1 = cv2.imread('test22.jpg')
src2 = cv2.imread('picture.bmp')
#图像融合
result = cv2.addWeighted(src1, 1, src2, 1, 0)
#显示图像
cv2.imshow("src1", src1)
cv2.imshow("src2", src2)
cv2.imshow("result", result)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

需要注意的是,两张融合的图像像素大小需要一致,如下图所示,将两张RGB且像素410*410的图像融合。

设置不同的比例的融合如下所示:

result = cv2.addWeighted(src1, 0.6, src2, 0.8, 10)

三.图像类型转换

图像类型转换是指将一种类型转换为另一种类型,比如彩色图像转换为灰度图像、BGR图像转换为RGB图像。OPenCV提供了200多种不同类型之间的转换,其中最常用的包括3类,如下:

  • cv2.COLOR_BGR2GRAY
  • cv2.COLOR_BGR2RGB
  • cv2.COLOR_GRAY2BGR

代码如下所示:

#encoding:utf-8
import cv2
import numpy as np
import matplotlib.pyplot as plt

#读取图片
src = cv2.imread('01.bmp')

#图像类型转换
result = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)

#显示图像
cv2.imshow("src", src)
cv2.imshow("result", result)

#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下图所示:

如果使用通道转化,则结果如下图所示:

result = cv2.cvtColor(src, cv2.COLOR_BGR2RGB)

图像处理通常需要将彩色图像转换为灰度图像再进行后续的操作,更多知识后续将继续分享,希望对着喜欢,尤其是做图像识别、图像处理的同学。

到此这篇关于使用Python实现图像融合及加法运算的文章就介绍到这了,更多相关Python图像融合内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python实现泊松图像融合

    本文实例为大家分享了python实现泊松图像融合的具体代码,供大家参考,具体内容如下 ``` from __future__ import division import numpy as np import scipy.fftpack import scipy.ndimage import cv2 import matplotlib.pyplot as plt #sns.set(style="darkgrid") def DST(x): """ Conv

  • Python+OpenCV实现图像融合的原理及代码

    根据导师作业安排,在学习数字图像处理(刚萨雷斯版)第六章 彩色图像处理 中的彩色模型后,导师安排了一个比较有趣的作业: 融合原理为: 1 注意:遥感原RGB图image和灰度图Grayimage为测试用的输入图像: 2 步骤:(1)将RGB转换为HSV空间(H:色调,S:饱和度,V:明度): (2)用Gray图像诶换掉HSV中的V: (3)替换后的HSV转换回RGB空间即可得到结果. 书上只介绍了HSI彩色模型,并没有说到HSV,所以需要网上查找资料. Python代码如下: import cv

  • python调用stitcher类自动实现多个图像拼接融合功能

    使用stitcher需要注意,图像太大会报错而且计算慢. 特点和适用范围:图像需有足够重合相同特征区域. 优点:适应部分倾斜/尺度变换和畸变情形,拼接效果好,使用简单,可以一次拼接多张图片. 缺点:需要有足够的相同特征区域进行匹配,速度较慢(和图像大小有关). 原图(可下载) 代码(两张图片拼接) import sys import cv2 if __name__ == "__main__": img1 = cv2.imread('C:/Users/Guaguan/Desktop/im

  • python使用OpenCV模块实现图像的融合示例代码

    可以通过OpenCV函数cv.add()或简单地通过numpy操作添加两个图像,res = img1 + img2.两个图像应该具有相同的深度和类型,或者第二个图像可以是标量值. 三种融合 注意融合时,一般来说两个图像的尺寸是一样大小的,如果大小不一样,需要把大的图像的某一部分先截出来,与小的图先融合,再作为整体替换掉原来大图中抠出的小图部分. """ # @Time : 2020/4/3 # @Author : JMChen """ impor

  • python中opencv图像叠加、图像融合、按位操作的具体实现

    目录 1图像叠加 2图像融合 3按位操作 1图像叠加 可以通过OpenCV函数cv.add()或简单地通过numpy操作添加两个图像,res = img1 + img2.两个图像应该具有相同的深度和类型,或者第二个图像可以是标量值. NOTE: OpenCV添加是饱和操作,也就是有上限值,而Numpy添加是模运算. 添加两个图像时, OpenCV功能将提供更好的结果.所以总是更好地坚持OpenCV功能. 代码: import cv2 import numpy as np x = np.uint8

  • 使用Python实现图像融合及加法运算

    目录 一.图像加法运算 1.Numpy库加法 2.OpenCV加法运算 二.图像融合 三.图像类型转换 一.图像加法运算 1.Numpy库加法 其运算方法是:目标图像 = 图像1 + 图像2,运算结果进行取模运算. 当像素值<=255时,结果为“图像1+图像2”,例如:120+48=168 当像素值>255时,结果为对255取模的结果,例如:(255+64)%255=64 2.OpenCV加法运算 另一种方法是直接调用OpenCV库实现图像加法运算,方法如下: 目标图像 = cv2.add(图

  • Python图像处理之图像融合与ROI区域绘制详解

    目录 一.图像融合 二.图像ROI区域定位 三.图像属性 (1)shape (2)size (3)dtype 四.图像通道分离及合并 (1)split()函数 (2)merge()函数 五.图像类型转换 六.总结 一.图像融合 图像融合通常是指多张图像的信息进行融合,从而获得信息更丰富的结果,能够帮助人们观察或计算机处理.图5-1是将两张不清晰的图像融合得到更清晰的效果图. 图像融合是在图像加法的基础上增加了系数和亮度调节量,它与图像的主要区别如下[1-3]: 图像加法:目标图像 = 图像1 +

  • opencv 图像加法与图像融合的实现代码

    图像加法 1.使用Numpy加法 运算方式:结果=图像1+图像2 原理:图像数据格式为unit8 8位二进制表示范围是0到255. 二进制相加 1.不超过255的,如100+58=158 2.两数相加可能超过255,超过255的取模运算 如255+58=(255+58)%255=58 2.使用opencv加法 方法:结果=cv2.add(图像1,图像2) 饱和运算: 1.如果 两数相加小于255,100+58=158 2.两数相加可能超过255,值取255.255+58=255 算法比较 注意参

  • 详解Python图像形态学处理(开运算,闭运算,梯度运算)

    目录 一.图像开运算 二.图像闭运算 三.图像梯度运算 四.总结 这篇文章将继续介绍开运算.闭运算和梯度运算.数学形态学(Mathematical Morphology)是一种应用于图像处理和模式识别领域的新方法.数学形态学(也称图像代数)表示以形态为基础对图像进行分析的数学工具,其基本思想是用具有一定形态的结构元素去量度和提取图像中对应形状以达到对图像分析和识别的目的. 一.图像开运算 开运算一般能平滑图像的轮廓,削弱狭窄部分,去掉较细的突出.闭运算也是平滑图像的轮廓,与开运算相反,它一般熔合

  • opencv中图像叠加/图像融合/按位操作的实现

    一.图像叠加:cv2.add res=cv2.add(img1, img2) 或者res=cv2.add(img1, 标量值) 参数说明: cv2.add将两个图片对应位置的像素的值相加,或者将每个像素的值加上一个标量值,大于255的像素值就设置成255. 有一点需要注意的是,如果是两张图片相加,那么一定要注意两者的尺寸和通道数必须是一样的:如果是标量值,这个值既可以是整数也可以是浮点数,加合适的标量值一般是为了提高亮度. import cv2 img1 = cv2.imread('1.jpg'

  • 详解python opencv图像混合算术运算

    目录 图片相加 cv2.add() 按位运算 图片相加 cv2.add() 要叠加两张图片,可以用 cv2.add() 函数,相加两幅图片的形状(高度 / 宽度 / 通道数)必须相同.         numpy中可以直接用res = img + img1相加,但这两者的结果并不相同(看下边代码):         add()两个图片进行加和,大于255的使用255计数.         numpy会对结果取256(相当于255+1)的模: import numpy as np import c

  • Python中图像算术运算的示例详解

    目录 介绍 算术运算:图像相加 算术运算:图像减法 位运算 介绍 还记得你在小学时学习如何加减数字吗?现在,你也可以对图像做同样的事情! 输入图像可以进行算术运算,例如加法.减法和按位运算(AND.OR.NOT.XOR).这些操作可以帮助提高输入照片的质量. 在本文中,你将了解使用 OpenCV Python 包对图像执行算术和按位运算的步骤.让我们开始吧! 对图像进行算术运算是什么意思? 因此,假设我们希望合并两张单独的照片中的两个像素.我们怎样才能将它们合并? 让我们想象以下场景.第一个像素

随机推荐