日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

MATLAB数字图像处理详细总结

發(fā)布時(shí)間:2024/8/1 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MATLAB数字图像处理详细总结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

給一個(gè)算法如何寫程序https://blog.csdn.net/baidu_38205880/article/details/80241655先在網(wǎng)上找一些參考再寫

算法的一般步驟自頂向下,考慮輸入輸出,有點(diǎn)像信號(hào)中的響應(yīng)的思想,還要考慮數(shù)據(jù)結(jié)構(gòu),特殊輸入,增加程序的健壯性,

下面是數(shù)字圖像處理matlb方面的知識(shí),看例子是很快理解知識(shí)點(diǎn)的一種方案,具體都要實(shí)現(xiàn)什么功能,可以做分解,然后每一步都用流程圖實(shí)現(xiàn),最后編寫代碼

使用說(shuō)明

本文參照的圖書MATLAB圖像處理實(shí)例詳解,鏈接地址:https://pan.baidu.com/s/1uUBqJNdWpzTZ21xLZnFMRg
提取碼:3hpc,本文是做圖像處理很好輔助博文,具體使用方法是先用ctrl+F來(lái)搜索需要處理的函數(shù)名稱,找到之后再M(fèi)ATLAB中輸入函數(shù)按F1鍵獲得函數(shù)幫助,就可以使用函數(shù)了。

目錄

前言

使用說(shuō)明

一,MATLAB基礎(chǔ)

1.1矩陣的算術(shù)運(yùn)算

1.2判斷循環(huán)

1.3MATLAB繪圖

1.3.1二維圖形繪制

二,MATLAB圖像處理基礎(chǔ)

2.1圖像類型的轉(zhuǎn)換

2.2文件信息的讀取保存

三,數(shù)字圖像的點(diǎn)運(yùn)算

3.1圖像點(diǎn)運(yùn)算

3.2圖像的領(lǐng)域操作

四,圖像增強(qiáng)

4.1空域?yàn)V波

4.2頻域?yàn)V波

五,圖像復(fù)原技術(shù)

5.1空域?yàn)V波復(fù)原

5.2圖像復(fù)原

六,圖像分割

六,圖像變換技術(shù)

七,彩色圖像坐標(biāo)變換

八,圖像壓縮編碼

九,圖像特征分析

十,圖像形狀特征

10.1形狀特征描述

10.2形態(tài)學(xué)數(shù)字圖像處理

十一,小波變換

十二,Simulink數(shù)字圖像處理


一,MATLAB基礎(chǔ)

按下Tab命令可以出現(xiàn)提示,

二進(jìn)制圖像函數(shù),im2bw();單精度表示式single,雙精度是double,查看變量的字節(jié)空間大小whos命令,注意普通數(shù)組[],細(xì)胞數(shù)組{},函數(shù)句柄是一個(gè)可調(diào)用的MATLAB函數(shù)的關(guān)聯(lián),通過(guò)句柄可以調(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'來(lái)建立結(jié)構(gòu)體

細(xì)胞數(shù)字作為MATLAB特有的一種數(shù)據(jù)類型,組成它的元素是細(xì)胞,細(xì)胞用來(lái)存儲(chǔ)不同類型數(shù)據(jù)單元,細(xì)胞數(shù)組的建立可以用直接賦值法和cell()函數(shù),語(yǔ)句后面有冒號(hào)就是先不執(zhí)行,沒(méi)有冒號(hào)就是直接執(zhí)行cellplot(student)顯示細(xì)胞數(shù)組的結(jié)構(gòu),

1.1矩陣的算術(shù)運(yùn)算

對(duì)角矩陣eye(3),魔方矩陣magic(3),點(diǎn)乘.*,乘*,矩陣比較大小本質(zhì)上也是一個(gè)一個(gè)的比返回的結(jié)構(gòu)也是矩陣,就是對(duì)應(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

邏輯運(yùn)算異或xor(A,B)需要維數(shù)相同,運(yùn)算符的優(yōu)先級(jí),括號(hào)運(yùn)算最高,非運(yùn)算的優(yōu)先級(jí)也比較高,點(diǎn)乘高于乘,邏輯的其它運(yùn)算優(yōu)先級(jí)最低

矩陣:創(chuàng)建一個(gè)行矩陣可以有逗號(hào)或者空格來(lái)分隔每一個(gè)元素,行與行之間是用“;”,行列之間是用逗號(hào),創(chuàng)建多行矩陣,行與行之間用分號(hào)來(lái)分隔,常用的特殊矩陣函數(shù)比如ones(n),n是維度,見(jiàn)書的49頁(yè)

>> a=[1 2 3];
>> b=[1,2,3]

矩陣的操作[A B]表示矩陣橫向合并,[A;B]表示縱向合并,用([x],[y]);來(lái)表示提取矩陣([1 3],[2 3]),冒號(hào)在提取這部分的作用

[1:3]表示1到3,[:]表示省略,不提取,det()求矩陣行列式的值,transpose()求轉(zhuǎn)置矩陣,求逆矩陣inv(),滿秩的方陣才有逆矩陣,在MATLAB中非滿秩的方陣也可以求逆矩陣,叫偽逆矩陣pinv(),求矩陣的秩可以用rank()函數(shù),秩就是矩陣中非零元素階次的最大值,ans是默認(rèn)的一個(gè)變量;

MATLAB控制語(yǔ)句for,while,if,for 變量=初始:增量:終值,增量省略是默認(rèn)是1,比如for a=1:6,每一層for循環(huán)都以for開始end結(jié)束,給矩陣賦值要現(xiàn)有矩陣,比如可以用特殊的值創(chuàng)建矩陣,之后在改變,和我們之前c的不同if在于沒(méi)有括號(hào),需要加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ù)指點(diǎn)的條件是否可以滿足,決定程序的流向,向if,try,for這樣的關(guān)鍵字后都不用加";"

if 表達(dá)式

語(yǔ)句1;

else

語(yǔ)句二;

end

swich 表達(dá)式

case? 表達(dá)式1

語(yǔ)句1

case 表達(dá)式2

語(yǔ)句2

otherwise

語(yǔ)句3

end

try是一個(gè)錯(cuò)誤捕捉語(yǔ)句,程序先執(zhí)行語(yǔ)句一沒(méi)有錯(cuò)誤就跳出try,有錯(cuò)誤就執(zhí)行語(yǔ)句二,

try?

語(yǔ)句1

catch

語(yǔ)句2

end

A=imread('D:\logi\IMG20160402201058','jpg');
catch
A=imread('D:\logi\IMG20160402201059','jpg');
end
>> imshow(A)

影響程序流程走向的程序,稱為流程控制語(yǔ)句,break,continue,return,break是終止的是循環(huán)體,而continue結(jié)束的是一次循環(huán),break可以跳出本次循環(huán),執(zhí)行語(yǔ)句end的下一條語(yǔ)句,continue語(yǔ)句可以結(jié)束本次循環(huán),跳過(guò)其后的循環(huán),執(zhí)行下一次循環(huán),pause語(yǔ)句:其調(diào)用格式為pause,則暫停程序運(yùn)行,按任意鍵繼續(xù),還有一種調(diào)用格式為pause(n),就是程序暫停n秒后執(zhí)行,調(diào)用格式為pause on /off,就是允許或禁止之后的程序執(zhí)行,

M文件就是 編寫函數(shù)的,編寫好之后可以在命令窗口調(diào)用函數(shù),M文件就是一系列命令的集合,M文件分為腳本文件和函數(shù)文件腳本文件不接受參數(shù)輸入,也不返回輸出參數(shù),文件執(zhí)行過(guò)程中產(chǎn)生的所有變量都存儲(chǔ)在工作空間中,函數(shù)文件可以接受參數(shù)輸入,也有返回值,程序執(zhí)行完局部變量就會(huì)釋放不會(huì)存儲(chǔ)在工作空間中,從新建的地方建立腳本或函數(shù)文件,只有輸入?yún)?shù)和輸出參數(shù)會(huì)存儲(chǔ)在工作空間,而腳本文件只要m文件中變量在工作空間中都可以查到。

