1. 程式人生 > >使用MATLAB工具wfusimg函式進行影象的融合

使用MATLAB工具wfusimg函式進行影象的融合

x1=imread('cs1.jpg');
x2=imread('cs2.jpg');
x1=double(x1)/256;
x2=double(x2)/256;
xfus=wfusimg(x1,x2,'sym4',5,'max','max');  %使用wfusimg函式進行影象的融合,其實就是把對低頻和高頻的處理封裝了。
figure;

imshow(xfus);

效果:


和上一個方法相比效果要好得多,這是因為分別對低頻個高頻進行了處理

wfusimg(x1,x2,'sym4',5,'max','max')說明

x1,x2為需要融合的影象,採用小波:sym4,分解為5層,近似訊號取兩幅圖中絕對值最大的值,細節訊號取兩幅圖中絕對值最大值,

可選:max,min,mean,img1,img2,rand.

以下是轉載的具體方式:

當然,我們也可以不使用小波工具箱中給出的現成函式,而選擇自己動手實現基於小波的影象融合演算法。這對我們實際瞭解該演算法是如何進行的大有裨益。下面這段示例程式實現了與前面程式碼段相同的作用,請讀者留意註釋說明的部分。另需說明的是,下面這段程式僅僅是為了演示演算法實現而編寫的,因此並沒做異常處理的考慮,我們預設待處理的兩幅原始影象的尺寸是一樣的。

X1 = imread(‘cathe1.bmp’);

X2 = imread(‘cathe2.bmp’);

M1 = double(X1) / 256;

M2 = double(X2) / 256;

N = 4;

wtype = ‘sym4’;

[c0,s0] = wavedec2(M1, N, wtype);

[c1,s1] = wavedec2(M2, N, wtype);

length = size(c1);

Coef_Fusion = zeros(1,length(2));

%低頻係數的處理,取平均值

Coef_Fusion(1:s1(1,1)) = (c0(1:s1(1,1))+c1(1:s1(1,1)))/2;

%處理高頻係數,取絕對值大者,這裡用到了矩陣乘法

MM1 = c0(s1(1,1)+1:length(2));

MM2 = c1(s1(1,1)+1:length(2));

mm = (abs(MM1)) > (abs(MM2));

Y  = (mm.*MM1) + ((~mm).*MM2);

Coef_Fusion(s1(1,1)+1:length(2)) = Y;

%重構

Y = waverec2(Coef_Fusion,s0,wtype);

imshow(Y,[]);

       上面這段程式碼中用到了小波重構函式waverec2(),函式waverec2()其實就是wavedec2()的相反過程,該函式的常用語法形式如下:

X = waverec2(C,S,’wname’)

X = waverec2(C,S,Lo_R,Hi_R)

       其中,引數C、S、N和’wname’的意義都與二維小波分解函式wavedec2()中定義的一樣,這裡不再贅言。Lo_R是重構低通濾波器,Hi_R是重構高通濾波器。

自己修改後的程式碼:(主要是感覺上面的程式碼沒有把低頻部分全部計算進去)

clc;
clear all;
p=imread('12.jpg');
q=imread('21.jpg');
p=double(p)/256;
q=double(q)/256;
imshow(p);
figure;
imshow(q);
figure;
[c1,s1]=wavedec2(p,4,'sym4');
[c2,s2]=wavedec2(q,4,'sym4');
length=length(c1);
hecheng=zeros(1,length);
hecheng(1:s1(1,1)*s1(1,2))=c1(1:s1(1,1)*s1(1,2))+c2(1:s1(1,1)*s1(1,2))/2;
MM1=c1(s1(1,1)*s1(1,2)+1:length);
MM2=c2(s1(1,1)*s1(1,2)+1:length);
mm=(abs(MM1)>abs(MM2));
Y=(mm.*MM1)+(~mm.*MM2);
hecheng(s1(1,1)*s1(1,2)+1:length)=Y;
Y=waverec2(hecheng,s2,'sym4');
imshow(Y);



相關推薦

使用MATLAB工具wfusimg函式進行影象融合

x1=imread('cs1.jpg'); x2=imread('cs2.jpg'); x1=double(x1)/256; x2=double(x2)/256; xfus=wfusimg(x1,x2,'sym4',5,'max','max');  %使用wfusimg函式

MATLAB中PSF函式進行影象復原

今天來介紹一下在MATLAB中如何用真實的PSF函式和噪聲強度作為引數進行影象復原,具體如下: 1、首先開啟MATLAB,在其主介面的編輯器中寫入下列程式碼: I=imread('G:\MATLAB\bm.bmp'); %讀取原始影象 LEN=31; %影象的模糊化 THETA=11;

matlab使用小波變換進行影象融合

clc; clear all; X1=imread('cs1.jpg'); X1=double(X1)/256;     %這裡轉化成double型別,否則使用小波變換輸出的會有大量大於1的存在,會導致影象顯示有問題 % X1=rgb2gray(X1);  %原本以為小波變

Opencv學習筆記:addWeighted函式影象融合

