matlab将二值图像与原图重叠_图像处理matlab及图像融合图像镶嵌图像拼接
要把double的圖像(范圍是0到1)再次轉(zhuǎn)化為256灰度值的,可以這樣
Igrey= uint8(I2*255)
圖像類型轉(zhuǎn)換函數(shù):
dither() 通過顏色抖動(dòng),把真彩圖像轉(zhuǎn)換成索引圖像或灰度圖象轉(zhuǎn)換成二值圖像
gray2ind() 將灰度圖像(或二值圖像)轉(zhuǎn)換成索引圖像
grayslice() 通過設(shè)定的閾值將灰度圖象轉(zhuǎn)換成索引圖像
im2bw() 通過設(shè)定亮度閾值將灰度、真彩、索引圖象轉(zhuǎn)換成二值圖像
ind2gray() 將索引圖象轉(zhuǎn)換成灰度圖象
ind2rgb() 將索引圖象轉(zhuǎn)換成真彩色圖像
mat2gray() 將一個(gè)數(shù)據(jù)矩陣轉(zhuǎn)換成一幅灰度圖象
rgb2gray() 將真彩轉(zhuǎn)換成灰度圖象
rgb2ind() 將真彩轉(zhuǎn)換成索引圖象
圖像類型與類型間的轉(zhuǎn)換
1。索引圖像:包括一個(gè)數(shù)據(jù)矩陣X和一個(gè)色圖陣MAP。矩陣元素值指向MAP中的特定顏色向量。
2。灰度圖像:數(shù)據(jù)矩陣I,I中的數(shù)據(jù)代表了顏色灰度值。矩陣中的元素可以是double類型、8位或16位無符號(hào)的整數(shù)類型。
3。RGB圖像:即真彩圖像。矩陣中每個(gè)元素為一個(gè)數(shù)組,數(shù)組的元素定義了像素的紅、綠、藍(lán)顏色值。RGB數(shù)組可以是double類型、8位或16位無符號(hào)的整數(shù)類型。
4。二值圖像:一個(gè)數(shù)據(jù)陣列,每個(gè)象素只能取0或1。
矩陣的基本運(yùn)算
行列式求值:det(A)
矩陣加減:+、-
矩陣相乘:*
矩陣左除:A/B?%相當(dāng)于inv(A)*B
矩陣右除:A\B?%相當(dāng)于A*inv(B)
矩陣的冪:^
矩陣轉(zhuǎn)置:'
矩陣求共軛(實(shí)部相同,虛部相反):conj(X)
矩陣求逆:inv(X)
級(jí)數(shù)的求和與收斂
symsum(fun,var,a,b):其中fun是通項(xiàng)表達(dá)式,var為求和變量,a為求和起點(diǎn),b為求和終點(diǎn)
例如:I為1/[n*(2n+1)]從1到正無窮的和,求I
syms n;
f1=1/(n*(2*n+1));
I=symsum(f1,n,1,inf)
計(jì)算結(jié)果為:
I =2-2*log(2)
空間曲面
mesh()函數(shù)語法:
mesh(Z):
mesh(X,Y,Z,C):其中C是用來定義相應(yīng)點(diǎn)顏色等屬性的數(shù)組
例:求x^2+y^2=z的空間曲面
x=-4:4;
y=x;
[X,Y]=meshgrid(x,y);%生成x,y坐標(biāo)
Z=X.^2+Y.^2;
mesh(X,Y,Z)
曲面圖
[x,y]=meshgrid(xa,ya)
當(dāng)xa,ya分別為m維和n維行向量,得到x和y均為n行m列矩陣。meshgrid常用于生成x-y平面上的網(wǎng)格數(shù)據(jù);
mesh(x,y,z)繪制網(wǎng)面圖,是最基本的曲面圖形命令,其中x、y、z是同階矩陣,表示曲面三維數(shù)據(jù);
mesh(xa,ya,z)
xa,ya分別為m維和n維向量,z為n行m列矩陣。等價(jià)于先[x,y]=meshgrid(xa,ya)再mesh(x,y,z);
surf(x,y,z)繪制曲面圖,與mesh用法類似;
contour(x,y,z)繪制等高線圖,與mesh用法類似,可指定z的范圍;
contour3(x,y,z)繪制三維等高線圖,與mesh用法類似,可指定z的范圍。
空間曲線
例:求方程組的空間曲線
1。化為參數(shù)方程組
x=t
y=sqrt[t(1-t)]
z=sqrt[1-x^2-y^2]
2。 程序
t=0:0.001:1;
x=t;
y=sqrt(t.*(1-t));
z=sqrt(1-x.^2-y.^2);
plot3(x,y,z,z,-y,z)
其中.*為數(shù)組相乘,.^為數(shù)組乘方
matlab實(shí)現(xiàn)離散余弦變換壓縮(JPEG壓縮原理)
JPEG圖像壓縮算法:
輸入圖像被分成8*8或16*16的小塊,然后對(duì)每一小塊進(jìn)行二維DCT(離散余弦變換)變換,變換后的系數(shù)量化、編碼并傳輸;
JPEG文件解碼量化了的DCT系數(shù),對(duì)每一塊計(jì)算二維逆DCT變換,最后把結(jié)果塊拼接成一個(gè)完整的圖像。在DCT變換后舍棄那些不嚴(yán)重影響圖像重構(gòu)的接近0的系數(shù)。
DCT變換的特點(diǎn)是變換后圖像大部分能量集中在左上角,因?yàn)樽笊戏庞吃瓐D像低頻部分?jǐn)?shù)據(jù),右下反映原圖像高頻部分?jǐn)?shù)據(jù)。而圖像的能量通常集中在低頻部分。
實(shí)例程序:
Jpeg
I=imread('D:\MATLAB7\toolbox\images\imdemos\cameraman.tif');
%該圖片在安裝matlab的目錄中找,原圖為灰度圖象
I=im2double(I);%圖像存儲(chǔ)類型轉(zhuǎn)換
T=dctmtx(8);%離散余弦變換矩陣
B=blkproc(I,[8 8],'P1*x*P2',T,T');
%對(duì)原圖像進(jìn)行DCT變換
mask=[1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0];
B2=blkproc(B,[8 8],'P1.*x',mask);
%數(shù)據(jù)壓縮,丟棄右下角高頻數(shù)據(jù)
I2=blkproc(B2,[8 8],'P1*x*P2',T',T);
%進(jìn)行DCT反變換,得到壓縮后的圖像
imshow(I)
title('原始圖像')
figure;
imshow(I2)
title('壓縮后的圖像')
應(yīng)用到的函數(shù):
I=imread('圖像文件名') :讀取圖像數(shù)據(jù),保存在矩陣I中;
imshow(I) :顯示灰度圖像I,其他用法見matlab幫助;
I2=im2double(I1) :把圖像數(shù)組I1轉(zhuǎn)換成double精度類型;
D=dctmtx(n) :二維離散余弦變換函數(shù),返回n*n離散余弦變換矩陣。
一個(gè)n*n的變換矩陣T被定義成:
Tpq=1/sqrt(n)?,當(dāng)p=0,0<=q<=M-1;
Tpq=sqrt(2/n)*cos[pi*(2q+1)*p/2n]?,當(dāng)1<=p<=M-1,0<=q<=M-1。
B=blkproc(A,[m n],fun,P1,P2...)
:塊操作函數(shù)。對(duì)圖像A的每個(gè)不同的m*n塊應(yīng)用fun函數(shù),P1,P2等為fun函數(shù)參數(shù)。在圖像邊緣用0來擴(kuò)展;只有當(dāng)fun的返回矩陣是m*n矩陣時(shí),B和A的大小才相同。
figure:強(qiáng)制生成一個(gè)新的個(gè)繪圖窗口;
非線性方程求解
fsolve(fun,x0,options)
其中fun為待解方程或方程組的文件名;
x0位求解方程的初始向量或矩陣;
option為設(shè)置命令參數(shù)
建立文件fun.m:
y=fun(x)
y=[x(1)-0.5*sin(x(1))-0.3*cos(x(2)), ...
x(2) - 0.5*cos(x(1))+0.3*sin(x(2))];
>>clear;x0=[0.1,0.1];fsolve(@fun,x0,optimset('fsolve'))
注:
...為續(xù)行符
m文件必須以為文件頭,調(diào)用符為@;文件名必須與定義的函數(shù)名相同;fsolve()主要求解復(fù)雜非線性方程和方程組,求解過程是一個(gè)逼近過程。
不定積分與定積分
不定積分:int(fun,var)
例:求∫sinaxsinbxsincxdx
syms a b c x
y=sin(a*x)*sin(b*x)*sin(c*x);
int(y,x);
pretty(ans)
定積分:int(fun,var,a,b)
其中a,b分別為上下限
求解線形方程
solve,linsolve
例:A=[5 0 4 2;1 -1 2 1;4 1 2 0;1 1 1 1];
%矩陣的行之間用分號(hào)隔開,元素之間用逗號(hào)或空格
B=[3;1;1;0]
X=zeros(4,1);%建立一個(gè)4元列向量
X=linsolve(A,B)
diff(fun,var,n):對(duì)表達(dá)式fun中的變量var求n階導(dǎo)數(shù)。
例如:F=sym('u(x,y)*v(x,y)');?%sym()用來定義一個(gè)符號(hào)表達(dá)式
diff(F);?%matlab區(qū)分大小寫
pretty(ans) %pretty():用習(xí)慣書寫方式顯示變量;ans是答案表達(dá)式
求極限
limit:
例:limit(F,x,a,left);對(duì)表達(dá)式F求極限,變量為x,從左邊趨近a。
inf:正無窮;-inf:負(fù)無窮。
matlab之基本繪圖函數(shù)
figure:強(qiáng)制生成一個(gè)新的個(gè)繪圖窗口;
syms x y t :聲明變量;
fplot(函數(shù)表達(dá)式,繪圖區(qū)間);
plot(橫坐標(biāo)向量,縱坐標(biāo)向量,顏色/線形等參數(shù))
ezplot(函數(shù)表達(dá)式):簡單的fplot,easy fplot
axis([xmin xmax ymin ymax ...]):設(shè)置坐標(biāo)軸顯示范圍
傅里葉基本知識(shí):在圖象處理的廣泛應(yīng)用領(lǐng)域中,傅立葉變換起著非常重要的作用,具體表現(xiàn)在包括圖象分析、圖象增強(qiáng)及圖象壓縮等方面。
假設(shè)f(x,y)是一個(gè)離散空間中的二維函數(shù),則該函數(shù)的二維傅立葉變換的定義如下:
u=0,1…M-1 v=0,1…N-1 (1)
離散傅立葉反變換的定義如下:
x=0,1…M-1 y=0,1…N-1(3)
F(p,q)稱為f(m,n)的離散傅立葉變換系數(shù)。這個(gè)式子表明,函數(shù)f(m,n)可以用無數(shù)個(gè)不同頻率
的復(fù)指數(shù)信號(hào)和表示,而在頻率(w1,w2)處的復(fù)指數(shù)信號(hào)的幅度和相位是F(w1,w2)。
例如,函數(shù)f(m,n)在一個(gè)矩形區(qū)域內(nèi)函數(shù)值為1,而在其他區(qū)域?yàn)?.
假設(shè)f(m,n)為一個(gè)連續(xù)函數(shù),則f(m,n)的傅立葉變換的幅度值(即)顯示為網(wǎng)格圖。
將傅立葉變換的結(jié)果進(jìn)行可視化的另一種方法是用圖象的方式顯示變換結(jié)果的對(duì)數(shù)幅值。
MATLAB提供的快速傅立葉變換函數(shù)
(1)fft2
fft2函數(shù)用于計(jì)算二維快速傅立葉變換,其語法格式為:
B = fft2(I)
B = fft2(I)返回圖象I的二維fft變換矩陣,輸入圖象I和輸出圖象B大小相同。
例如,計(jì)算圖象的二維傅立葉變換,并顯示其幅值的結(jié)果,其命令格式如下
load imdemos saturn2
imshow(saturn2)
B = fftshift(fft2(saturn2));
imshow(log(abs(B)),[],'notruesize')
(2)fftshift
MATLAB提供的fftshift函數(shù)用于將變換后的圖象頻譜中心從矩陣的原點(diǎn)移到矩陣的中心,其語法格式為:
B = fftshift(I)
對(duì)于矩陣I,B = fftshift(I)將I的一、三象限和二、四象限進(jìn)行互換。
(2)ifft2
ifft2函數(shù)用于計(jì)算圖象的二維傅立葉反變換,其語法格式為:
B = ifft2(I)
B = ifft2(A)返回圖象I的二維傅立葉反變換矩陣,輸入圖象I和輸出圖象B大小相同。其語法格式含義與
fft2函數(shù)的語法格式相同,可以參考fft2函數(shù)的說明。
簡單低通濾波器的設(shè)計(jì)?一個(gè)圖象經(jīng)過傅立葉變換后,就從空域變到了頻域,因此我們可以用信號(hào)處理中對(duì)于頻域信號(hào)的處理
方法對(duì)一幅圖象進(jìn)行處理。比如對(duì)圖象進(jìn)行低通濾波等。
雖然在計(jì)算機(jī)中必定能夠模擬一個(gè)銳截止頻率的理想低通濾波器,但它們不能用電子元件來實(shí)現(xiàn)。實(shí)
際中比較常用的低通濾波器有:巴特沃思(Butterworth)濾波器、指數(shù)濾波器(ELPF)、梯形低通濾波
器等。
在實(shí)驗(yàn)中我們?cè)O(shè)計(jì)一個(gè)理想的低通濾波器。
設(shè)計(jì)理想的低通濾波器由其定義可知只要設(shè)計(jì)一個(gè)與頻域圖象大小完全相同的矩陣。在某一個(gè)域值內(nèi)
該矩陣的值為1,其余為0即可。
例:若圖象的大小為128*128,則可以這樣設(shè)計(jì)一個(gè)低通濾波器:
H=zeros(128);
H(32:96,32:96)=1; %此處的范圍是人為取定的,可以根據(jù)需要更改。
若圖象矩陣I的傅立葉變換是B(已經(jīng)用fftshift將頻譜中心移至矩陣的中心),則對(duì)這幅圖象做低通濾
波,再做傅立葉逆變換命令為
LOWPASS=B.*H; %此處設(shè)變換后的矩陣為LOWPASS,另注意這兒是矩陣的點(diǎn)乘。
C=ifft2(LOWPASS);
Imshow(abs(C))
引言?圖像鑲嵌技術(shù)(mosai
)是圖像融合技術(shù)的一種,一般指的是同種類型圖像的融合。他把多幅具有重疊信息部分的圖像銜接在一起,得到一幅完整的、范圍更大的圖像,并且去除其中的冗余信息。圖像鑲嵌技術(shù)的應(yīng)用非常廣泛。例如,虛擬現(xiàn)實(shí)中的全景圖顯示及遙感圖像的處理等領(lǐng)域,都有廣泛的應(yīng)用。圖像鑲嵌的評(píng)價(jià)標(biāo)準(zhǔn)是鑲嵌后得到的圖像,不但具有良好的視覺效果,而且還要盡可能地保持圖像光譜特征。通俗地說,就是鑲嵌的圖像越“無縫”,效果就越好。當(dāng)然,這里的“無縫”,不是絕對(duì)意義上的,而是人眼分辨力以內(nèi)的“無縫”。
一般情況下,進(jìn)行圖像拼接時(shí),在拼接的邊界上,不可避免地會(huì)產(chǎn)生拼接縫。這是因?yàn)閮煞唇訄D像在灰度上的細(xì)微差別都會(huì)導(dǎo)致明顯的拼接縫。而在實(shí)際的成像過程中,這種細(xì)微差別很難避免。因此圖像鑲嵌技術(shù)的難點(diǎn)就在于準(zhǔn)確尋找圖像之間的位置關(guān)系,并把兩幅以上的圖像平滑地銜接在一起,獲取一幅全局的圖像。本文的基本思想就是突破以往在尋找拼接線時(shí),只要找到一個(gè)最佳拼接點(diǎn),以此點(diǎn)做一條直線作為拼接線的不合理性,而是取一個(gè)閉值,在閉值范圍內(nèi)尋找出每個(gè)拼接點(diǎn),把這些點(diǎn)連成的折線作為拼接線,進(jìn)行拼接。
2 拼接縫消除的方法
傳統(tǒng)的拼接縫消除的方法有很多,其中用得較多的方法有;中值濾波法、利用小波變換的方法、加權(quán)平均法等
2 . 1 中值濾波法消除拼接縫
中值濾波法是對(duì)接縫附近的區(qū)域進(jìn)行中值濾波。對(duì)與周圍灰度值差比較大的象素取與周圍象素接近的值,從而消除光強(qiáng)的不連續(xù)性。中值濾波器處理接縫附近的狹長地帶。該方法速度快,但質(zhì)量一般。平滑的結(jié)果會(huì)使圖像的分辨率下降,使圖像細(xì)節(jié)分辨不出,產(chǎn)生圖像模糊。
2 . 2 利用小波變換的方法消除拼接縫
小波變換方法也是目前比較常用的一種方法,他充分利用小波變換的多分辨率特性,很好地解決了拼接圖像的接縫問題。其原理為:由于小波變換具有帶通濾波器的性質(zhì),在不同尺度下的小波變換分量,實(shí)際上占有一定的頻寬,尺度j
越大,該分量的頻率越高,因此每一個(gè)小波分量所具有的頻寬不大,把要拼接的兩幅圖像先按小波分解的方法將他們分解成不同頻率的小波分量,只要分解得足夠細(xì),小波分量的頻寬就能足夠小。然后在不同尺度下,選取不同的拼接寬度,把2
個(gè)圖像按不同尺度下的小波分量先拼接下來,然后再用恢復(fù)程序,恢復(fù)到整個(gè)圖像。這樣得到的圖像可以很好地兼顧清晰度和光滑度2
個(gè)方面的要求。但是,小波變換也存在缺點(diǎn),如小波變換的算法比較復(fù)雜,需要在小波變換域內(nèi)先進(jìn)行拼接處理,在計(jì)算過程中涉及到大量的浮點(diǎn)運(yùn)算和邊界處理問題,對(duì)實(shí)際生產(chǎn)中的大容量圖像進(jìn)行處理時(shí)計(jì)算機(jī)內(nèi)存開銷很大,且處理時(shí)間較長,拼接速度慢。
2 . 3 利用加權(quán)平滑的方法消除拼接縫
在實(shí)際中,使用較多的方法還有對(duì)重疊區(qū)域進(jìn)行加權(quán)平滑的方法。這種方法的思路是:圖像重疊區(qū)域中象素點(diǎn)的灰度值Pixel
由兩幅圖像中對(duì)應(yīng)點(diǎn)的灰度值LPixel 和RPixel 加權(quán)平均得到,即:
P ixel 一k X LPixel + ( l 一k ) X RPixel 其中:k 是漸變因子,滿足條件:o
< k < 1 ,在重疊區(qū)域中,按照從左圖像到右圖像的方向,k 由1
漸變至0 ,由此實(shí)現(xiàn)了在重疊區(qū)域中由左邊重疊區(qū)慢慢過渡到右邊重疊區(qū)的平滑拼接。
尋找最佳拼接線時(shí),采用一個(gè)滑動(dòng)窗口在圖像重疊區(qū)上逐行選擇灰度值差異最小的象元作為最佳拼接點(diǎn)。但是,如果按照這種拼接點(diǎn)選擇法,會(huì)出現(xiàn)一個(gè)新問題,就是往往會(huì)出現(xiàn)上下行拼接點(diǎn)位置相差較遠(yuǎn)的現(xiàn)象,這樣拼接后有時(shí)因上下行之間灰度差異較大而造成新的接縫。為避免這類現(xiàn)象發(fā)生,不僅要考慮相鄰拼接點(diǎn)的灰度值差異,而且還要考慮相鄰拼接點(diǎn)的位置不能太遠(yuǎn)。這樣就引進(jìn)了一個(gè)闌值T
,把選擇最佳拼接點(diǎn)的范圍限制在這個(gè)闌值內(nèi)。除第一行按灰度值差異最小的原則處理外,其他各行的拼接點(diǎn)從一個(gè)選定區(qū)域中選取:即與上一行所選拼接點(diǎn)同列的點(diǎn)及以該點(diǎn)為中心左右寬度為T
的區(qū)域中的點(diǎn)。在這個(gè)區(qū)域中選取一個(gè)最佳拼接點(diǎn)。選出每行的拼接點(diǎn)后連接成一條拼接線,可想而知,這條拼接線可能是條折線。這樣,由于各行都是選擇規(guī)定鄰域內(nèi)灰度差異最小的點(diǎn)作為拼接點(diǎn),接縫現(xiàn)象就會(huì)得到很大的改觀。同時(shí),T
的值又不能選取得太大,應(yīng)在1 一5
之間選取為佳。找出最佳拼接縫后,按前面所述的加權(quán)平滑對(duì)重疊區(qū)域再進(jìn)行過渡,得到的圖像質(zhì)量有很大改觀。
總結(jié)
以上是生活随笔為你收集整理的matlab将二值图像与原图重叠_图像处理matlab及图像融合图像镶嵌图像拼接的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: chrome webdriver_(最新
- 下一篇: 马斯克遭遇“史上最晦气一周”:特斯拉、S