M文件的調(diào)試,在有疑問(wèn)的地方添加變量輸出就,查看是否有錯(cuò),還可以查詢工作空間中的變量,可以利用工具的Debug,在matlab中用%號(hào)來(lái)表示注釋,腳本文件的每一行結(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)變量,計(jì)算出變量數(shù)據(jù),

2)設(shè)置圖形窗口位置在指定的位置創(chuàng)建新的繪圖窗口,缺省是打開figureN01

3)繪制圖形,生產(chǎn)圖形文件:創(chuàng)建坐標(biāo)軸,調(diào)用繪圖函數(shù),設(shè)置圖形中線型,色彩,數(shù)據(jù)點(diǎn)形等屬性

4)圖形的修飾:為了突出圖形顯示結(jié)果,可對(duì)生成的圖形文件做進(jìn)一步調(diào)整如設(shè)置坐標(biāo)軸的范圍和刻度,圖形注釋(圖名,坐標(biāo)名文字說(shuō)明等

5)保存和導(dǎo)出圖形,按指定文件格式保存圖形導(dǎo)出圖形,以方便后續(xù)使用

1.3.1二維圖形繪制

使用函數(shù)plot(),用subplot()來(lái)分割函數(shù),圖形的修飾可以在plot()函數(shù)中加參數(shù),具體可以參考68頁(yè),plot(x,y,‘b’),t圖形的坐標(biāo)軸限制函數(shù)anxis([xmin xmax ymin ymax]),對(duì)橫軸坐標(biāo)的標(biāo)注xlable('string'),標(biāo)題使用title(‘string’)利用gtext('sting')來(lái)用鼠標(biāo)給函數(shù)曲線命名,也就是說(shuō)用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)計(jì)每一段出現(xiàn)的頻率,柱狀圖用bar(x,y)來(lái)畫,

matlab中有幾種獲取幫助的途徑

第一種,也是最有效的就是選中函數(shù)名,按F1直接查看該函數(shù)的幫助文檔;

?第二種,就是通過(guò)命令窗口中(help 函數(shù)名)來(lái)獲取該函數(shù)的幫助文檔;

?第三種,就是通過(guò)工具欄中的幫助菜單來(lái)輸入函數(shù)名,獲取該函數(shù)的幫助文檔;

?第四種,就是去matlab官網(wǎng)MathWorks查找函數(shù)的幫助文檔

取值是通過(guò)函數(shù)來(lái)實(shí)現(xiàn),具體可以看28頁(yè),在matlab中A既可以是變量,也可以是矩陣,一般習(xí)慣用小寫表示變量,大寫表示矩陣,

二,MATLAB圖像處理基礎(chǔ)

1)主要介紹matlab圖像處理工具箱可以從help--圖形處理工具箱,還可以從左下角start打開;

2.1圖像類型的轉(zhuǎn)換

圖像類型的轉(zhuǎn)換,可以用對(duì)應(yīng)的函數(shù)來(lái)完成,圖像的轉(zhuǎn)換如下圖3.11所示RGB轉(zhuǎn)為灰度函數(shù)RGB2gray(),其他函數(shù)可以參照P80頁(yè)灰度圖像轉(zhuǎn)為索引圖像,灰度圖像是一個(gè)二維數(shù)組矩陣,而索引圖像不僅包括一個(gè)二維的數(shù)組矩陣,還包括一個(gè)Mx3的顏色映射表,所以要將灰度圖像轉(zhuǎn)換為索引圖像,則必須生產(chǎn)對(duì)應(yīng)的顏色映射表,調(diào)用函數(shù)格式為[x,map]=gray2ind(I,n)就是將灰度圖像I轉(zhuǎn)為索引圖像,n是灰度級(jí)數(shù)默認(rèn)64,[x,map]對(duì)應(yīng)轉(zhuǎn)換后的索引圖像,map中對(duì)應(yīng)的顏色值為顏色圖gray(n)中的顏色值,索引圖像中有顏色,飽和度,亮度信息,灰度圖像只保留了亮度信息,將索引圖像轉(zhuǎn)為RGB圖像,[x,map]指向索引圖像,將RGB指向轉(zhuǎn)換過(guò)程中形成一份三維數(shù)組,然后將索引圖像的顏色映射表中的顏色值賦值給三維數(shù)組,,二值圖像的轉(zhuǎn)換,如果圖像轉(zhuǎn)換前不是灰度圖像,要先轉(zhuǎn)為灰度圖像,然后再通過(guò)閾值法把灰度圖像轉(zhuǎn)化為二值圖像;一個(gè)數(shù)據(jù)矩陣就相當(dāng)于一幅數(shù)字圖像,只是在數(shù)字圖像中對(duì)應(yīng)的數(shù)組元素必須在一定的取值范圍內(nèi)可以調(diào)用mat2gray()進(jìn)行轉(zhuǎn)化,格式為I=mat2gray(X,[xmin,xmax]),xmin對(duì)應(yīng)灰度值0,即黑色,xmax對(duì)應(yīng)灰度值為1,即白色,具體可看P84,索引圖像和RGB圖像的構(gòu)成比較類似,索引圖像是一個(gè)數(shù)組和一個(gè)映射表先找到數(shù)組中的值,數(shù)組中的值對(duì)應(yīng)一個(gè)map值,map值中有顏色信息,而RGB是三個(gè)分量的顏色合成色彩信息

