MATLAB数字图像处理详细总结
前言
給一個算法如何寫程序https://blog.csdn.net/baidu_38205880/article/details/80241655先在網(wǎng)上找一些參考再寫
算法的一般步驟自頂向下,考慮輸入輸出,有點像信號中的響應(yīng)的思想,還要考慮數(shù)據(jù)結(jié)構(gòu),特殊輸入,增加程序的健壯性,
下面是數(shù)字圖像處理matlb方面的知識,看例子是很快理解知識點的一種方案,具體都要實現(xiàn)什么功能,可以做分解,然后每一步都用流程圖實現(xiàn),最后編寫代碼
使用說明
本文參照的圖書MATLAB圖像處理實例詳解,鏈接地址:https://pan.baidu.com/s/1uUBqJNdWpzTZ21xLZnFMRg
提取碼:3hpc,本文是做圖像處理很好輔助博文,具體使用方法是先用ctrl+F來搜索需要處理的函數(shù)名稱,找到之后再MATLAB中輸入函數(shù)按F1鍵獲得函數(shù)幫助,就可以使用函數(shù)了。
目錄
前言
使用說明
一,MATLAB基礎(chǔ)
1.1矩陣的算術(shù)運算
1.2判斷循環(huán)
1.3MATLAB繪圖
1.3.1二維圖形繪制
二,MATLAB圖像處理基礎(chǔ)
2.1圖像類型的轉(zhuǎn)換
2.2文件信息的讀取保存
三,數(shù)字圖像的點運算
3.1圖像點運算
3.2圖像的領(lǐng)域操作
四,圖像增強
4.1空域濾波
4.2頻域濾波
五,圖像復(fù)原技術(shù)
5.1空域濾波復(fù)原
5.2圖像復(fù)原
六,圖像分割
六,圖像變換技術(shù)
七,彩色圖像坐標(biāo)變換
八,圖像壓縮編碼
九,圖像特征分析
十,圖像形狀特征
10.1形狀特征描述
10.2形態(tài)學(xué)數(shù)字圖像處理
十一,小波變換
十二,Simulink數(shù)字圖像處理
一,MATLAB基礎(chǔ)
按下Tab命令可以出現(xiàn)提示,
二進制圖像函數(shù),im2bw();單精度表示式single,雙精度是double,查看變量的字節(jié)空間大小whos命令,注意普通數(shù)組[],細(xì)胞數(shù)組{},函數(shù)句柄是一個可調(diào)用的MATLAB函數(shù)的關(guān)聯(lián),通過句柄可以調(diào)用任意函數(shù)用@fhandle創(chuàng)建句柄>> fhandle=@sin,>> y1=fhandle(2*pi),y3=sin(2*pi);利用struct()函數(shù)創(chuàng)建結(jié)構(gòu)體
>> student=struct('name',{'liming','nnn'},'number',{'2012','200'}),也可以stu(2).name='mm';
stu(2).number='11'來建立結(jié)構(gòu)體
細(xì)胞數(shù)字作為MATLAB特有的一種數(shù)據(jù)類型,組成它的元素是細(xì)胞,細(xì)胞用來存儲不同類型數(shù)據(jù)單元,細(xì)胞數(shù)組的建立可以用直接賦值法和cell()函數(shù),語句后面有冒號就是先不執(zhí)行,沒有冒號就是直接執(zhí)行cellplot(student)顯示細(xì)胞數(shù)組的結(jié)構(gòu),
1.1矩陣的算術(shù)運算
對角矩陣eye(3),魔方矩陣magic(3),點乘.*,乘*,矩陣比較大小本質(zhì)上也是一個一個的比返回的結(jié)構(gòu)也是矩陣,就是對應(yīng)元素是0,表示假,1表示真
>> A=[1 2 3;2 5 6];
>> B=[2 2 3;27 8 8];
>> cl=A<B
cl =
? 2×3 logical 數(shù)組
? ?1 ? 0 ? 0
? ?1 ? 1 ? 1
邏輯運算異或xor(A,B)需要維數(shù)相同,運算符的優(yōu)先級,括號運算最高,非運算的優(yōu)先級也比較高,點乘高于乘,邏輯的其它運算優(yōu)先級最低
矩陣:創(chuàng)建一個行矩陣可以有逗號或者空格來分隔每一個元素,行與行之間是用“;”,行列之間是用逗號,創(chuàng)建多行矩陣,行與行之間用分號來分隔,常用的特殊矩陣函數(shù)比如ones(n),n是維度,見書的49頁
>> a=[1 2 3];
>> b=[1,2,3]
矩陣的操作[A B]表示矩陣橫向合并,[A;B]表示縱向合并,用([x],[y]);來表示提取矩陣([1 3],[2 3]),冒號在提取這部分的作用
[1:3]表示1到3,[:]表示省略,不提取,det()求矩陣行列式的值,transpose()求轉(zhuǎn)置矩陣,求逆矩陣inv(),滿秩的方陣才有逆矩陣,在MATLAB中非滿秩的方陣也可以求逆矩陣,叫偽逆矩陣pinv(),求矩陣的秩可以用rank()函數(shù),秩就是矩陣中非零元素階次的最大值,ans是默認(rèn)的一個變量;
MATLAB控制語句for,while,if,for 變量=初始:增量:終值,增量省略是默認(rèn)是1,比如for a=1:6,每一層for循環(huán)都以for開始end結(jié)束,給矩陣賦值要現(xiàn)有矩陣,比如可以用特殊的值創(chuàng)建矩陣,之后在改變,和我們之前c的不同if在于沒有括號,需要加end結(jié)束循環(huán),while(循環(huán)條件)? ?end
>> clear
>> for a=1:5
x=a+a;
end
>>?
1.2判斷循環(huán)
選擇結(jié)構(gòu)if,swich,try,選擇結(jié)構(gòu)的作用是根據(jù)指點的條件是否可以滿足,決定程序的流向,向if,try,for這樣的關(guān)鍵字后都不用加";"
if 表達式
語句1;
else
語句二;
end
swich 表達式
case? 表達式1
語句1
case 表達式2
語句2
otherwise
語句3
end
try是一個錯誤捕捉語句,程序先執(zhí)行語句一沒有錯誤就跳出try,有錯誤就執(zhí)行語句二,
try?
語句1
catch
語句2
end
A=imread('D:\logi\IMG20160402201058','jpg');
catch
A=imread('D:\logi\IMG20160402201059','jpg');
end
>> imshow(A)
影響程序流程走向的程序,稱為流程控制語句,break,continue,return,break是終止的是循環(huán)體,而continue結(jié)束的是一次循環(huán),break可以跳出本次循環(huán),執(zhí)行語句end的下一條語句,continue語句可以結(jié)束本次循環(huán),跳過其后的循環(huán),執(zhí)行下一次循環(huán),pause語句:其調(diào)用格式為pause,則暫停程序運行,按任意鍵繼續(xù),還有一種調(diào)用格式為pause(n),就是程序暫停n秒后執(zhí)行,調(diào)用格式為pause on /off,就是允許或禁止之后的程序執(zhí)行,
M文件就是 編寫函數(shù)的,編寫好之后可以在命令窗口調(diào)用函數(shù),M文件就是一系列命令的集合,M文件分為腳本文件和函數(shù)文件腳本文件不接受參數(shù)輸入,也不返回輸出參數(shù),文件執(zhí)行過程中產(chǎn)生的所有變量都存儲在工作空間中,函數(shù)文件可以接受參數(shù)輸入,也有返回值,程序執(zhí)行完局部變量就會釋放不會存儲在工作空間中,從新建的地方建立腳本或函數(shù)文件,只有輸入?yún)?shù)和輸出參數(shù)會存儲在工作空間,而腳本文件只要m文件中變量在工作空間中都可以查到。
M文件的調(diào)試,在有疑問的地方添加變量輸出就,查看是否有錯,還可以查詢工作空間中的變量,可以利用工具的Debug,在matlab中用%號來表示注釋,腳本文件的每一行結(jié)尾都要有“;”,
function y%輸出參數(shù)%=average%函數(shù)名%(x%輸入?yún)?shù)%)
y=sum(x)/length(x);
end
1.3MATLAB繪圖
MATLAB繪圖步驟:
1)數(shù)據(jù)準(zhǔn)備 確定變量的函數(shù)關(guān)系及取值范圍,明確橫坐標(biāo)變量和縱坐標(biāo)變量,計算出變量數(shù)據(jù),
2)設(shè)置圖形窗口位置在指定的位置創(chuàng)建新的繪圖窗口,缺省是打開figureN01
3)繪制圖形,生產(chǎn)圖形文件:創(chuàng)建坐標(biāo)軸,調(diào)用繪圖函數(shù),設(shè)置圖形中線型,色彩,數(shù)據(jù)點形等屬性
4)圖形的修飾:為了突出圖形顯示結(jié)果,可對生成的圖形文件做進一步調(diào)整如設(shè)置坐標(biāo)軸的范圍和刻度,圖形注釋(圖名,坐標(biāo)名文字說明等
5)保存和導(dǎo)出圖形,按指定文件格式保存圖形導(dǎo)出圖形,以方便后續(xù)使用
1.3.1二維圖形繪制
使用函數(shù)plot(),用subplot()來分割函數(shù),圖形的修飾可以在plot()函數(shù)中加參數(shù),具體可以參考68頁,plot(x,y,‘b’),t圖形的坐標(biāo)軸限制函數(shù)anxis([xmin xmax ymin ymax]),對橫軸坐標(biāo)的標(biāo)注xlable('string'),標(biāo)題使用title(‘string’)利用gtext('sting')來用鼠標(biāo)給函數(shù)曲線命名,也就是說用gtext('string'),產(chǎn)生文字用鼠標(biāo)拖拽在曲線上,用grid函數(shù)給圖像加?xùn)鸥?/p>
>> clear
>> x=0:0.02:2*pi;
>> y=sin(x);
>> plot(x,y);
>> plot(x,y,'b')
>> plot(x,y,'g')
>> gtext('sinx')
>> grid
1.3.2直方圖繪制
使用函數(shù)hist(y,n)將Y的值等分為n段,平均的分在x軸上,然后統(tǒng)計每一段出現(xiàn)的頻率,柱狀圖用bar(x,y)來畫,
matlab中有幾種獲取幫助的途徑
第一種,也是最有效的就是選中函數(shù)名,按F1直接查看該函數(shù)的幫助文檔;
?第二種,就是通過命令窗口中(help 函數(shù)名)來獲取該函數(shù)的幫助文檔;
?第三種,就是通過工具欄中的幫助菜單來輸入函數(shù)名,獲取該函數(shù)的幫助文檔;
?第四種,就是去matlab官網(wǎng)MathWorks查找函數(shù)的幫助文檔
取值是通過函數(shù)來實現(xiàn),具體可以看28頁,在matlab中A既可以是變量,也可以是矩陣,一般習(xí)慣用小寫表示變量,大寫表示矩陣,
二,MATLAB圖像處理基礎(chǔ)
1)主要介紹matlab圖像處理工具箱可以從help--圖形處理工具箱,還可以從左下角start打開;
2.1圖像類型的轉(zhuǎn)換
圖像類型的轉(zhuǎn)換,可以用對應(yīng)的函數(shù)來完成,圖像的轉(zhuǎn)換如下圖3.11所示RGB轉(zhuǎn)為灰度函數(shù)RGB2gray(),其他函數(shù)可以參照P80頁灰度圖像轉(zhuǎn)為索引圖像,灰度圖像是一個二維數(shù)組矩陣,而索引圖像不僅包括一個二維的數(shù)組矩陣,還包括一個Mx3的顏色映射表,所以要將灰度圖像轉(zhuǎn)換為索引圖像,則必須生產(chǎn)對應(yīng)的顏色映射表,調(diào)用函數(shù)格式為[x,map]=gray2ind(I,n)就是將灰度圖像I轉(zhuǎn)為索引圖像,n是灰度級數(shù)默認(rèn)64,[x,map]對應(yīng)轉(zhuǎn)換后的索引圖像,map中對應(yīng)的顏色值為顏色圖gray(n)中的顏色值,索引圖像中有顏色,飽和度,亮度信息,灰度圖像只保留了亮度信息,將索引圖像轉(zhuǎn)為RGB圖像,[x,map]指向索引圖像,將RGB指向轉(zhuǎn)換過程中形成一份三維數(shù)組,然后將索引圖像的顏色映射表中的顏色值賦值給三維數(shù)組,,二值圖像的轉(zhuǎn)換,如果圖像轉(zhuǎn)換前不是灰度圖像,要先轉(zhuǎn)為灰度圖像,然后再通過閾值法把灰度圖像轉(zhuǎn)化為二值圖像;一個數(shù)據(jù)矩陣就相當(dāng)于一幅數(shù)字圖像,只是在數(shù)字圖像中對應(yīng)的數(shù)組元素必須在一定的取值范圍內(nèi)可以調(diào)用mat2gray()進行轉(zhuǎn)化,格式為I=mat2gray(X,[xmin,xmax]),xmin對應(yīng)灰度值0,即黑色,xmax對應(yīng)灰度值為1,即白色,具體可看P84,索引圖像和RGB圖像的構(gòu)成比較類似,索引圖像是一個數(shù)組和一個映射表先找到數(shù)組中的值,數(shù)組中的值對應(yīng)一個map值,map值中有顏色信息,而RGB是三個分量的顏色合成色彩信息
?
>> map=colorcube(128);%指定顏色的數(shù)目
>> x=rgb2ind(RGB,map);
>> imshow(x,map)%顯示索引圖像的
2.2文件信息的讀取保存
文件信息的讀取,用imfinfo()來讀取文件信息,調(diào)用格式為INFO=imfinfo('filename','fmt'),或INFO=imfinfo('filename.fmt')filename是文件名,fmt是文件類型名;圖像文件的讀取用imread(),彩色圖像和灰度圖像調(diào)用格式為I=imread('filename','fmt')或I=imread('filename.fmt'),索引圖像[X,map]=imread('filename','fmt'),還有網(wǎng)絡(luò)圖片的讀取,具體參照p93;特殊文件格式的讀寫,比如GIF[...]=imread(...,'frames',idx),idx是圖像的編號,
>> [I,map]=imread('D:\logi\GIF1.gif',2);
>> imshow(I,map)
圖像文件的保存,用函數(shù)imwrite(),大體使用方法和imread()類似,調(diào)用格式為imwrite(I,'filename','fmt'),索引圖像的保存為imwrite(X,map,filename','fmt')
圖像文件的顯示imtool()工具箱圖像瀏覽器或imshow()通用的常用的;像素信息的顯示函數(shù)impixel()可以返回選中像素或像素集數(shù)據(jù),可以直接將像素坐標(biāo)作為該函數(shù)的輸入?yún)?shù);函數(shù)impixelinfo(),>> pixels1=impixel(I)用鼠標(biāo)選定圖像上的點然后顯示該點的值,選完之后按Enter結(jié)束,impixel()還可以用來顯示特定的像素值不用鼠標(biāo)impixel(I,100,400),100,400分別為橫縱坐標(biāo);函數(shù)impixelinfo()就是用這個函數(shù)寫完之后顯示了圖像,你就可以在上面用鼠標(biāo)點,點了之后就會執(zhí)行在圖像的上方或者下方直接顯示該點的像素值
視頻文件的讀取,主要函數(shù)有aviinfo()和函數(shù)aviread()來讀取視頻文件信息及視頻流,新出現(xiàn)的讀取函數(shù)有mfileinfo(),mmreader()和函數(shù)read();視頻文件的播放用函數(shù)movie(),movie(M),播放M一次,M是一個結(jié)構(gòu)體包含cData和Colormap,movie(M,N)就是播放視頻M,N次,movie(M,N,FPS),FPS是幀速率,默認(rèn)是12幀/秒
三,數(shù)字圖像的點運算
3.1圖像點運算
圖像點運算,點運算又稱對比度增強,對比度拉伸或灰度變換,是對通過圖像中一個像素值,進行運算的圖像處理方式B(x,y)=f(A(x,y)),J = imadjust(I,[low_in; high_in],[low_out; high_out],gamma)
將圖像 I 中的亮度值映射到 J 中的新值,其中 gamma指定描述值I和值J關(guān)系的曲線形狀。如果gamma小于1,此映射偏重更高數(shù)值(明亮)輸出,如果gamma大于1,此映射偏重更低數(shù)值(灰暗)輸出,如果省略此參數(shù),默認(rèn)為(線性映射)。? [M,N]=size(J); ? ? ? ? ?%獲得灰度圖像數(shù)據(jù)J的行列數(shù)M,N,用imadjust()直接就對RGB圖像進行操作,而利用分段線性處理和對數(shù)函數(shù)處理,都要先把RGB圖像轉(zhuǎn)為灰度圖像,分段的時候是對坐標(biāo)分段,也可以根據(jù)灰度值進行分段 圖像的空間變換,在MATLAB中圖像處理工具箱提供一個專門的函數(shù)intransform(),用戶可以定義參數(shù)實現(xiàn)多種類型的空間變換,包括放射變換(如平移,縮放,旋轉(zhuǎn),剪切),還有醫(yī)學(xué)上常用的投影變換,B=imtransform(A,TFORM),TFORM是函數(shù)maketform()返回的一個結(jié)構(gòu)體,調(diào)用格式如下圖一,custom可以實現(xiàn)投影變換和放射變換,放射性變換中原圖像中某個像素點坐標(biāo)(x,y)和變換后該像素點坐標(biāo)(x',y'),關(guān)系如下圖二,其實這種變換就是矩陣中的坐標(biāo)變換,變換前的坐標(biāo)乘上一個矩陣得到變換后的坐標(biāo)(x',y') 圖一? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖二? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖三 主要步驟就是生產(chǎn)結(jié)構(gòu)體,調(diào)用結(jié)構(gòu)體imtransform(),需要maketform()函數(shù)的配合,size(1,2)可以得到函數(shù)的列數(shù),技術(shù)數(shù)組的大小,xData,YData就是對X,Y的數(shù)據(jù)范圍進行限制,size(I,2)表示取出I中列數(shù),size(I,1)取出I中的行數(shù),fillvalue是對矩陣的填充 >> Ia=maketform('affine',[cosd(30) -sind(30) 0;sind(30) cosd(30) 0;0 0 1]);>> Ib=imtransform(I,Ia); 平移后的溢出J=ones(M,N,G); 就是不考慮,J=ones(M+abs(a),N+abs(b),G); ?%初始化新圖像矩陣全為1,大小根據(jù)考慮x軸和y軸的平移范圍,也就是說平移后的圖形如果不對矩陣進行擴大,圖像是不能完全顯示的
3.2圖像的領(lǐng)域操作
圖像的領(lǐng)域操作,在MATLAB中提供了幾個實現(xiàn)領(lǐng)域操作的函數(shù),用戶可以直接調(diào)用這些函數(shù),實現(xiàn)各種操作,通用滑動領(lǐng)域操作函數(shù)nlfiler(),列方向領(lǐng)域操作函數(shù)colfilt(),分離領(lǐng)域操作函數(shù)blockproc(),@符號主要使用于匿名函數(shù),充當(dāng)函數(shù)句柄,如下圖所示:比如沒有In函數(shù)但是有l(wèi)og函數(shù)我們可以使用ln=@(x)log(x)就可以調(diào)用log了有點像給函數(shù)重新命名,X是參數(shù),blockproc()就是 把函數(shù) 分為一小塊一小塊的,調(diào)用格式為blockproc(A,[M,N],fun),加入fun這個句柄就是說在分離的同時可以再做旋轉(zhuǎn)等, 圖像的區(qū)域選取,可以找到我們感興趣的區(qū)域進行相關(guān)操作,MATLAB也提供了一些圖像區(qū)域選擇和操作函數(shù),如多邊形區(qū)域選擇函數(shù)roipoly(),是基于區(qū)域,roipoly(I,c,r)坐標(biāo)選擇灰度ROI區(qū)域選擇函數(shù)roicolor(),roicolor(I,low,high);根據(jù)灰度的范圍進行選取,區(qū)域填充函數(shù)roifill(),就是選擇出來的區(qū)域,涂上一種顏色,區(qū)域濾波函數(shù)roifilt2(),介紹一個掩模的概念:就是用一個有洞的紙張擋住圖像所看到的部分,h = fspecial(type),是濾波函數(shù)四,圖像增強
圖像增強空間域也叫對比度增強,灰度增強只改變像素點的灰度值,并逐點進行,和周圍的其他像素點無關(guān),為了進行灰度變化首先要獲得灰度直方圖在MATLAB中可以使用imhist(I)函數(shù)來獲得,彩色圖像也可以做直方圖,只不過是對三個分量RGB分別做灰度直方圖,直方圖均衡化用的是histeq(I),直方圖均衡化使得圖像的色彩分布更加的均勻,不會出現(xiàn)過明或者是過暗的情況,圖像的標(biāo)準(zhǔn)差,可以采用std2()計算矩陣的標(biāo)準(zhǔn)差,std()計算向量的標(biāo)準(zhǔn)差,標(biāo)準(zhǔn)差越大,圖像的對比度越大,mean()平均值函數(shù),中值濾波函數(shù)medfilt2(I),計算兩幅大小相同的圖像的相關(guān)系數(shù)用,corr2(I,J);灰度圖像的等高線就是灰度相同的點連接成的,利用imcontour(I,n),n是繪制的等高線的數(shù)量,4.1空域濾波
空域濾波:線性平均濾波是一種最常用的線性空域濾波,圖像的邊緣屬于高頻成分,常用的模板有3x3的,K=imfilter(J, h),表示J卷積H的意思,可以用這個函數(shù)或者conv2(J,H)也可以,加噪聲的函數(shù)imnoise(I, 'salt & pepper', 0.02);順序統(tǒng)計濾波函數(shù)ordfilt2(I, 1, true(5));就是有點像領(lǐng)域濾波的感覺就是用領(lǐng)域內(nèi)的第一個像素代替目標(biāo)像素,true(5)表示用5*5的模板,維納自適應(yīng)濾波函數(shù)是wiener2(J, [5 5]);4.2頻域濾波
頻域濾波圖像增強首先是通過傅里葉變換將圖像從空間域變換到頻率域,然后反變換回去,頻域內(nèi)的圖像增強有低通濾波,高通濾波和同態(tài)濾波;低通去除噪聲,但是也會使得邊緣模糊,matlab里面的字母是分大小寫的,Y = fftshift(X);平移零頻分量,然后繪制以零為中心的功率,也就是零點跑到中間去了,Y = fft2(X,m,n) 將截斷 X 或用尾隨零填充 X,以便在計算變換之前形成 m×n 矩陣。Y 是 m×n 矩陣。如果 X 是一個多維數(shù)組,fft2 將根據(jù) m 和 n 決定 X 的前兩個維度的形狀;[X,Y] =?meshgrid(x,y):輸出X的每一行的數(shù)值都是復(fù)制的x的值;輸出Y的每一列的數(shù)值都是復(fù)制的y的值,meshgrid就是產(chǎn)生這樣兩個矩陣,時域卷積頻域乘積K=J.*H;,c=b(1:size(b,1),1:size(b,2))表示取出b的這些行和列上的元素,賦值給c,最后一個值不超過size(b,1)的一個向量,size(b,1)是b矩陣的行數(shù),表示求距離函數(shù)D=sqrt(U.^2+V.^2);濾波器的類型分為巴特沃斯濾波器和高斯濾波器,帶阻濾波器是用來抑制距離頻率中心一定距離的一個圓形區(qū)域的頻率,可以用來消除一定頻率范圍內(nèi)的噪聲,同態(tài)濾波是一種特殊的濾波技術(shù),可用于壓縮圖像動態(tài)范圍,且增強對比度,濾波窗口越大圖像邊緣越模糊,圖像去燥效果越好五,圖像復(fù)原技術(shù)
5.1空域濾波復(fù)原
圖像復(fù)原技術(shù),可以通過imnoise()給圖像添加噪聲,調(diào)用格式為imnoise(I,type,parameters),parameters不同噪聲的參數(shù)不同,如果是椒鹽噪聲則表示,椒鹽噪聲的密度大小,高斯噪聲則表示均值和方差,空域濾波方法,首先是均值濾波包括算術(shù)均值濾波和幾何均值濾波,順序統(tǒng)計濾波包括中值濾波,中值濾波能夠很好的保留圖像的邊緣,非常適合去除椒鹽噪聲,效果優(yōu)于均值濾波,順序統(tǒng)計濾波還包括最大值,最小值濾波,最大值濾波能夠去除椒鹽噪聲,但是會從黑色物體的邊緣去除一些黑色像素,最小值濾波類似,會從白色物體的邊緣去除一些白色像素,J=medfilt2(I, [m, n]);二維中值濾波,采用的窗口大小是mxn的,B=ordfilt2(A,order,domain),domain=[0 1 1 0; 1 1 1 1; 1 1 1 1; 0 1 1 0];J=ordfilt2(I, 6, domain);domain是一個模板,order是去除domain中的第6個像素值作為該點像素值;自適應(yīng)濾波wiener2()可以根據(jù)圖像中的噪聲進行濾波,還可以對噪聲進行估計,該函數(shù)根據(jù)圖像的局部方差來調(diào)整濾波器的輸出,調(diào)用格式為J=wiener2(i,[m,n],noise),采用的窗口為mxn,如果不指定窗口大小,默認(rèn)是3x3的,輸入噪聲noise為噪聲的能量,返還的是圖像J,K=imcrop(I, [100, 100, 1024, 1024])是裁剪圖像的函數(shù),意思就是從(100,100)的起始坐標(biāo)開始,裁剪出1024x1024的圖像,[K, noise]=wiener2(J, [5, 5]);采用維納自適應(yīng)濾波,返回圖像K和圖像的噪聲估計。
5.2圖像復(fù)原
圖像復(fù)原:1,逆濾波復(fù)原,通過傅里葉變換實現(xiàn),最后用傅里葉反變換,2,自適應(yīng)濾波優(yōu)點是復(fù)原效果好,計算量較低,PSF=fspecial('motion', LEN, THETA);該函數(shù)就是產(chǎn)生濾波模板的,比如產(chǎn)生拉普拉斯算子模板,K=deconvwnr(J, PSF, NSR);這是維納自適應(yīng)濾波函數(shù),NSR是信噪比3,約束最小二乘法復(fù)原,采用函數(shù)deconcreg()進行圖像的約束最小二乘法復(fù)原,調(diào)用格式是J=deconvreg(I,PSF),lucy復(fù)原,K=deconvlucy(J, PSF, 5);5是迭代次數(shù),迭代次數(shù)越多,復(fù)原效果越好;前面的復(fù)原方法都需要預(yù)先知道退化圖像的PSF,但在實際應(yīng)用中,經(jīng)常是不知道PSF的情況下對圖像進行復(fù)原,下面介紹盲解卷積復(fù)原,對PSF進行估計,[K, PSF2]=deconvblind(J, INITPSF, 30); INITPSF為輸入的PSF估計值,PSF2為真實的PSF的一個估計值,fspecial函數(shù)用于創(chuàng)建預(yù)定義的濾波算子,可以用來產(chǎn)生噪聲模板,或者使用imnoise來直接添加噪聲,會與imfilter搭配使用,g = imfilter(f, w, filtering_mode, boundary_options, size_options)其中,f為輸入圖像,w為濾波掩模,g為濾波后圖像。filtering_mode用于指定在濾波過程中是使用“相關(guān)”還是“卷積”。boundary_options用于處理邊界充零問題,邊界的大小由濾波器的大小確定。具體參數(shù)選項見下表:
????????????????????????? 圖一?????????????????????????????????????????????????????????????????????????????????????????????????????????? 圖二
從定義式中可以看到,互相關(guān)函數(shù)和卷積運算類似,也是兩個序列滑動相乘,但是區(qū)別在于:互相關(guān)的兩個序列都不翻轉(zhuǎn),直接滑動相乘,求和;卷積的其中一個序列需要先翻轉(zhuǎn),然后滑動相乘,求和,如果使用算子來模糊圖像,需要算子和圖像混合后,再使用濾波函數(shù)
六,圖像分割
圖像分割主要包括邊緣分割技術(shù),閾值分割技術(shù)和區(qū)域分割技術(shù),邊緣分割和我們之前的邊緣檢測有些類似,常用的有微分算子sobel算子,Roberts算子等,對于圖像中的間斷點,常用的檢測模板為如圖二所示,線段的檢測用的模板也如上圖二所示其中第一個是用來檢測0度的直線,第二個模板是用來檢測45度的直線,Roberts算子J=edge(I, 'roberts');表示采用roberts算子進行邊緣檢測,[J, thresh]=edge(I, 'roberts', 35/255);35/255表示所使用的閾值,thresh表示返回的圖像分割閾值,這個閾值表示的是圖像歸一化以后的閾值,其它的算子類似都是直接在后面改相應(yīng)的名稱,[J, thresh]=edge(I, 'prewitt', [], 'both');'both'表示水平和垂直都檢測,采用edge()進行邊緣提取得到的圖像為二值圖像,只有黑白兩種顏色 []表示占位符,canny算子用來抑制虛假邊緣,因為它不依賴邊緣方向,canny算子的調(diào)用也是通過edge()函數(shù)來實現(xiàn),調(diào)用格式和soble算子一致;LOG算子就是拉普拉斯算子,是一種不依賴邊緣方向的二階微分算子,先利用高斯函數(shù)進行平滑,然后再利用二階導(dǎo)數(shù)過零點的性質(zhì),去檢測邊緣,拉普拉斯算子就是一個兩個方向的二階偏導(dǎo)數(shù)之和,都是采用edge函數(shù);閾值分割技術(shù)通過圖像的直方圖來選取合適的閾值,利用if,else來實現(xiàn),全局閾值通常都選取波谷的值imhist(i,n)n為指定灰度級顯示直方圖,[width, height]=size(I);得到圖像的行和列,也可以使用im2bw(I)來進行分割,也就是灰度圖像轉(zhuǎn)為二值圖像,OTSU閾值分割,它的基本原理就是選取一個最佳的閾值將圖像分割為兩部分,使兩部分的方差最大,具有最大的分離性,最佳閾值獲取函數(shù)是J=graythresh(I),下面也是可以使用if,else來實現(xiàn)或者通過BW?= im2bw(I,level),level就是閾值,迭代式閾值分割,獲取圖像中像素的最大,最小值min(I(:)),max(I(:));區(qū)域生長法是一種將具有相似性質(zhì)的像素集合起來構(gòu)成區(qū)域,區(qū)域增長法根據(jù)區(qū)域內(nèi)像素的相似性質(zhì)來聚集像素點的方法,區(qū)域內(nèi)像素的相似度量可以包括平均灰度值,紋理,顏色等信息,從初始區(qū)域開始,將相鄰的具有同樣性質(zhì)的像素或其它區(qū)域歸并到目前的區(qū)域中,從而逐步增長區(qū)域,直至沒有合并的為止;還有另外一種分水嶺,J=watershed(I, 8);參數(shù)里面的8代表8連通,在灰度直方圖中的山脊稱為分水嶺,I=im2double(I) %圖像灰度值歸一化到[0,1]之間
六,圖像變換技術(shù)
圖像變換技術(shù)時間域就是空間域:圖像Radon變換,在matlab中采用函數(shù)radon()進行圖像的Radon變換,函數(shù)調(diào)用格式為R=radon(I,theta);thera為角度,R為圖像I在theta方向上的變換值,[R, xp]=radon(I, [0, 45]);xp為對應(yīng)的坐標(biāo)值,表示在0度和45度方向進行radon變換,x=xp(row),這表示獲取位置,angel=theta(column)這表示獲取角度,radon變換可以用來檢測直線,就是radon變換中的最大值就對應(yīng)的圖像中最明顯的直線,用函數(shù)iradon()來計算radon的反變換k=iradon(R,thera),R為radon變換矩陣,thera為角度;傅里葉變換通過函數(shù)fft()進行一維離散傅里葉變換,通過函數(shù)ifft()進行一維離散傅里葉反變換,二維的采用的是fft2(),函數(shù)的調(diào)用格式為Y=fft(X),或者Y=fft2(x,m,n)采用快速傅里葉算法,計算矩陣大小為二維離散傅里葉變換,傅里葉變換的一個意義,在頻譜上是亮暗不一的亮點,如果頻譜中暗的點數(shù)更多,那么實際圖像是比較柔和的,如果亮點比較多,說明圖像比價尖銳,通過函數(shù)fft2()得到的頻譜圖,坐標(biāo)原點位于圖像的左上角,可以通過函數(shù)fftshift(X),把坐標(biāo)原點移至圖像的中央,坐標(biāo)原點是低頻,向外是高頻,可以對圖像在頻域進行濾波和增強,real(L)是復(fù)數(shù)的實部,J=fftshift(fft2(I));?L1=ifft2(ifftshift(K1));正變換的時候是先變換再平移,而反變換的時候是先平移后變換;圖像離散余弦變換,實際上是傅里葉變換的實數(shù)部分,離散余弦變換DCT,有一個重要性質(zhì)就是大部分可視化的信息都集中在少數(shù)的變換系數(shù)上,因此離散余弦變換經(jīng)常用于圖像壓縮,例如國際壓縮標(biāo)準(zhǔn)JPEG格式就采用了離散余弦變換,在傅里葉變換的過程中,如果被展開的函數(shù)是實偶函數(shù),那么其傅里葉變換中只包含余弦項,基于傅里葉變換的這一特點,人們提出了離散余弦變換,DCT變換先將圖像函數(shù)變換成偶函數(shù)的形式,再對其進行二維離散傅里葉變換,DCT變換可以看做一種簡化的傅里葉變換,采用dct()進行一維離散余弦變換,采用idct()進行一維離散余弦反變換,二維的使用dct2(A),還可以用B=dct2(A,[m,n])該函數(shù)計算圖像矩陣A的二維離散余弦變換,返回值為B,通過對A補0或裁剪,使得B的大小為m行n列,P=dctmtx(M);這就是離散余弦變換矩陣,離散余弦變換,變換得到的是離散余弦變換系數(shù),離散余弦變換的一個重要用途就是用于圖像的數(shù)據(jù)壓縮,介紹圖像數(shù)據(jù)壓縮之前,首先介紹圖像的塊操作函數(shù)blkproc(),調(diào)用格式如下B=blkproc(A,[m,n],fun),表示對矩陣A進行塊操作,對塊的操作函數(shù)為fun,返回值的大小A和B相同,colormap gray;表示圖像顯示的顏色,T'是T 的轉(zhuǎn)置,B=blkproc(I,[8,8],'P1*x*P2',T,T');% x就是每一個分成的8*8大小的塊,P1*x*P2相當(dāng)于像素塊的處理函數(shù),p1=T p2=T’,也就是fun=p1*x*p2'=T*x*T'的功能是進行離散余弦變換,B2 = blkproc(B,[8 8],'P1.*x',mask); %舍棄每個塊中的高頻系數(shù),達到圖像壓縮的目的,I2=blkproc(B2,[8,8],'P1*x*P2',T',T); ?%進行反余弦變換,得到壓縮后的圖象,正變換還是反變換關(guān)鍵是看T'是在前還是在后,在前反變換;hadamard變換沒有直接的變換函數(shù)但是可以用hadamard(n),n是階數(shù)產(chǎn)生hadamard變換矩陣,也可以對圖像進行hadamard變換H1=hadamard(h1);H2=hadamard(h2);J=H1*I*H2;hough變換用于檢測幾何形狀,[H, Theta, Rho]=hough(BW, 'RhoResolution', 0.5, 'ThetaResolution', 0.5);H為返回的hough變換矩陣,Theta為變換角度,rho為變換半徑,'RhoResolution', 0.5'RhoResolution'為名字,0.5是值,此外hough還有houghpeaks(),還有houghline();lines = houghlines(BW,theta,rho,peaks)表示在hough變換的基礎(chǔ)上檢測出線,y(:,1)中逗bai號前是行,逗號后du是列,冒號表示從幾到幾。所以y(:,1)表示第一列的所有元素,radon變換的顯示函數(shù)是imagesc(J);不是imshow(),如果要顯示fft2()的圖像,最好把圖像進行一下類型轉(zhuǎn)換double型轉(zhuǎn)為uint8()型,使用了ifft2()如果要顯示必須imshow(real(L2)),MATLAB圖像處理工具箱實現(xiàn)離散余弦變換有兩種方法:dct2和dctmtx(1)使用函數(shù)dct2,該函數(shù)用一個基于FFT的算法來提高當(dāng)輸入較大的方陣時的計算速度。(2)使用由dctmtx函數(shù)返回的DCT變換矩陣,這種方法較適合于較小的輸入方陣(例如8×8或16×16),imshow(A,[ ])
inshow(A,[ ])相當(dāng)于imshow(A,[min(A),max(A)])自動調(diào)整數(shù)據(jù)范圍以方便顯示
七,彩色圖像坐標(biāo)變換
彩色圖像坐標(biāo)變換,一種是面向硬件設(shè)備的彩色模型RGB,另外一種是面向視覺感知的彩色圖像模型例如HSV模型,HSV模型是通過色調(diào)、飽和度、亮度來描述彩色圖像,RGB是由紅、綠、藍三原色混合而成,不同模型之間可以進行轉(zhuǎn)化,RGB空間轉(zhuǎn)換到HSV空間,調(diào)用函數(shù)A=rgb2hsv(M),矩陣M的列分別表示紅色、綠色、藍色的強度,A的列分別表示色調(diào)、飽和度、亮度,H=HSV(:,:,1);%提取H矩陣,reshape(A,[2,3])?將?A?重構(gòu)為一個 2×3 矩陣,維度可以改變但是元素的個數(shù)是需要保持不變的,c = jet(m)?返回包含?m?種顏色的顏色圖,反過來也是一樣的hsv2rgb(H),RGB空間到y(tǒng)cbcr空間,調(diào)用函數(shù)K=rgb2ycbcr(RGB),RGB必須是一個mxnx3的矩陣,當(dāng)然也可以K=ycbcr2rgb(ycbcr)
八,圖像壓縮編碼
圖像壓縮編碼,編碼效率用編碼參數(shù)來衡量數(shù)字圖像的熵,圖像的平均碼長,編碼效率,每秒所需的傳輸比特數(shù)為bps=mxnxR/兩幀時間間隔,霍夫曼編碼是一種把概率大的信息符號以短字長編碼,概率小的以長字編碼,這種編碼形式的平均碼子長度最短,具體的方法另外一篇文章中有仔細(xì)的說明,sort()是排序函數(shù),Y = floor(X)四舍五入函數(shù),看函數(shù)都是從最核心的部分開始看代碼,因為其它的變量,或者循環(huán)之類都是為,最核心代碼服務(wù)的,[dict,avglen] = huffmandict(symbols,p);%產(chǎn)生霍夫曼編碼詞典,返回編碼詞典dict和平均碼長avglen,編碼詞典就是說比如16編碼為001,15編碼為100,以后在數(shù)據(jù)中出現(xiàn)直接來字典里面找,huffmanenco(actualsig,dict); %利用dict對actuals來編碼,其結(jié)果存放在compress中,matlab的數(shù)據(jù)類型比如uint8直接決定了數(shù)據(jù)的范圍2^8,可以直接在屏幕上disp('hello'),打印輸出,
九,圖像特征分析
圖像特征分析:顏色矩通常直接在RGB空間來計算,顏色分布信息主要集中在低階矩,一階矩就是均值,反映了每個顏色分量的平均強度用函數(shù)mean2(R),二階矩就是方差,即不均勻性std(std(R));???,三階矩是偏度,三階矩用定義,可用這些信息來辨識物體;許多圖像識別系統(tǒng)都采用顏色直方圖作為圖像的顏色特征,它所描述的是不同色彩在整幅圖像中所占的比例,不關(guān)心圖像顏色分布的統(tǒng)計特性,常用的顏色空間有RGB顏色空間和HSV空間,imhist(I(:,:,1))%顯示紅色分辨率下的直方圖,灰度直方圖的分布,如果都在左邊說明該分量主要在較暗的地方出現(xiàn),如果在最右邊說明,該分量主要集中在亮處,h = hsv(:, :, 1);%為色調(diào)h賦值,這個模型中顏色的參數(shù)分別是:色調(diào)(H)大概可以理解為圖像上有幾種顏色,飽和度(S)圖像的鮮艷程度,明度(V)圖像是亮還是暗,這些特征可以用來做圖像分割,比如分離花和葉子;紋理特征反映物品的質(zhì)地,比如粗糙度、光滑度、顆粒度,隨機性和規(guī)范性,衛(wèi)星遙感地表圖像的分析常采用紋理分析,這是因為地表的山脈、河流、森林、城市建筑等表現(xiàn)出不同的紋理,下面介紹幾種紋理特征的提取方法比如灰度差分統(tǒng)計,自相關(guān)函數(shù),灰度共生矩陣,還有就是基于頻譜特征的分析系,常用的紋理特征有平均值、對比度、熵、能量,灰度直方圖不能直接進行紋理分析,熵值越大圖形紋理越粗糙,平均值反映圖像的光滑度;自相關(guān)函數(shù)是用來描述圖像的粗糙度,小數(shù)值的紋理測度表示細(xì)紋理,大數(shù)值的紋理測度表示粗紋理,通常采用自相關(guān)函數(shù)作為紋理測度,mesh()函數(shù)用來畫三維圖像,光滑的自相關(guān)函數(shù)變化較小,粗糙的自相關(guān)函數(shù)變化較快,灰度共生矩陣是有函數(shù)的glcms = graycomatrix(I,Name,Value,...),glcm = graycomatrix(I,'Offset',[0 2]);? %圖像I的灰度共生矩陣,2表示當(dāng)前像素與鄰居的距離為2,offset為[0 2]表示角度為0為水平方向,要快速的看懂matlab函數(shù)就是描述前后注意,還要看例子的參數(shù)說明,灰度共生矩陣不直觀,常常需要二階統(tǒng)計量,matlab用stats = graycoprops(glcm,{'contrast','homogeneity'}),'contrast表示對比度,homogeneity同質(zhì)性,也就是說是對角線的緊密程度,里面的參數(shù)還可以是Correlation,Energy一個表示相關(guān),一個表示能量stats是一個結(jié)構(gòu)體,contrast是一個成員變量,具體參考p323;頻譜分析法用來在傅里葉變換處獲得空間不容易 獲得的紋理特征如周期,功率譜等,實際應(yīng)用中將頻譜轉(zhuǎn)換到極坐標(biāo)簡化為S(r,),確定r則S()是一維函數(shù)可以確定以原點為中心的圓上行為特征,給定可以得到從原點某方向上的放射行為,在數(shù)字圖像處理中通常把周期的變?yōu)榉侵芷谔幚?#xff0c;頻譜分析方法還有加伯變換Gabor(gabor)和小波變換具體可以參照P328。
十,圖像形狀特征
10.1形狀特征描述
形狀特征描述一般是在物體從圖像中分割出來以后進行分析,主要包括圖像的輪廓提取和區(qū)域劃分:先對輪廓進行描述在對邊界特征進行描述,鏈碼表示方法就是定好起點后,用4方向或者8方向來描述圖形,多變形近似,有三種方法1,基于最小周長的多邊形法即把線段拉直,還有兩種基于最小均方誤差的方法,直接坐標(biāo)轉(zhuǎn)為極坐標(biāo)[cita,r]=cart2pol(xp1,yp1);%直角坐標(biāo)轉(zhuǎn)換成極坐標(biāo),polar(cita,r);%畫出極坐標(biāo)下的輪廓圖,邊緣提取使用edge()函數(shù),區(qū)域特征描述,1區(qū)域面積描述法,用stats = regionprops(L,properties)來統(tǒng)計區(qū)域內(nèi)的像素點的個數(shù),2四叉樹描述法S = qtdecomp(I,threshold)該函數(shù)實現(xiàn)對四叉樹的分解,I為灰度圖像,threshold為閾值,S為分解后的圖像,blocks = repmat(uint8(0),size(S));%矩陣擴充為S的大小3拓?fù)潢P(guān)系,就是孔數(shù)和歐拉數(shù),使用函數(shù)eul = bweuler(I,n),eul為歐拉數(shù),I為圖像,I為二值圖像如果不是需要使用im2bw(),n=4或8表示4連通和8連通,Image2=fliplr(I);%對圖像做鏡像變換---鏡像變換 ,log()函數(shù)用于縮小圖像,還有一種方法矩描述
10.2形態(tài)學(xué)數(shù)字圖像處理
形態(tài)學(xué)數(shù)字圖像處理,數(shù)字形態(tài)學(xué)是建立在微分幾何以及隨機論基礎(chǔ)上的,集合論是數(shù)學(xué)形態(tài)學(xué)的基礎(chǔ),腐蝕運算和膨脹運算是數(shù)學(xué)形態(tài)學(xué)的兩個基本變換,參與運算就是兩個對象,,圖像A感興趣的目標(biāo),圖像B結(jié)構(gòu)元素,結(jié)構(gòu)元素通常是個圓盤,但是它可以是任何元素,結(jié)構(gòu)元素是腐蝕和膨脹最基本的組成部分,在matlab中結(jié)構(gòu)體元素生產(chǎn)函數(shù)strel()創(chuàng)建任意大小和形狀的結(jié)構(gòu)元素對象,膨脹是將與物體接觸的所有背景點合并到該物體中,使邊界向外部擴張的過程,通過膨脹可以填充圖像中的小孔,A+B,腐蝕是消除 邊界點,使邊界向內(nèi)部收縮過程,可以消除小且無意義的物體,集合被結(jié)構(gòu)元素腐蝕,記為A-B,采用bw2=imdilate(I, se),I是圖像se是結(jié)構(gòu)元素,imerode()可以進行腐蝕操作,開運算即先采用結(jié)構(gòu)元素做腐蝕運算,然后再做膨脹運算,使用相同的結(jié)構(gòu)元素,計為(A-B)+B函數(shù)J=imopen(I, se)通過開運算去除了圖像中比較小的點,閉運算(A+B)-B,通過函數(shù)J=imclose(I, se)有利于把區(qū)域連接為一塊;高帽濾波是A-開運算,高帽濾波可以增強圖像的對比度,調(diào)用形式J=imtophat(I, se);,圖像的低帽濾波A-閉運算,低帽濾波可以增強圖像的邊緣,調(diào)用形式K=imbothat(I, se);imadd(I, J)圖像相加,imsubtract(I,J)兩個圖像相減;圖像的填充通過函數(shù)imfill(),J=imfill(I, 'holes')通過holes填充圖像中的空洞,返回局部極大值,局部極大值不是最大值,調(diào)用如下bw=imregionalmax(I),此函數(shù)返回的最大值對應(yīng)1,其它是0,同樣的局部最小值bw=imregionalmin(I);圖像邊界的測定,通過膨脹腐蝕獲取圖像邊界,膨脹的結(jié)果減去腐蝕的結(jié)果就是圖像的邊界,還可以通過函數(shù)bwperim(I,n)獲取二值圖像的邊緣,n在二維圖像中是4或者8連通,二值圖像的形態(tài)學(xué)操作,可以通過bwmorph()進行二值圖像的大量形態(tài)學(xué)操作,例如圖像的骨架化,圖像的細(xì)化,以及開操作和閉操作,函數(shù)功能比較強大,J=bwmorph(I, 'thin');BW2 = bwmorph(BW,operation,n)對二值圖像進行n次指定的形態(tài)學(xué)處理n=Inf表示無窮大,移除圖像的內(nèi)部點保留邊界也是用的此函數(shù),不過調(diào)用的參數(shù)為remove,腐蝕膨脹是最基本的形態(tài)學(xué)操作,下面還有一些二值圖像的其他形態(tài)學(xué)操作,包括極限腐蝕,查表操作,圖像的標(biāo)記,對象的選擇,圖像的面積和歐拉數(shù)等,采用函數(shù)bwulterode()進行極限腐蝕,每個對象最后變?yōu)橐粋€像素點為止;查表操作,用函數(shù)makelut()用于建立表單,函數(shù)applylut()用于查表操作,函數(shù)調(diào)用格式為lut=makelut(fun,n),其中fun為判斷條件的函數(shù),n為領(lǐng)域大小可以去2或者3,查表調(diào)用格式為applylut(BW,LUT)該函數(shù)采用查表的方式來對二值圖像的領(lǐng)域進行操作,LUT為建立的表單,二值圖像的標(biāo)記,對于不同的連通區(qū)域分配不同的編號,采用函數(shù)bwlabel()只支持二維的二值圖像和bwlabeln()支持任意維度的二值圖像,函數(shù)L=bwlabel(bw,n)n為連通類型為4或者8連通,L標(biāo)記矩陣和原來的二值圖像具有相同的大小,還可以是[L, num]=bwlabel(BW, 8),num為連通區(qū)域的數(shù)目,二值圖像的對象選擇使用J=bwselect(I, c, r, 4);c為橫坐標(biāo)數(shù)組,r為坐標(biāo)數(shù)組,4是4連通的意思,函數(shù)的意思就是從I中把這幾個坐標(biāo)的像素值取出來;二值圖像的面積,面積是二值圖像中像素值為1的像素個數(shù),采用函數(shù)bwarea()計算二值圖像的面積,total=bwarea(BW);
十一,小波變換
小波變換家族Waveletfamilies,或者是Waveletfamilies(‘n’),waveinfo('fk')看具體的信息,小波是一種快速衰減的波,震蕩有零值,不像正弦波,縮放,拉伸和縮放,移動,就是讓小波從左到右在信號上走,信號在時間刻度進行縮放,小波有一個帶通的性質(zhì),相同頻率的比率因子變化導(dǎo)致拉伸小波,對應(yīng)較低的頻率,較小的比率導(dǎo)致壓縮小波,高頻拉伸小波有助于捕捉緩慢的變化,縮小小波有助于捕獲突然的變化,轉(zhuǎn)移小波變換,離散小波的運用是去燥和壓縮,連續(xù)小波變換的輸出是系數(shù),傅里葉變換是一個全時域的變換,全時域也就是說是負(fù)無窮到正無窮,為了解決傅里葉變換無限大的問題,我們提出了時窗,即Gabor變換也叫短時傅里葉變化,但是缺點是分辨率單一,因為在時域的窗口小,頻率的就會寬,一旦寬了之后分辨率就會降低,一旦時域確定頻域就會確定,不太自由,之后就提出了小波變換wavelet transtorm (WT),一元積分相當(dāng)于在某個方向上的投影,小波這里就去尋找一個最佳的投影函數(shù)(a,b,t)a是時窗的中心頻率,b是頻率的量W,壓縮降噪就是把頻率特別小或者特別大的地方去掉,小波變換的其他具體知識之后再補充,此處介紹小波的MATLAB實現(xiàn),stem()是柱形的畫圖函數(shù),小波函數(shù)和尺度函數(shù)wavefun2()只適合正交小波,具體參照P387,
小波變換的壓縮是基于人眼對高頻信息不敏感的特性,低頻部分的分量全部或部分保留,去掉高頻的部分,系數(shù)編碼時小波變換用于圖像壓縮的核心,壓縮的實質(zhì)是對系數(shù)的量化壓縮,Y=wcodemat(X,nbc);%對圖像的數(shù)值矩陣進行偽彩色編碼,wcodemat還有 解壓的能力,[C,S]=wavedec2(X,2,'db4'); %對圖像小波分解,image()從數(shù)組顯示圖像,下圖a,b分別是壓縮和解壓縮的圖
十二,Simulink數(shù)字圖像處理
Simulink是matlab的圖像化編程工具,video and image processing blockset,此處介紹基于simulink的視頻及數(shù)字圖像處理,在下面這個地方啟動,computer vision system toolbox需要先建立simulink,然后在里面的tool里面library找,輸入在sources中設(shè)置圖像路徑,在sinks中的view觀看結(jié)果,直接用鼠標(biāo)把模塊拖到simulink的工作空間或者右鍵直接add進來,用鼠標(biāo)即可連線,類型轉(zhuǎn)換是在convertion中,圖像幾何變換,雙擊模塊可以修改里面的參數(shù),其實一個模塊就對應(yīng)著一些matlab的語句,
???????????????????? Analysis&Enhancement?????????????????????????????????????????????????????????????????? Convertions
???????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? Filtering?????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 形態(tài)學(xué)操作(? Morephological Operations)
總結(jié)
以上是生活随笔為你收集整理的MATLAB数字图像处理详细总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 完美解决netkeeper 错误代码13
- 下一篇: 基于MATLAB的数字图像处理