使用Python實(shí)現(xiàn)圖像融合及加法運(yùn)算
一.圖像加法運(yùn)算
1.Numpy庫加法
其運(yùn)算方法是:目標(biāo)圖像 = 圖像1 + 圖像2,運(yùn)算結(jié)果進(jìn)行取模運(yùn)算。
- 當(dāng)像素值<=255時(shí),結(jié)果為“圖像1+圖像2”,例如:120+48=168
- 當(dāng)像素值>255時(shí),結(jié)果為對(duì)255取模的結(jié)果,例如:(255+64)%255=64
2.OpenCV加法運(yùn)算
另一種方法是直接調(diào)用OpenCV庫實(shí)現(xiàn)圖像加法運(yùn)算,方法如下:
目標(biāo)圖像 = cv2.add(圖像1, 圖像2)
此時(shí)結(jié)果是飽和運(yùn)算,即:
- 當(dāng)像素值<=255時(shí),結(jié)果為“圖像1+圖像2”,例如:120+48=168
- 當(dāng)像素值>255時(shí),結(jié)果為255,例如:(255+64) = 255
兩種方法對(duì)應(yīng)的代碼如下所示:
#encoding:utf-8
import cv2
import numpy as np
import matplotlib.pyplot as plt
#讀取圖片
img = cv2.imread('picture.bmp')
test = img
#方法一:Numpy加法運(yùn)算
result1 = img + test
#方法二:OpenCV加法運(yùn)算
result2 = cv2.add(img, test)
#顯示圖像
cv2.imshow("original", img)
cv2.imshow("result1", result1)
cv2.imshow("result2", result2)
#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()輸出結(jié)果如下圖所示,其中result1為第一種方法,result2為第二種方法,白色點(diǎn)255更多。

注意:參與運(yùn)算的圖像大小和類型必須一致。下面是對(duì)彩色圖像進(jìn)行加法運(yùn)算的結(jié)果。

二.圖像融合
圖像融合通常是指將2張或2張以上的圖像信息融合到1張圖像上,融合的圖像含有更多的信息,能夠更方便人們觀察或計(jì)算機(jī)處理。如下圖所示,將兩張不清晰的圖像融合得到更清晰的圖。

圖像融合是在圖像加法的基礎(chǔ)上增加了系數(shù)和亮度調(diào)節(jié)量。
- 圖像加法:目標(biāo)圖像 = 圖像1 + 圖像2
- 圖像融合:目標(biāo)圖像 = 圖像1 * 系數(shù)1 + 圖像2 * 系數(shù)2 + 亮度調(diào)節(jié)量
主要調(diào)用的函數(shù)是addWeighted,方法如下:
dst = cv2.addWeighter(scr1, alpha, src2, beta, gamma) dst = src1 * alpha + src2 * beta + gamma
其中參數(shù)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的圖像融合。

設(shè)置不同的比例的融合如下所示:
result = cv2.addWeighted(src1, 0.6, src2, 0.8, 10)

三.圖像類型轉(zhuǎn)換
圖像類型轉(zhuǎn)換是指將一種類型轉(zhuǎn)換為另一種類型,比如彩色圖像轉(zhuǎn)換為灰度圖像、BGR圖像轉(zhuǎn)換為RGB圖像。OPenCV提供了200多種不同類型之間的轉(zhuǎn)換,其中最常用的包括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')
#圖像類型轉(zhuǎn)換
result = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
#顯示圖像
cv2.imshow("src", src)
cv2.imshow("result", result)
#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()輸出結(jié)果如下圖所示:

如果使用通道轉(zhuǎn)化,則結(jié)果如下圖所示:
result = cv2.cvtColor(src, cv2.COLOR_BGR2RGB)

圖像處理通常需要將彩色圖像轉(zhuǎn)換為灰度圖像再進(jìn)行后續(xù)的操作,更多知識(shí)后續(xù)將繼續(xù)分享,希望對(duì)著喜歡,尤其是做圖像識(shí)別、圖像處理的同學(xué)。
到此這篇關(guān)于使用Python實(shí)現(xiàn)圖像融合及加法運(yùn)算的文章就介紹到這了,更多相關(guān)Python圖像融合內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)讀取大量Excel文件并跨文件批量計(jì)算平均值
這篇文章主要為大家詳細(xì)介紹了如何利用Python語言,實(shí)現(xiàn)對(duì)多個(gè)不同Excel文件進(jìn)行數(shù)據(jù)讀取與平均值計(jì)算的方法,感興趣的可以了解一下2023-02-02
基于Python編寫一個(gè)有趣的年會(huì)抽獎(jiǎng)系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何使用Python編寫一個(gè)簡(jiǎn)易的抽獎(jiǎng)系統(tǒng),順便幫助大家鞏固一下對(duì)Python語法和框架的理解,感興趣的小伙伴可以了解下2023-12-12
python 點(diǎn)云地面點(diǎn)濾波-progressive TIN densification(PTD)算法介紹
關(guān)于地面點(diǎn)濾波的概念我們要與孤立點(diǎn)(outlier)濾波區(qū)分開,孤立點(diǎn)濾波可以理解為圖像中的去噪,去除數(shù)據(jù)測(cè)量過程中受到飛鳥、多路徑效應(yīng)所產(chǎn)生的遠(yuǎn)低于/高于其他數(shù)據(jù)的點(diǎn)。今天通過本文給大家分享python PTD點(diǎn)云地面點(diǎn)濾波的相關(guān)知識(shí),一起看看吧2021-08-08
缺失值可能是數(shù)據(jù)科學(xué)中最不受歡迎的值,然而,它們總是在身邊。忽略缺失值也是不合理的,因此我們需要找到有效且適當(dāng)?shù)靥幚硭鼈兊姆椒?。本文總結(jié)了四個(gè)Python查詢?nèi)笔е档姆椒?,需要的可以參考一?/div> 2022-05-05
用python記錄運(yùn)行pid,并在需要時(shí)kill掉它們的實(shí)例
下面小編就為大家?guī)硪黄胮ython記錄運(yùn)行pid,并在需要時(shí)kill掉它們的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01
django-celery-beat搭建定時(shí)任務(wù)的實(shí)現(xiàn)
本文主要介紹了django-celery-beat搭建定時(shí)任務(wù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03最新評(píng)論