?
>> map=colorcube(128);%指定顏色的數(shù)目
>> x=rgb2ind(RGB,map);

>> imshow(x,map)%顯示索引圖像的

2.2文件信息的讀取保存

文件信息的讀取,用imfinfo()來(lái)讀取文件信息,調(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是圖像的編號(hào),

>> [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)選定圖像上的點(diǎn)然后顯示該點(diǎn)的值,選完之后按Enter結(jié)束,impixel()還可以用來(lái)顯示特定的像素值不用鼠標(biāo)impixel(I,100,400),100,400分別為橫縱坐標(biāo);函數(shù)impixelinfo()就是用這個(gè)函數(shù)寫完之后顯示了圖像,你就可以在上面用鼠標(biāo)點(diǎn),點(diǎn)了之后就會(huì)執(zhí)行在圖像的上方或者下方直接顯示該點(diǎn)的像素值

視頻文件的讀取,主要函數(shù)有aviinfo()和函數(shù)aviread()來(lái)讀取視頻文件信息及視頻流,新出現(xiàn)的讀取函數(shù)有mfileinfo(),mmreader()和函數(shù)read();視頻文件的播放用函數(shù)movie(),movie(M),播放M一次,M是一個(gè)結(jié)構(gòu)體包含cData和Colormap,movie(M,N)就是播放視頻M,N次,movie(M,N,FPS),FPS是幀速率,默認(rèn)是12幀/秒

三,數(shù)字圖像的點(diǎn)運(yùn)算

3.1圖像點(diǎn)運(yùn)算

圖像點(diǎn)運(yùn)算,點(diǎn)運(yùn)算又稱對(duì)比度增強(qiáng),對(duì)比度拉伸或灰度變換,是對(duì)通過(guò)圖像中一個(gè)像素值,進(jìn)行運(yùn)算的圖像處理方式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()直接就對(duì)RGB圖像進(jìn)行操作,而利用分段線性處理和對(duì)數(shù)函數(shù)處理,都要先把RGB圖像轉(zhuǎn)為灰度圖像,分段的時(shí)候是對(duì)坐標(biāo)分段,也可以根據(jù)灰度值進(jìn)行分段 圖像的空間變換,在MATLAB中圖像處理工具箱提供一個(gè)專門的函數(shù)intransform(),用戶可以定義參數(shù)實(shí)現(xiàn)多種類型的空間變換,包括放射變換(如平移,縮放,旋轉(zhuǎn),剪切),還有醫(yī)學(xué)上常用的投影變換,B=imtransform(A,TFORM),TFORM是函數(shù)maketform()返回的一個(gè)結(jié)構(gòu)體,調(diào)用格式如下圖一,custom可以實(shí)現(xiàn)投影變換和放射變換,放射性變換中原圖像中某個(gè)像素點(diǎn)坐標(biāo)(x,y)和變換后該像素點(diǎn)坐標(biāo)(x',y'),關(guān)系如下圖二,其實(shí)這種變換就是矩陣中的坐標(biāo)變換,變換前的坐標(biāo)乘上一個(gè)矩陣得到變換后的坐標(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就是對(duì)X,Y的數(shù)據(jù)范圍進(jìn)行限制,size(I,2)表示取出I中列數(shù),size(I,1)取出I中的行數(shù),fillvalue是對(duì)矩陣的填充 >> 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軸的平移范圍,也就是說(shuō)平移后的圖形如果不對(duì)矩陣進(jìn)行擴(kuò)大,圖像是不能完全顯示的

3.2圖像的領(lǐng)域操作

圖像的領(lǐng)域操作,在MATLAB中提供了幾個(gè)實(shí)現(xiàn)領(lǐng)域操作的函數(shù),用戶可以直接調(diào)用這些函數(shù),實(shí)現(xiàn)各種操作,通用滑動(dòng)領(lǐng)域操作函數(shù)nlfiler(),列方向領(lǐng)域操作函數(shù)colfilt(),分離領(lǐng)域操作函數(shù)blockproc(),@符號(hào)主要使用于匿名函數(shù),充當(dāng)函數(shù)句柄,如下圖所示:比如沒(méi)有In函數(shù)但是有l(wèi)og函數(shù)我們可以使用ln=@(x)log(x)就可以調(diào)用log了有點(diǎn)像給函數(shù)重新命名,X是參數(shù),blockproc()就是 把函數(shù) 分為一小塊一小塊的,調(diào)用格式為blockproc(A,[M,N],fun),加入fun這個(gè)句柄就是說(shuō)在分離的同時(shí)可以再做旋轉(zhuǎn)等,

圖像的區(qū)域選取,可以找到我們感興趣的區(qū)域進(jìn)行相關(guān)操作,MATLAB也提供了一些圖像區(qū)域選擇和操作函數(shù),如多邊形區(qū)域選擇函數(shù)roipoly(),是基于區(qū)域,roipoly(I,c,r)坐標(biāo)選擇灰度ROI區(qū)域選擇函數(shù)roicolor(),roicolor(I,low,high);根據(jù)灰度的范圍進(jìn)行選取,區(qū)域填充函數(shù)roifill(),就是選擇出來(lái)的區(qū)域,涂上一種顏色,區(qū)域?yàn)V波函數(shù)roifilt2(),介紹一個(gè)掩模的概念:就是用一個(gè)有洞的紙張擋住圖像所看到的部分,h = fspecial(type),是濾波函數(shù)

四,圖像增強(qiáng)

圖像增強(qiáng)空間域也叫對(duì)比度增強(qiáng),灰度增強(qiáng)只改變像素點(diǎn)的灰度值,并逐點(diǎn)進(jìn)行,和周圍的其他像素點(diǎn)無(wú)關(guān),為了進(jìn)行灰度變化首先要獲得灰度直方圖在MATLAB中可以使用imhist(I)函數(shù)來(lái)獲得,彩色圖像也可以做直方圖,只不過(guò)是對(duì)三個(gè)分量RGB分別做灰度直方圖,直方圖均衡化用的是histeq(I),直方圖均衡化使得圖像的色彩分布更加的均勻,不會(huì)出現(xiàn)過(guò)明或者是過(guò)暗的情況,圖像的標(biāo)準(zhǔn)差,可以采用std2()計(jì)算矩陣的標(biāo)準(zhǔn)差,std()計(jì)算向量的標(biāo)準(zhǔn)差,標(biāo)準(zhǔn)差越大,圖像的對(duì)比度越大,mean()平均值函數(shù),中值濾波函數(shù)medfilt2(I),計(jì)算兩幅大小相同的圖像的相關(guān)系數(shù)用,corr2(I,J);灰度圖像的等高線就是灰度相同的點(diǎn)連接成的,利用imcontour(I,n),n是繪制的等高線的數(shù)量,

4.1空域?yàn)V波

