湖南服務(wù)專業(yè)的網(wǎng)站制作自創(chuàng)網(wǎng)站
1.概念
圖像融合是將兩個(gè)或多個(gè)圖像結(jié)合在一起,創(chuàng)建一個(gè)新的圖像的過程。這個(gè)過程的目標(biāo)通常是通過合并圖像的信息來獲得比單個(gè)圖像更全面、更有信息量的結(jié)果。圖像融合可以在許多領(lǐng)域中應(yīng)用,包括計(jì)算機(jī)視覺、遙感、醫(yī)學(xué)圖像處理等。
融合的方法有很多:
-
加法融合(Additive Fusion): 將每個(gè)圖像的對應(yīng)像素相加。這種方法通常用于合并具有相似亮度的圖像,例如紅外圖像和可見光圖像。
-
權(quán)重融合(Weighted Fusion): 對每個(gè)圖像分配一個(gè)權(quán)重,然后通過加權(quán)和的方式將它們結(jié)合在一起。權(quán)重可以根據(jù)圖像的特性動態(tài)調(diào)整,以獲得最佳效果。
-
最大值融合(Max Fusion): 對于每個(gè)像素,選擇輸入圖像中具有最大值的像素。這種方法通常用于圖像分割和目標(biāo)檢測。
-
最小值融合(Min Fusion): 對于每個(gè)像素,選擇輸入圖像中具有最小值的像素。這種方法通常用于處理深度信息。
-
平均融合(Average Fusion): 將每個(gè)圖像的對應(yīng)像素取平均值。這種方法可用于平滑噪聲或減小圖像中的不確定性。
-
梯度域融合(Gradient Domain Fusion): 考慮圖像的梯度信息,以確保融合的圖像在邊緣處更加平滑。這在圖像合成時(shí)常用,例如在圖像編輯中。
-
無縫克隆(Seamless Cloning): 將源圖像的一部分融合到目標(biāo)圖像中,使得融合邊緣平滑且無縫。這通常涉及到掩碼的使用,以確定源圖像的哪些區(qū)域應(yīng)該被融合。
本次實(shí)驗(yàn)主要進(jìn)行無縫克隆融合
2.有關(guān)的函數(shù)方法
cv2.seamlessClone(src, dst, mask, center, flags)
src
:源圖像,即希望融合到目標(biāo)圖像上的圖像。dst
:目標(biāo)圖像,即希望將源圖像融合到的圖像。mask
:掩碼圖像,指定了源圖像中哪些區(qū)域應(yīng)該被融合。掩碼圖像必須是單通道的、與源圖像尺寸相同的灰度圖像。通常,白色區(qū)域表示要融合的部分,黑色區(qū)域表示不融合的部分。center
:一個(gè)二元組(x, y)
,表示源圖像在目標(biāo)圖像中的放置位置。flags
:一個(gè)標(biāo)志參數(shù),控制克隆的方式。
flags主要分為三種克隆方式:
1.cv2.NORMAL_CLONE:
這種克隆方式表示進(jìn)行常規(guī)的圖像克隆,即將源圖像的一部分融合到目標(biāo)圖像上,使得融合邊緣平滑且無縫。在這種克隆方式下,函數(shù)會盡可能地保持源圖像和目標(biāo)圖像之間的一致性,以使得融合后的圖像看起來更加自然。該方法對于一般的圖像融合任務(wù)通常是合適的選擇。
2.cv2.MIXED_CLONE
混合克隆在處理具有半透明區(qū)域的圖像時(shí)效果更好,因?yàn)樗紤]了源圖像的透明度信息。在混合克隆中,源圖像的每個(gè)像素都以一種混合的方式與目標(biāo)圖像對應(yīng)位置的像素相結(jié)合。這個(gè)混合考慮了源圖像中像素的顏色、透明度以及目標(biāo)圖像中對應(yīng)位置的像素顏色。這種方法使得融合的邊緣更加平滑,可以更好地處理半透明和半不透明的圖像區(qū)域。
3.cv2.MONOCHROME_TRANSFER
用于指定單色傳輸?shù)姆绞?。單色傳輸主要用于處理單通道圖像的克隆,例如灰度圖像。在單色傳輸中,源圖像的單通道信息(例如亮度)被傳輸?shù)侥繕?biāo)圖像的相應(yīng)位置。這種方式通常用于確保源圖像的強(qiáng)度信息在融合后得到保留。當(dāng)使用到灰色圖像(三通道)的時(shí)候,可以優(yōu)先考慮此克隆方式
?注意:此方法只接受三通道的圖片
示例代碼:?
import cv2
import numpy as npim = cv2.imdecode(np.fromfile(r'C:\Users\xiaoou\Desktop\picture/logo.jpg',dtype=np.uint8), cv2.IMREAD_COLOR)
obj = cv2.imdecode(np.fromfile(r'C:\Users\xiaoou\Desktop\picture/baicaoshi.png',dtype=np.uint8), cv2.IMREAD_COLOR)
im = cv2.resize(im,(516,516))
obj = cv2.resize(obj,(256,64))
mask = 255 * np.ones(obj.shape,obj.dtype)#掩碼,表示所有位置都可以被融合
width, height, channel = im.shape
center = (int(height/2), int(width/2))
#正??寺》绞?normal_clone = cv2.seamlessClone(obj,im,mask,center,cv2.NORMAL_CLONE)
cv2.imshow('normal_clone',normal_clone)
cv2.waitKey(0)#混合克隆方式
mix_clone = cv2.seamlessClone(obj,im,mask,center,cv2.MIXED_CLONE)
cv2.imshow('mix_clone',mix_clone)
cv2.waitKey(0)im = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
obj = cv2.cvtColor(obj, cv2.COLOR_BGR2GRAY)
im = cv2.merge((im, im, im))
obj = cv2.merge((obj, obj, obj))#將多個(gè)單通道的圖像合并成一個(gè)多通道的圖像#單色混合方式
MONO_clone = cv2.seamlessClone(obj,im,mask,center,cv2.MONOCHROME_TRANSFER)
cv2.imshow('MONO_clone',MONO_clone)
cv2.waitKey(0)
效果演示:
?
?
個(gè)人認(rèn)為第二種方法較好,考慮的方面較多,今天這個(gè)實(shí)驗(yàn)可能相對來說限制較大,因?yàn)樾枰斎肴诤蠄D像的中心位置,對于很多情況都是很難知道真正融合的位置的中心位置。?
本次實(shí)驗(yàn)展示了圖像融合(圖像克隆)功能,官方文檔請看OpenCV: OpenCV Tutorials
如有錯(cuò)誤或遺漏,希望小伙伴批評指正!!!!?
希望這篇博客對你有幫助!!!!
?實(shí)驗(yàn)三:Opencv實(shí)驗(yàn)合集——實(shí)驗(yàn)三:背景減除-CSDN博客
?實(shí)驗(yàn)四:Opencv實(shí)驗(yàn)合集——實(shí)驗(yàn)五:高動態(tài)范圍-CSDN博客