addWeighted函式 融合圖片尺寸不變 1、函式作用 作用:實現兩幅圖片的(疊加)線性融合; 2、函式原型 void addWeighted(InputArray src1, double alpha, InputArray src2, doubl

matlab 中 gradient函式計算影象梯度原理(轉載)

原文:http://blog.sina.com.cn/s/blog_53683dc20102v9f4.html Matlab中影象梯度的計算方式 轉載 2015-03-27 16:08:42 在matlab中可以使用gradient來計算一幅影象的梯度,它的計算方式是這樣的:

MATLAB中imshow()函式處理影象時出現全白顯示的原因

1、uint8(無符8位)與double     double函式只是將讀入影象的uint8資料轉換為double型別,一般不使用;常用的是im2double函式,將uint8影象轉為double型別,範圍為0-1,如果是255的影象,那麼255轉為1,0還是0,中間的做相

Matlab中imwrite( ) 函式 儲存影象用法

1、儲存到當前資料夾下:imwrite(I,'abc.png'); 2、儲存到當前資料夾下的一個子檔案result下:imwrite(I,'./result/abc.png'); 3、儲存到當前資料夾上一層的一個資料夾result下:imwrite(I,'../r

MATLAB的imtransform()函式影象線性平移時如果要體現效果要加上目標Size限制!

標題提出的問題實際上是下面兩條語句的區別: I_out=imtransform(I,tform);  I_out=imtransform(I,tform,'XData',[1 size(I,2)],'YData',[1 size(I,1)]); 兩條語句執行結果分別如下

Windows下簡單使用BPG影象壓縮工具進行影象壓縮和解壓縮(附官方編解碼工具程式碼下載地址)

BPG是一種新型的圖片格式。其設計初衷在於當圖片質量或檔案size成為瓶頸時,取代JPEG。其主要特點如下: 高壓縮比。BPG在quality類似的情形下,比JPEG要小得多。相同大小的圖片,使用BMP儲存質量遠高於JPEG 瀏覽器支援:使用一個很小js解碼庫(54KB)

matlab函式進行FFT變換

參考例程: clear all  close all % 構建原始訊號 N = 100; %原始訊號長度 Fs = 80; %取樣頻率HZ 取樣頻率要至少大於原始訊號頻率 dt = 1/Fs; %取樣間隔S t = [0:N-1]*dt; %時間序列

以一元及二元函式為例,通過多項式的函式影象觀察其擬合效能;以及對用多項式作目標函式進行機器學習時的一些理解。

 先給出程式碼: import numpy as np from mpl_toolkits.mplot3d import Axes3D from matplotlib import pyplot as plt from datetime import datetime t

MATLAB影象處理imadjust()函式調節影象的對比度示例

imadjust()函式J=imadjust(I)  將強度影象為I的值對映到J中的新值,使得1%的資料在低強度和高強度I時飽和。這將增加了輸出影象J的對比度。J = imadjust(I,[LOW_IN; HIGH_IN],[LOW_OUT; HIGH_OUT])將強度影象

matlab中使用小波變換進行影象去噪

1:基於小波變換摸極大值原理 2:基於小波變換系數的相關性 3:基於小波閾值的去噪。 基於小波閾值的去噪方法3個步驟: 1: 計算含噪聲影象的小波變換。選擇合適的小波基和小波分解層數J,運用Matlab 分解演算法將含有噪聲影象進行J層小波分解,得到相應的小波分解係數。 2:對分解後的高頻係數進行閾值量化

matlab影象融合

matlab影象融合          [r,c]=size(y1);         &

影象處理中矩形標記影象中某一塊區域matlab中rectangle函式介紹

rectangle('Position',[x,y,w,h]) 從點(x,y)開始繪製一個寬w高h的矩形,對座標軸資料單元指定值。 注意,按指定的比例顯示矩形,需要設定座標軸資料寬高比來使得x和y軸有等長的單位。你可以用命令axis equal 或者daspect([1,

matlab 工具函式matlab toolbox(工具箱)

minimize.m:最小化可微多元函式 minimize.m:最小化一個可微的多元函式; Minimize a differentiable multivariate function,函式介面說明: [X, fX, i] = minimize(X,

Matlab下核函式方法進行非線性分類

採用核函式方法對下列資料進行非線性分類。給出matlab具體程式碼,及採用訓練樣本進行測試得到的準確率結果。 x=[0 1 0 1 2 -1];y=[0 0 1 1 2 -1];z=[-1 1 1 -1 1 1];其中,(x,y)代表二維的資料點,z 表示相應點的型別屬性。

matlab 關於利用深度學習進行影象識別

深度學習進行影象識別現在主要 是利用CNN來進行操作,其中影象預處理涉及到灰度處理,零均值,影象分割,影象增強等等,比較多。最近在用matlab進行影象識別這一方面的實驗,在matlab官網上出了很多這樣的例子,提出裡兩種方法:training from scratch和tr

使用Matlab進行影象的讀寫、顯示和縮放(最近臨插值和雙線性內插值法)

上次我們開始進行數字影象處理這門課程的實驗,直到現在才抽空出來寫寫文章,記錄一下知識點。介紹一下,使用Matlab對數字影象的簡單處理。 1、 讀取與顯示輸入影象: %輸入影象和顯示影象 funct

opencv輸出特徵資料、libsvm進行影象分類輸出置信度、matlab輸出ROC曲線

前言: 在研究分類問題時,可能會遇到需要分類器返回樣本屬於每一類的概率,而不是直接輸出該樣本的類別的情況。因為之前一直使用OpenCV庫進行開發,所以也想在opencv的ml模組尋找是否有對應功能的SVM分類器,無果。最後發現最新的LIBSVM庫提供類似功能的函式。於是,藉