空域?yàn)V波:線性平均濾波是一種最常用的線性空域?yàn)V波,圖像的邊緣屬于高頻成分,常用的模板有3x3的,K=imfilter(J, h),表示J卷積H的意思,可以用這個(gè)函數(shù)或者conv2(J,H)也可以,加噪聲的函數(shù)imnoise(I, 'salt & pepper', 0.02);順序統(tǒng)計(jì)濾波函數(shù)ordfilt2(I, 1, true(5));就是有點(diǎn)像領(lǐng)域?yàn)V波的感覺(jué)就是用領(lǐng)域內(nèi)的第一個(gè)像素代替目標(biāo)像素,true(5)表示用5*5的模板,維納自適應(yīng)濾波函數(shù)是wiener2(J, [5 5]);

4.2頻域?yàn)V波

頻域?yàn)V波圖像增強(qiáng)首先是通過(guò)傅里葉變換將圖像從空間域變換到頻率域,然后反變換回去,頻域內(nèi)的圖像增強(qiáng)有低通濾波,高通濾波和同態(tài)濾波;低通去除噪聲,但是也會(huì)使得邊緣模糊,matlab里面的字母是分大小寫的,Y = fftshift(X);平移零頻分量,然后繪制以零為中心的功率,也就是零點(diǎn)跑到中間去了,Y = fft2(X,m,n) 將截?cái)?X 或用尾隨零填充 X,以便在計(jì)算變換之前形成 m×n 矩陣。Y 是 m×n 矩陣。如果 X 是一個(gè)多維數(shù)組,fft2 將根據(jù) m 和 n 決定 X 的前兩個(gè)維度的形狀;[X,Y] =?meshgrid(x,y):輸出X的每一行的數(shù)值都是復(fù)制的x的值;輸出Y的每一列的數(shù)值都是復(fù)制的y的值,meshgrid就是產(chǎn)生這樣兩個(gè)矩陣,時(shí)域卷積頻域乘積K=J.*H;,c=b(1:size(b,1),1:size(b,2))表示取出b的這些行和列上的元素,賦值給c,最后一個(gè)值不超過(guò)size(b,1)的一個(gè)向量,size(b,1)是b矩陣的行數(shù),表示求距離函數(shù)D=sqrt(U.^2+V.^2);濾波器的類型分為巴特沃斯濾波器和高斯濾波器,帶阻濾波器是用來(lái)抑制距離頻率中心一定距離的一個(gè)圓形區(qū)域的頻率,可以用來(lái)消除一定頻率范圍內(nèi)的噪聲,同態(tài)濾波是一種特殊的濾波技術(shù),可用于壓縮圖像動(dòng)態(tài)范圍,且增強(qiáng)對(duì)比度,濾波窗口越大圖像邊緣越模糊,圖像去燥效果越好

五,圖像復(fù)原技術(shù)

5.1空域?yàn)V波復(fù)原

圖像復(fù)原技術(shù),可以通過(guò)imnoise()給圖像添加噪聲,調(diào)用格式為imnoise(I,type,parameters),parameters不同噪聲的參數(shù)不同,如果是椒鹽噪聲則表示,椒鹽噪聲的密度大小,高斯噪聲則表示均值和方差,空域?yàn)V波方法,首先是均值濾波包括算術(shù)均值濾波和幾何均值濾波,順序統(tǒng)計(jì)濾波包括中值濾波,中值濾波能夠很好的保留圖像的邊緣,非常適合去除椒鹽噪聲,效果優(yōu)于均值濾波,順序統(tǒng)計(jì)濾波還包括最大值,最小值濾波,最大值濾波能夠去除椒鹽噪聲,但是會(huì)從黑色物體的邊緣去除一些黑色像素,最小值濾波類似,會(huì)從白色物體的邊緣去除一些白色像素,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是一個(gè)模板,order是去除domain中的第6個(gè)像素值作為該點(diǎn)像素值;自適應(yīng)濾波wiener2()可以根據(jù)圖像中的噪聲進(jìn)行濾波,還可以對(duì)噪聲進(jìn)行估計(jì),該函數(shù)根據(jù)圖像的局部方差來(lái)調(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和圖像的噪聲估計(jì)。

5.2圖像復(fù)原

圖像復(fù)原:1,逆濾波復(fù)原,通過(guò)傅里葉變換實(shí)現(xiàn),最后用傅里葉反變換,2,自適應(yīng)濾波優(yōu)點(diǎn)是復(fù)原效果好,計(jì)算量較低,PSF=fspecial('motion', LEN, THETA);該函數(shù)就是產(chǎn)生濾波模板的,比如產(chǎn)生拉普拉斯算子模板,K=deconvwnr(J, PSF, NSR);這是維納自適應(yīng)濾波函數(shù),NSR是信噪比3,約束最小二乘法復(fù)原,采用函數(shù)deconcreg()進(jìn)行圖像的約束最小二乘法復(fù)原,調(diào)用格式是J=deconvreg(I,PSF),lucy復(fù)原,K=deconvlucy(J, PSF, 5);5是迭代次數(shù),迭代次數(shù)越多,復(fù)原效果越好;前面的復(fù)原方法都需要預(yù)先知道退化圖像的PSF,但在實(shí)際應(yīng)用中,經(jīng)常是不知道PSF的情況下對(duì)圖像進(jìn)行復(fù)原,下面介紹盲解卷積復(fù)原,對(duì)PSF進(jìn)行估計(jì),[K, PSF2]=deconvblind(J, INITPSF, 30); INITPSF為輸入的PSF估計(jì)值,PSF2為真實(shí)的PSF的一個(gè)估計(jì)值,fspecial函數(shù)用于創(chuàng)建預(yù)定義的濾波算子,可以用來(lái)產(chǎn)生噪聲模板,或者使用imnoise來(lái)直接添加噪聲,會(huì)與imfilter搭配使用,g = imfilter(f, w, filtering_mode, boundary_options, size_options)其中,f為輸入圖像,w為濾波掩模,g為濾波后圖像。filtering_mode用于指定在濾波過(guò)程中是使用“相關(guān)”還是“卷積”。boundary_options用于處理邊界充零問(wèn)題,邊界的大小由濾波器的大小確定。具體參數(shù)選項(xiàng)見(jiàn)下表:

????????????????????????? 圖一?????????????????????????????????????????????????????????????????????????????????????????????????????????? 圖二

從定義式中可以看到,互相關(guān)函數(shù)和卷積運(yùn)算類似,也是兩個(gè)序列滑動(dòng)相乘,但是區(qū)別在于:互相關(guān)的兩個(gè)序列都不翻轉(zhuǎn),直接滑動(dòng)相乘,求和;卷積的其中一個(gè)序列需要先翻轉(zhuǎn),然后滑動(dòng)相乘,求和,如果使用算子來(lái)模糊圖像,需要算子和圖像混合后,再使用濾波函數(shù)

六,圖像分割

圖像分割主要包括邊緣分割技術(shù),閾值分割技術(shù)和區(qū)域分割技術(shù),邊緣分割和我們之前的邊緣檢測(cè)有些類似,常用的有微分算子sobel算子,Roberts算子等,對(duì)于圖像中的間斷點(diǎn),常用的檢測(cè)模板為如圖二所示,線段的檢測(cè)用的模板也如上圖二所示其中第一個(gè)是用來(lái)檢測(cè)0度的直線,第二個(gè)模板是用來(lái)檢測(cè)45度的直線,Roberts算子J=edge(I, 'roberts');表示采用roberts算子進(jìn)行邊緣檢測(cè),[J, thresh]=edge(I, 'roberts', 35/255);35/255表示所使用的閾值,thresh表示返回的圖像分割閾值,這個(gè)閾值表示的是圖像歸一化以后的閾值,其它的算子類似都是直接在后面改相應(yīng)的名稱,[J, thresh]=edge(I, 'prewitt', [], 'both');'both'表示水平和垂直都檢測(cè),采用edge()進(jìn)行邊緣提取得到的圖像為二值圖像,只有黑白兩種顏色 []表示占位符,canny算子用來(lái)抑制虛假邊緣,因?yàn)樗灰蕾囘吘壏较?#xff0c;canny算子的調(diào)用也是通過(guò)edge()函數(shù)來(lái)實(shí)現(xiàn),調(diào)用格式和soble算子一致;LOG算子就是拉普拉斯算子,是一種不依賴邊緣方向的二階微分算子,先利用高斯函數(shù)進(jìn)行平滑,然后再利用二階導(dǎo)數(shù)過(guò)零點(diǎn)的性質(zhì),去檢測(cè)邊緣,拉普拉斯算子就是一個(gè)兩個(gè)方向的二階偏導(dǎo)數(shù)之和,都是采用edge函數(shù);閾值分割技術(shù)通過(guò)圖像的直方圖來(lái)選取合適的閾值,利用if,else來(lái)實(shí)現(xiàn),全局閾值通常都選取波谷的值imhist(i,n)n為指定灰度級(jí)顯示直方圖,[width, height]=size(I);得到圖像的行和列,也可以使用im2bw(I)來(lái)進(jìn)行分割,也就是灰度圖像轉(zhuǎn)為二值圖像,OTSU閾值分割,它的基本原理就是選取一個(gè)最佳的閾值將圖像分割為兩部分,使兩部分的方差最大,具有最大的分離性,最佳閾值獲取函數(shù)是J=graythresh(I),下面也是可以使用if,else來(lái)實(shí)現(xiàn)或者通過(guò)BW?= im2bw(I,level),level就是閾值,迭代式閾值分割,獲取圖像中像素的最大,最小值min(I(:)),max(I(:));區(qū)域生長(zhǎng)法是一種將具有相似性質(zhì)的像素集合起來(lái)構(gòu)成區(qū)域,區(qū)域增長(zhǎng)法根據(jù)區(qū)域內(nèi)像素的相似性質(zhì)來(lái)聚集像素點(diǎn)的方法,區(qū)域內(nèi)像素的相似度量可以包括平均灰度值,紋理,顏色等信息,從初始區(qū)域開始,將相鄰的具有同樣性質(zhì)的像素或其它區(qū)域歸并到目前的區(qū)域中,從而逐步增長(zhǎng)區(qū)域,直至沒(méi)有合并的為止;還有另外一種分水嶺,J=watershed(I, 8);參數(shù)里面的8代表8連通,在灰度直方圖中的山脊稱為分水嶺,I=im2double(I) %圖像灰度值歸一化到[0,1]之間

六,圖像變換技術(shù)

圖像變換技術(shù)時(shí)間域就是空間域:圖像Radon變換,在matlab中采用函數(shù)radon()進(jìn)行圖像的Radon變換,函數(shù)調(diào)用格式為R=radon(I,theta);thera為角度,R為圖像I在theta方向上的變換值,[R, xp]=radon(I, [0, 45]);xp為對(duì)應(yīng)的坐標(biāo)值,表示在0度和45度方向進(jìn)行radon變換,x=xp(row),這表示獲取位置,angel=theta(column)這表示獲取角度,radon變換可以用來(lái)檢測(cè)直線,就是radon變換中的最大值就對(duì)應(yīng)的圖像中最明顯的直線,用函數(shù)iradon()來(lái)計(jì)算radon的反變換k=iradon(R,thera),R為radon變換矩陣,thera為角度;傅里葉變換通過(guò)函數(shù)fft()進(jìn)行一維離散傅里葉變換,通過(guò)函數(shù)ifft()進(jìn)行一維離散傅里葉反變換,二維的采用的是fft2(),函數(shù)的調(diào)用格式為Y=fft(X),或者Y=fft2(x,m,n)采用快速傅里葉算法,計(jì)算矩陣大小為二維離散傅里葉變換,傅里葉變換的一個(gè)意義,在頻譜上是亮暗不一的亮點(diǎn),如果頻譜中暗的點(diǎn)數(shù)更多,那么實(shí)際圖像是比較柔和的,如果亮點(diǎn)比較多,說(shuō)明圖像比價(jià)尖銳,通過(guò)函數(shù)fft2()得到的頻譜圖,坐標(biāo)原點(diǎn)位于圖像的左上角,可以通過(guò)函數(shù)fftshift(X),把坐標(biāo)原點(diǎn)移至圖像的中央,坐標(biāo)原點(diǎn)是低頻,向外是高頻,可以對(duì)圖像在頻域進(jìn)行濾波和增強(qiáng),real(L)是復(fù)數(shù)的實(shí)部,J=fftshift(fft2(I));?L1=ifft2(ifftshift(K1));正變換的時(shí)候是先變換再平移,而反變換的時(shí)候是先平移后變換;圖像離散余弦變換,實(shí)際上是傅里葉變換的實(shí)數(shù)部分,離散余弦變換DCT,有一個(gè)重要性質(zhì)就是大部分可視化的信息都集中在少數(shù)的變換系數(shù)上,因此離散余弦變換經(jīng)常用于圖像壓縮,例如國(guó)際壓縮標(biāo)準(zhǔn)JPEG格式就采用了離散余弦變換,在傅里葉變換的過(guò)程中,如果被展開的函數(shù)是實(shí)偶函數(shù),那么其傅里葉變換中只包含余弦項(xiàng),基于傅里葉變換的這一特點(diǎn),人們提出了離散余弦變換,DCT變換先將圖像函數(shù)變換成偶函數(shù)的形式,再對(duì)其進(jìn)行二維離散傅里葉變換,DCT變換可以看做一種簡(jiǎn)化的傅里葉變換,采用dct()進(jìn)行一維離散余弦變換,采用idct()進(jìn)行一維離散余弦反變換,二維的使用dct2(A),還可以用B=dct2(A,[m,n])該函數(shù)計(jì)算圖像矩陣A的二維離散余弦變換,返回值為B,通過(guò)對(duì)A補(bǔ)0或裁剪,使得B的大小為m行n列,P=dctmtx(M);這就是離散余弦變換矩陣,離散余弦變換,變換得到的是離散余弦變換系數(shù),離散余弦變換的一個(gè)重要用途就是用于圖像的數(shù)據(jù)壓縮,介紹圖像數(shù)據(jù)壓縮之前,首先介紹圖像的塊操作函數(shù)blkproc(),調(diào)用格式如下B=blkproc(A,[m,n],fun),表示對(duì)矩陣A進(jìn)行塊操作,對(duì)塊的操作函數(shù)為fun,返回值的大小A和B相同,colormap gray;表示圖像顯示的顏色,T'是T 的轉(zhuǎn)置,B=blkproc(I,[8,8],'P1*x*P2',T,T');% x就是每一個(gè)分成的8*8大小的塊,P1*x*P2相當(dāng)于像素塊的處理函數(shù),p1=T p2=T’,也就是fun=p1*x*p2'=T*x*T'的功能是進(jìn)行離散余弦變換,B2 = blkproc(B,[8 8],'P1.*x',mask); %舍棄每個(gè)塊中的高頻系數(shù),達(dá)到圖像壓縮的目的,I2=blkproc(B2,[8,8],'P1*x*P2',T',T); ?%進(jìn)行反余弦變換,得到壓縮后的圖象,正變換還是反變換關(guān)鍵是看T'是在前還是在后,在前反變換;hadamard變換沒(méi)有直接的變換函數(shù)但是可以用hadamard(n),n是階數(shù)產(chǎn)生hadamard變換矩陣,也可以對(duì)圖像進(jìn)行hadamard變換H1=hadamard(h1);H2=hadamard(h2);J=H1*I*H2;hough變換用于檢測(cè)幾何形狀,[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ǔ)上檢測(cè)出線,y(:,1)中逗bai號(hào)前是行,逗號(hào)后du是列,冒號(hào)表示從幾到幾。所以y(:,1)表示第一列的所有元素,radon變換的顯示函數(shù)是imagesc(J);不是imshow(),如果要顯示fft2()的圖像,最好把圖像進(jìn)行一下類型轉(zhuǎn)換double型轉(zhuǎn)為uint8()型,使用了ifft2()如果要顯示必須imshow(real(L2)),MATLAB圖像處理工具箱實(shí)現(xiàn)離散余弦變換有兩種方法:dct2和dctmtx(1)使用函數(shù)dct2,該函數(shù)用一個(gè)基于FFT的算法來(lái)提高當(dāng)輸入較大的方陣時(shí)的計(jì)算速度。(2)使用由dctmtx函數(shù)返回的DCT變換矩陣,這種方法較適合于較小的輸入方陣(例如8×8或16×16),imshow(A,[ ])
inshow(A,[ ])相當(dāng)于imshow(A,[min(A),max(A)])自動(dòng)調(diào)整數(shù)據(jù)范圍以方便顯示

七,彩色圖像坐標(biāo)變換

彩色圖像坐標(biāo)變換,一種是面向硬件設(shè)備的彩色模型RGB,另外一種是面向視覺(jué)感知的彩色圖像模型例如HSV模型,HSV模型是通過(guò)色調(diào)、飽和度、亮度來(lái)描述彩色圖像,RGB是由紅、綠、藍(lán)三原色混合而成,不同模型之間可以進(jìn)行轉(zhuǎn)化,RGB空間轉(zhuǎn)換到HSV空間,調(diào)用函數(shù)A=rgb2hsv(M),矩陣M的列分別表示紅色、綠色、藍(lán)色的強(qiáng)度,A的列分別表示色調(diào)、飽和度、亮度,H=HSV(:,:,1);%提取H矩陣,reshape(A,[2,3])?將?A?重構(gòu)為一個(gè) 2×3 矩陣,維度可以改變但是元素的個(gè)數(shù)是需要保持不變的,c = jet(m)?返回包含?m?種顏色的顏色圖,反過(guò)來(lái)也是一樣的hsv2rgb(H),RGB空間到y(tǒng)cbcr空間,調(diào)用函數(shù)K=rgb2ycbcr(RGB),RGB必須是一個(gè)mxnx3的矩陣,當(dāng)然也可以K=ycbcr2rgb(ycbcr)

八,圖像壓縮編碼

圖像壓縮編碼,編碼效率用編碼參數(shù)來(lái)衡量數(shù)字圖像的熵,圖像的平均碼長(zhǎng),編碼效率,每秒所需的傳輸比特?cái)?shù)為bps=mxnxR/兩幀時(shí)間間隔,霍夫曼編碼是一種把概率大的信息符號(hào)以短字長(zhǎng)編碼,概率小的以長(zhǎng)字編碼,這種編碼形式的平均碼子長(zhǎng)度最短,具體的方法另外一篇文章中有仔細(xì)的說(shuō)明,sort()是排序函數(shù),Y = floor(X)四舍五入函數(shù),看函數(shù)都是從最核心的部分開始看代碼,因?yàn)槠渌淖兞?#xff0c;或者循環(huán)之類都是為,最核心代碼服務(wù)的,[dict,avglen] = huffmandict(symbols,p);%產(chǎn)生霍夫曼編碼詞典,返回編碼詞典dict和平均碼長(zhǎng)avglen,編碼詞典就是說(shuō)比如16編碼為001,15編碼為100,以后在數(shù)據(jù)中出現(xiàn)直接來(lái)字典里面找,huffmanenco(actualsig,dict); %利用dict對(duì)actuals來(lái)編碼,其結(jié)果存放在compress中,matlab的數(shù)據(jù)類型比如uint8直接決定了數(shù)據(jù)的范圍2^8,可以直接在屏幕上disp('hello'),打印輸出,

九,圖像特征分析

圖像特征分析:顏色矩通常直接在RGB空間來(lái)計(jì)算,顏色分布信息主要集中在低階矩,一階矩就是均值,反映了每個(gè)顏色分量的平均強(qiáng)度用函數(shù)mean2(R),二階矩就是方差,即不均勻性std(std(R));???,三階矩是偏度,三階矩用定義,可用這些信息來(lái)辨識(shí)物體;許多圖像識(shí)別系統(tǒng)都采用顏色直方圖作為圖像的顏色特征,它所描述的是不同色彩在整幅圖像中所占的比例,不關(guān)心圖像顏色分布的統(tǒng)計(jì)特性,常用的顏色空間有RGB顏色空間和HSV空間,imhist(I(:,:,1))%顯示紅色分辨率下的直方圖,灰度直方圖的分布,如果都在左邊說(shuō)明該分量主要在較暗的地方出現(xiàn),如果在最右邊說(shuō)明,該分量主要集中在亮處,h = hsv(:, :, 1);%為色調(diào)h賦值,這個(gè)模型中顏色的參數(shù)分別是:色調(diào)(H)大概可以理解為圖像上有幾種顏色,飽和度(S)圖像的鮮艷程度,明度(V)圖像是亮還是暗,這些特征可以用來(lái)做圖像分割,比如分離花和葉子;紋理特征反映物品的質(zhì)地,比如粗糙度、光滑度、顆粒度,隨機(jī)性和規(guī)范性,衛(wèi)星遙感地表圖像的分析常采用紋理分析,這是因?yàn)榈乇淼纳矫}、河流、森林、城市建筑等表現(xiàn)出不同的紋理,下面介紹幾種紋理特征的提取方法比如灰度差分統(tǒng)計(jì),自相關(guān)函數(shù),灰度共生矩陣,還有就是基于頻譜特征的分析系,常用的紋理特征有平均值、對(duì)比度、熵、能量,灰度直方圖不能直接進(jìn)行紋理分析,熵值越大圖形紋理越粗糙,平均值反映圖像的光滑度;自相關(guān)函數(shù)是用來(lái)描述圖像的粗糙度,小數(shù)值的紋理測(cè)度表示細(xì)紋理,大數(shù)值的紋理測(cè)度表示粗紋理,通常采用自相關(guān)函數(shù)作為紋理測(cè)度,mesh()函數(shù)用來(lái)畫三維圖像,光滑的自相關(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ù)說(shuō)明,灰度共生矩陣不直觀,常常需要二階統(tǒng)計(jì)量,matlab用stats = graycoprops(glcm,{'contrast','homogeneity'}),'contrast表示對(duì)比度,homogeneity同質(zhì)性,也就是說(shuō)是對(duì)角線的緊密程度,里面的參數(shù)還可以是Correlation,Energy一個(gè)表示相關(guān),一個(gè)表示能量stats是一個(gè)結(jié)構(gòu)體,contrast是一個(gè)成員變量,具體參考p323;頻譜分析法用來(lái)在傅里葉變換處獲得空間不容易 獲得的紋理特征如周期,功率譜等,實(shí)際應(yīng)用中將頻譜轉(zhuǎn)換到極坐標(biāo)簡(jiǎn)化為S(r,),確定r則S()是一維函數(shù)可以確定以原點(diǎn)為中心的圓上行為特征,給定可以得到從原點(diǎn)某方向上的放射行為,在數(shù)字圖像處理中通常把周期的變?yōu)榉侵芷谔幚?#xff0c;頻譜分析方法還有加伯變換Gabor(gabor)和小波變換具體可以參照P328。

十,圖像形狀特征

10.1形狀特征描述

形狀特征描述一般是在物體從圖像中分割出來(lái)以后進(jìn)行分析,主要包括圖像的輪廓提取和區(qū)域劃分:先對(duì)輪廓進(jìn)行描述在對(duì)邊界特征進(jìn)行描述,鏈碼表示方法就是定好起點(diǎn)后,用4方向或者8方向來(lái)描述圖形,多變形近似,有三種方法1,基于最小周長(zhǎng)的多邊形法即把線段拉直,還有兩種基于最小均方誤差的方法,直接坐標(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)來(lái)統(tǒng)計(jì)區(qū)域內(nèi)的像素點(diǎn)的個(gè)數(shù),2四叉樹描述法S = qtdecomp(I,threshold)該函數(shù)實(shí)現(xiàn)對(duì)四叉樹的分解,I為灰度圖像,threshold為閾值,S為分解后的圖像,blocks = repmat(uint8(0),size(S));%矩陣擴(kuò)充為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);%對(duì)圖像做鏡像變換---鏡像變換 ,log()函數(shù)用于縮小圖像,還有一種方法矩描述

10.2形態(tài)學(xué)數(shù)字圖像處理

形態(tài)學(xué)數(shù)字圖像處理,數(shù)字形態(tài)學(xué)是建立在微分幾何以及隨機(jī)論基礎(chǔ)上的,集合論是數(shù)學(xué)形態(tài)學(xué)的基礎(chǔ),腐蝕運(yùn)算和膨脹運(yùn)算是數(shù)學(xué)形態(tài)學(xué)的兩個(gè)基本變換,參與運(yùn)算就是兩個(gè)對(duì)象,,圖像A感興趣的目標(biāo),圖像B結(jié)構(gòu)元素,結(jié)構(gòu)元素通常是個(gè)圓盤,但是它可以是任何元素,結(jié)構(gòu)元素是腐蝕和膨脹最基本的組成部分,在matlab中結(jié)構(gòu)體元素生產(chǎn)函數(shù)strel()創(chuàng)建任意大小和形狀的結(jié)構(gòu)元素對(duì)象,膨脹是將與物體接觸的所有背景點(diǎn)合并到該物體中,使邊界向外部擴(kuò)張的過(guò)程,通過(guò)膨脹可以填充圖像中的小孔,A+B,腐蝕是消除 邊界點(diǎn),使邊界向內(nèi)部收縮過(guò)程,可以消除小且無(wú)意義的物體,集合被結(jié)構(gòu)元素腐蝕,記為A-B,采用bw2=imdilate(I, se),I是圖像se是結(jié)構(gòu)元素,imerode()可以進(jìn)行腐蝕操作,開運(yùn)算即先采用結(jié)構(gòu)元素做腐蝕運(yùn)算,然后再做膨脹運(yùn)算,使用相同的結(jié)構(gòu)元素,計(jì)為(A-B)+B函數(shù)J=imopen(I, se)通過(guò)開運(yùn)算去除了圖像中比較小的點(diǎn),閉運(yùn)算(A+B)-B,通過(guò)函數(shù)J=imclose(I, se)有利于把區(qū)域連接為一塊;高帽濾波是A-開運(yùn)算,高帽濾波可以增強(qiáng)圖像的對(duì)比度,調(diào)用形式J=imtophat(I, se);,圖像的低帽濾波A-閉運(yùn)算,低帽濾波可以增強(qiáng)圖像的邊緣,調(diào)用形式K=imbothat(I, se);imadd(I, J)圖像相加,imsubtract(I,J)兩個(gè)圖像相減;圖像的填充通過(guò)函數(shù)imfill(),J=imfill(I, 'holes')通過(guò)holes填充圖像中的空洞,返回局部極大值,局部極大值不是最大值,調(diào)用如下bw=imregionalmax(I),此函數(shù)返回的最大值對(duì)應(yīng)1,其它是0,同樣的局部最小值bw=imregionalmin(I);圖像邊界的測(cè)定,通過(guò)膨脹腐蝕獲取圖像邊界,膨脹的結(jié)果減去腐蝕的結(jié)果就是圖像的邊界,還可以通過(guò)函數(shù)bwperim(I,n)獲取二值圖像的邊緣,n在二維圖像中是4或者8連通,二值圖像的形態(tài)學(xué)操作,可以通過(guò)bwmorph()進(jìn)行二值圖像的大量形態(tài)學(xué)操作,例如圖像的骨架化,圖像的細(xì)化,以及開操作和閉操作,函數(shù)功能比較強(qiáng)大,J=bwmorph(I, 'thin');BW2 = bwmorph(BW,operation,n)對(duì)二值圖像進(jìn)行n次指定的形態(tài)學(xué)處理n=Inf表示無(wú)窮大,移除圖像的內(nèi)部點(diǎn)保留邊界也是用的此函數(shù),不過(guò)調(diào)用的參數(shù)為remove,腐蝕膨脹是最基本的形態(tài)學(xué)操作,下面還有一些二值圖像的其他形態(tài)學(xué)操作,包括極限腐蝕,查表操作,圖像的標(biāo)記,對(duì)象的選擇,圖像的面積和歐拉數(shù)等,采用函數(shù)bwulterode()進(jìn)行極限腐蝕,每個(gè)對(duì)象最后變?yōu)橐粋€(gè)像素點(diǎn)為止;查表操作,用函數(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ái)對(duì)二值圖像的領(lǐng)域進(jìn)行操作,LUT為建立的表單,二值圖像的標(biāo)記,對(duì)于不同的連通區(qū)域分配不同的編號(hào),采用函數(shù)bwlabel()只支持二維的二值圖像和bwlabeln()支持任意維度的二值圖像,函數(shù)L=bwlabel(bw,n)n為連通類型為4或者8連通,L標(biāo)記矩陣和原來(lái)的二值圖像具有相同的大小,還可以是[L, num]=bwlabel(BW, 8),num為連通區(qū)域的數(shù)目,二值圖像的對(duì)象選擇使用J=bwselect(I, c, r, 4);c為橫坐標(biāo)數(shù)組,r為坐標(biāo)數(shù)組,4是4連通的意思,函數(shù)的意思就是從I中把這幾個(gè)坐標(biāo)的像素值取出來(lái);二值圖像的面積,面積是二值圖像中像素值為1的像素個(gè)數(shù),采用函數(shù)bwarea()計(jì)算二值圖像的面積,total=bwarea(BW);

十一,小波變換

小波變換家族Waveletfamilies,或者是Waveletfamilies(‘n’),waveinfo('fk')看具體的信息,小波是一種快速衰減的波,震蕩有零值,不像正弦波,縮放,拉伸和縮放,移動(dòng),就是讓小波從左到右在信號(hào)上走,信號(hào)在時(shí)間刻度進(jìn)行縮放,小波有一個(gè)帶通的性質(zhì),相同頻率的比率因子變化導(dǎo)致拉伸小波,對(duì)應(yīng)較低的頻率,較小的比率導(dǎo)致壓縮小波,高頻拉伸小波有助于捕捉緩慢的變化,縮小小波有助于捕獲突然的變化,轉(zhuǎn)移小波變換,離散小波的運(yùn)用是去燥和壓縮,連續(xù)小波變換的輸出是系數(shù),傅里葉變換是一個(gè)全時(shí)域的變換,全時(shí)域也就是說(shuō)是負(fù)無(wú)窮到正無(wú)窮,為了解決傅里葉變換無(wú)限大的問(wèn)題,我們提出了時(shí)窗,即Gabor變換也叫短時(shí)傅里葉變化,但是缺點(diǎn)是分辨率單一,因?yàn)樵跁r(shí)域的窗口小,頻率的就會(huì)寬,一旦寬了之后分辨率就會(huì)降低,一旦時(shí)域確定頻域就會(huì)確定,不太自由,之后就提出了小波變換wavelet transtorm (WT),一元積分相當(dāng)于在某個(gè)方向上的投影,小波這里就去尋找一個(gè)最佳的投影函數(shù)(a,b,t)a是時(shí)窗的中心頻率,b是頻率的量W,壓縮降噪就是把頻率特別小或者特別大的地方去掉,小波變換的其他具體知識(shí)之后再補(bǔ)充,此處介紹小波的MATLAB實(shí)現(xiàn),stem()是柱形的畫圖函數(shù),小波函數(shù)和尺度函數(shù)wavefun2()只適合正交小波,具體參照P387,

小波變換的壓縮是基于人眼對(duì)高頻信息不敏感的特性,低頻部分的分量全部或部分保留,去掉高頻的部分,系數(shù)編碼時(shí)小波變換用于圖像壓縮的核心,壓縮的實(shí)質(zhì)是對(duì)系數(shù)的量化壓縮,Y=wcodemat(X,nbc);%對(duì)圖像的數(shù)值矩陣進(jìn)行偽彩色編碼,wcodemat還有 解壓的能力,[C,S]=wavedec2(X,2,'db4'); %對(duì)圖像小波分解,image()從數(shù)組顯示圖像,下圖a,b分別是壓縮和解壓縮的圖

十二,Simulink數(shù)字圖像處理

Simulink是matlab的圖像化編程工具,video and image processing blockset,此處介紹基于simulink的視頻及數(shù)字圖像處理,在下面這個(gè)地方啟動(dòng),computer vision system toolbox需要先建立simulink,然后在里面的tool里面library找,輸入在sources中設(shè)置圖像路徑,在sinks中的view觀看結(jié)果,直接用鼠標(biāo)把模塊拖到simulink的工作空間或者右鍵直接add進(jìn)來(lái),用鼠標(biāo)即可連線,類型轉(zhuǎn)換是在convertion中,圖像幾何變換,雙擊模塊可以修改里面的參數(shù),其實(shí)一個(gè)模塊就對(duì)應(yīng)著一些matlab的語(yǔ)句,

???????????????????? Analysis&Enhancement?????????????????????????????????????????????????????????????????? Convertions

???????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? Filtering?????????????????????????????????????????????????????????????????????????

??????????????????????????????????????????

?????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 形態(tài)學(xué)操作(? Morephological Operations)

總結(jié)

以上是生活随笔為你收集整理的MATLAB数字图像处理详细总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。