當前位置:編程學習大全網 - 源碼下載 - 如何用matlab繪制函數圖像分析晶格的比重

如何用matlab繪制函數圖像分析晶格的比重

MATLAB的圖像處理工具箱支持多種標準的圖像處理操作,方便用戶對圖像進行分析和調整。這些圖像處理操作主要包括:①獲取像素值及其統計數據;②分析圖像,提取其主要結構信息;③調整圖像以突出顯示某些特征或抑制噪點。

像素值及其統計

MATLAB的圖像處理工具箱提供了幾個函數來返回與圖像的數據值相關的信息,可以以多種形式返回圖像數據的信息,主要包括:①所選像素的數據值(pixval函數和impixel函數);②圖像中沿路徑的數據值(improfile函數);③圖像數據的等高線圖(imcontour函數);④圖像數據直方圖(imhist函數);⑤圖像數據匯總統計(mean2函數、std2函數、corr2函數);⑥圖像區域的特征度量(imfeature函數)

像素選擇圖像處理工具箱包含兩個函數,可以返回用戶指定的圖像像素的顏色數據值。1) pixval函數當光標在圖像上移動時,該函數以交互的方式顯示像素的數據值。此外,該功能還可以顯示兩個像素之間的歐氏距離。

2) impixel函數impixel函數可以返回所選像素或像素集的數據值。用戶可以直接使用像素坐標作為該函數的輸入參數,也可以用鼠標選擇像素。示例:

imshow canoe.tif

val = impixel

對於索引圖像,pixel函數和impixel函數都將它們顯示為存儲在彩色圖像中的RGB值,而不是索引值。

亮度描述圖在MATLAB圖像處理工具箱中,提供了improfile函數,用於計算並繪制圖像中沿直線段路徑或直線路徑的亮度(灰度)值。示例:

im show deb Yel . TIF;

即興表演

imshow canoe.tif

即興表演

示例:

RGB = im read(' flowers . TIF ');

圖(1);imshow(RGB);

即興表演

在灰度圖中顯示圖像等高線圖時,可以使用MATLAB圖像處理工具箱中的imcontour函數。這個函數類似於輪廓函數,比輪廓函數功能更多。它可以自動設置坐標軸對象,使其方向和長寬比與顯示的圖形相匹配。示例:

I = im read(' rice . TIF ');

imshow(壹);

圖;等值線圖(壹)

I = im read(' rice . png ');

imshow(壹);

圖;等值線圖(壹)

圖像直方圖圖像直方圖可用於顯示索引圖像或灰度圖像中的灰度分布。利用MATLAB圖像處理工具箱中的imhist函數可以創建直方圖。示例:以大米的灰度地圖為例,創建地圖的直方圖。其代碼如下:

I = im read(' rice . TIF ');

imhist(I,64);

I = im read(' rice . png ');

imhist(I,64);

映象分析

MATLAB中的圖像分析技術可以提取圖像的結構信息。例如,由圖像處理工具箱提供的邊緣函數可以用於檢測邊界。這裏所謂的邊界,其實就是圖像中包含的物體的位置。以下是壹些常見的圖像分析功能。1.灰度圖像的邊緣:邊緣函數該函數的語法如下:

BW=edge(I,方法)

返回與I大小相同的二進制圖像BW,其中元素I是discovery i中的邊緣,Method是以下字符串之壹:' sobel ':默認值,導數的Sobel近似用於檢測邊緣,那些梯度最大的點返回邊緣;‘Prewitt’:利用導數的Prewitt近似來檢測邊緣,並且返回在那些具有最大梯度的點處的邊緣;‘Roberts’:用導數的Roberts近似來檢測邊緣,並在那些具有最大梯度的點處返回邊緣;' Log ':通過高斯濾波器的拉普拉斯運算對I進行濾波,通過尋找零交點來檢測邊緣。‘零交叉’:在用指定的過濾器過濾I之後,找到零交叉檢測邊緣。

BW=edge(I,方法,閾值)

Thresh用於指定靈敏度閾值,所有不超過thresh的邊緣都將被忽略。

BW=edge(I,方法,閾值,方向)

指定“sobel”和“prewitt”方法的方向;Direction是壹個字符串:“水平”表示水平方向,“垂直”表示垂直方向,“兩者”是兩個方向(默認值)。

BW=edge(I,' log ',thresh,sigma)

用sigma指定標準偏差。

[BW,thresh]=edge(…)。

行四叉樹分解:qtdecomp函數將壹幅圖像分成四個大小相同的塊,然後判斷每個塊是否滿足相同的標準。如果有,就不分解,否則再細分成四個塊,每個塊都應用測試標準。分解過程會壹直重復,直到符合標準,結果可能包含大小不壹的塊。該函數的語法結構如下:

s = Qt decop(I)

對灰度圖像I進行四叉樹分解,返回四叉樹結構的稀疏矩陣S。

s = Qt decop(I,閾值)

如果塊中元素的最大值減去最小值大於閾值,則分解該塊。閾值是介於0和1之間的值。

s = Qt decop(I,threshold,mindim)

如果塊小於mindim,則不管是否滿足閾值條件,都不會被分解。

S=qtdecomp(I,threshold,[mindim maxdim])

如果塊小於mindim或大於maxdim,則不分解,maxdim/mindim必須是2的冪。

S=qtdecomp(I,FUN)

使用fun函數確定是否分解塊。

S=qtdecomp(I,FUN,P1,P2,…)

獲取四叉樹分解塊值:qtdgetblk函數該函數的語法結構如下:

[VALS,R,C]=qtdgetblk(I,S,dim)

VALS的dim×dim塊對應的值替換qtdecomp函數返回的I. S稀疏矩陣的四叉樹分解中的每個dim×dim塊,包括四叉樹結構;VALS是dim×dim×k的數組,K是四叉樹分解的dim×dim塊的個數。如果沒有指定大小的塊,則返回壹個空矩陣。r和c是包含塊左上角的行和列坐標的向量。

[IDX VALS]= qtdgetblk(I,S,dim)

返回塊左上角直線索引的矢量IDX。

設置四叉樹分解塊值:qtsetblk函數

J=qtsetblk(I,S,dim,VALS)

用對應於VALS中的dim×dim塊的值替換I的四叉樹分解中的每個dim×dim塊。qtdecomp函數返回的s稀疏矩陣,包括四叉樹結構;VALS是dim×dim×k的數組,K是四叉樹分解的dim×dim塊的個數。

示例1)圖像分析中的灰度邊緣檢測示例

%調入並顯示RGB圖像

* RGB = im read(' flowers . TIF ');

ISR GB(RGB);

圖(1);imshow(RGB);

RGB = im read(' autumn . TIF ');

ISR GB(RGB);

圖(1);imshow(RGB);

% RGB圖像已轉換為灰度圖像

I = RGB 2 gray(RGB);

圖(2);imshow(壹);

color bar(“horiz”);

isgray(壹);

%邊緣檢測

ED=edge(I,'索貝爾',0.08);

圖(3);im show(ED);

Sobel邊界檢測器和Canny邊界檢測器在圖像分析中的應用實例操作對象仍然是上面提到的rice.tif圖像為例。其代碼如下:

I = im read(' rice . TIF ');

I = im read(' rice . png ');

BW1=edge(I,' Sobel ');

BW2=edge(I,' canny ');

圖(1);im show(bw 1);

圖(2);im show(BW2);

圖形控制

利用MATLAB中的圖像高速技術來改善圖像。這裏的“提高”有兩層意思,即客觀方面,比如提高圖像的信噪比;主觀上比如通過對圖像的顏色和強度(灰度)進行校正,壹些特征更容易識別。1.對比度增強在MATLAB中,相關的函數有:1)對比度調整函數:imadjust函數該函數可用於調整灰度值或顏色圖,其用法為:

J=imadjust(I,[低高],[底部頂部],伽瑪)

將灰度圖像I轉換為圖像J,並使值從低到高、從下到上匹配。大於上限值或小於下限值的值被截斷,即小於下限值的值匹配下限值,大於上限值的值匹配上限值。使用該函數時,可以將[低高]或[底高]指定為空矩陣[],默認值為[0 1]。Gamma用於指定描述I和J值之間關系的曲線形狀;gamma & lt1,越亮輸出值越強;伽馬& gt1,越亮輸出值越弱;默認gamma=1,表示線性變換。

newmap=imadjust(map,[低高],[底部頂部],伽瑪)

轉換索引圖像的顏色映射。如果[low high]和[bottom top]都是2×3矩陣,那麽gamma就是1×3向量,紅、綠、藍分量分別用imadjust函數進行調整,調整後的顏色圖newmap的大小與原圖相同。

RGB=imadjust(RGB1,…)

調整RGB圖像RGB1的每個圖像塊。與調整色彩映射表壹樣,通過指定[低高]和[底部頂部]為2×3矩陣,gamma為1×3向量,可以為每個圖像塊使用不同的參數值。如果頂部

2)函數:brighten函數該函數的用法是:brighten(beta)使現有的顏色圖變亮或變暗。如果為0

貼圖=變亮(beta)

返回當前使用的顏色貼圖的較亮或較暗的變換顏色貼圖,但不更改現有顯示。

NEWMAP=brighten(MAP,beta)

返回指定色彩映射表經過更亮或更暗的變換後的新色彩映射表NEWMAP,但不改變顯示。

增亮(圖,測試版)

增強圖的所有對象。

3)直方圖調整法在MATLAB中,histeq函數使用直方圖均衡化來增強對比度。直方圖均衡化通過轉換灰度圖像的亮度值或索引圖像的色彩映射值來增強圖像對比度,輸出圖像的直方圖與給定的直方圖近似匹配。

J=histeq(I,hgram)

變換灰度圖像I,使得輸出圖像J的直方圖具有長度(hgram)條,其近似匹配hgram。向量hgram包含等間距條的灰度值的整數計數。

J=histeq(I,N)

將灰度圖像I轉換為具有n個離散灰度級的灰度圖像J,n的默認值為64。

[J,T]=histeq(I)

返回灰度變換,使j的灰度與I的灰度相匹配。

NEWMAP=histeq(X,MAP,hgram)

變換索引圖像X的顏色圖,使得索引圖像(X,NEWMAP)的灰度級分量與hgram相匹配。返回轉換後的顏色映射NEWmap,長度(hgram)必須與大小(MAP,1)相同。輸入圖像可以是uint8或雙精度類型。輸出顏色圖通常是雙精度類型。輸出t也是雙精度類型。

圖像平滑圖像平滑主要用於因幹擾而質量下降的圖像。在MATLAB圖像處理工具箱中,與圖像噪聲相關的函數有:1)給圖像添加噪聲:imnoise函數。該功能的用法是:

J=imnoise(I,type,…)

Type noise被添加到灰度圖像I. Type是下列字符串之壹:' Gaussian ':添加高斯白噪聲;鹽& amp' Pepper ':添加黑白像素;“斑點”:增加乘法噪聲。其他參數根據類型確定。

J=imnoise(I,'高斯',M,V)

將均值為m、方差為v的高斯白噪聲加到圖像I上,默認值為0,方差為0.01。

J=imnoise(I,'鹽& amp胡椒

將強度為d的“樹鹽”黑白像素添加到圖像I。效果類似於:D*prod(大小(I))像素。默認強度為0.05。

J=imnoise(I,“斑點”,V)

使用公式J=I+n*I,乘法噪聲被添加到圖像I,其中n是平均值為0且方差為v的均勻分布的隨機噪聲..v的默認值為0.04。圖像I類型為uint8或雙精度值,輸出圖像j與I類型壹致。

2)二維中值濾波器:medfilt2 2函數。

B=medfilt2(A,[M N])

對矩陣a進行二維中值濾波,每個輸出像素包含輸入圖像中對應像素周期的M×N鄰域的中值。在圖像邊緣加0,這樣邊緣在[M N]/2以內的點可能會失真。[M N]的默認值為[3 ^ 3]。

B=medfilt2(A,'索引',…)

把A當作索引圖,如果A是uint8,就填0;如果a是雙精度類,則填充1。

3)狀態統計濾波器:ordfilt2 2函數。

Y=ordfilt2(X,順序,域)

用域中非零元素指定的鄰域有序集中的有序元素替換x中的每個元素。定義域是壹個只包含0和1的矩陣,1只定義了濾波運算的鄰域。

Y=ordfilt2(X,順序,域,S)

S和domain壹樣大,用domain的非零值對應的S的值作為附加補償。

4)二維自適應去噪濾波器:wiener2函數wiener2函數估計每個像素的局部均值和方差,該函數的用法如下:

J=wiener2(I,[M N],噪聲)

利用M×N大小鄰域內局部圖像的均值和偏差,對圖像I進行像素自適應濾波。

[J,噪聲]=wiener2(I,[M N])

在濾波之前,估計附加噪聲的能量。

特定區域處理

區域的指定

在圖像處理中,有時只需要處理圖像中的特定區域,而不需要處理整個圖像。在MATLAB中,通過二進制掩碼實現對特定區域的處理。選擇壹個區域後,將生成壹個與原圖像大小相同的二值圖像。所選區域為白色,其余區域為黑色。通過屏蔽圖像,可以實現對特定區域的選擇性處理。下面介紹創建區域的方法:1。多邊形選擇方法roipoly函數用於設置圖像中的多邊形區域,該函數返回與輸入圖像大小相同的二值圖像BW。所選區域的值為1,其余區域的值為0。其語法格式為:

BW=roipoly(I,c,r)

它的功能是用向量C和R指定多邊形每個角的X和Y軸坐標..

BW=roipoly(I)

它的作用是讓用戶交互選擇多邊形區域,通過點擊鼠標設置多邊形區域的角點,用空格鍵和Del鍵取消選擇,回車確認選擇。確認後,該函數返回與輸入圖像大小相同的二值圖像BW,多邊形區域的像素值為1,其余區域為0。

BW=roipoly(x,y,I,,yi)

它的作用是用向量X和Y建立壹個非默認的坐標系,然後在指定的坐標系中選擇向量和yi指定的多邊形區域。

[BW,,yi]=羅保利(…)

它的功能是交互式地選擇多邊形區域,並返回多邊形拐角的坐標。

[x,y,BW,,yi]=roipoly(…)

其作用是交互選擇多邊形區域後,返回多邊形頂點在指定坐標系X-Y中的坐標。

示例:根據指定坐標選擇六邊形區域的程序列表:

I = im read(' eight . TIF ');

c =[222 272 300 272 222 194];

r =[21 21 75 121 121 75];

BW=roipoly(I,c,r);

圖(1);imshow(壹);

圖(2);im show(BW);

其他選擇方法MATLAB的圖像處理工具箱提供了可以根據灰度選擇區域的函數roicolor,其語法格式為:

BW=roicolor(A,低,高)

它的作用是將圖像按照指定的灰度範圍進行劃分,返回二值掩碼BW,其中【低,高】為所選區域的灰度範圍。如果low大於high,則返回壹個空矩陣。

BW=roicolor(A,v)

其功能是根據矢量v中指定的灰度值選擇區域。以下是根據灰度級分割圖像中對象的程序列表:

I = im read(' rice . TIF ');

I = im read(' rice . png ');

BW=roicolor(I,128,255);

圖(1);imshow(壹);

圖(2);im show(BW);

特定區域過濾

MATLAB圖像處理工具箱中提供的roifilt2 2函數用於過濾特定區域,其語法格式為:

J=roifilt2(h,I,BW)

它的作用是使用濾波器H對圖像I中二值掩碼BW選擇的區域進行濾波..

J=roifilt2(I,BW,fun)

J=roifilt2(I,BW,fun,P1,P2,…)

它的作用是對圖像I中二值掩碼BW選擇的區域進行函數運算fun,其中fun是描述函數運算的字符串,參數為P1,P2,...返回的圖像J在選定區域中的像素是圖像I有趣操作的結果,其余像素值是I的原始值..

示例:用於銳化和過濾指定區域的程序列表:

I = im read(' eight . TIF ');

c =[222 272 300 272 222 194];

r =[21 21 75 121 121 75];

BW=roipoly(I,c,r);

h = f special(' unsharp ');

J=roifilt2(h,I,BW);

支線劇情(1,2,1);imshow(壹);

支線劇情(1,2,2);imshow(J);

運行結果顯示,右上角的硬幣發生了變化,而其他硬幣保持不變。

特定區域填充

MATLAB圖像處理工具箱中提供的Roifill函數用於填充特定區域,其語法格式為:

J=roifill(I,c,r)

它的作用是填充由向量c和r指定的多邊形,其中c和r分別是多邊形每個頂點的x和y坐標。它通過求解邊界的拉普拉斯方程,利用多邊形邊界點的灰度平滑插值,得到多邊形內部的點。通常,圖像中的壹小塊區域可以通過填充指定區域來“擦除”。

J=roifill(I)

其功能是通過用戶交互選擇填充區域。選擇多邊形的角點後,按Enter鍵確認選擇,並使用空格鍵和Del鍵取消選擇。

J=roifill(I,BW)

其功能是選擇具有掩模圖像BW的區域。

[J,BW]=roifill(…)

它的功能是在填充區域的同時返回掩模圖像BW。

J=roifill(x,y,I,,yi)

[x,y,J,BW,,yi]=roifill(…)

它的作用是在指定的坐標系X-Y中填充由矢量和Yi指定的多邊形區域

示例:以下是為人口指定的區域計劃列表:

I = im read(' rice . TIF ');

I = im read(' rice . png ');

c =[52 72 300 270 221 194];

r =[71 21 75 121 121 75];

J=roifill(I,c,r);

支線劇情(1,2,1);imshow(壹);

支線劇情(1,2,2);imshow(J);

讀取圖形圖像文件

與圖形圖像文件操作相關的函數save壹直加載或保存MAT文件中的矩陣數據,加載或保存圖形文件格式的圖像,如BMP、TIFF、Imread、imwrite,顯示圖像加載在MATLAB7.0中,imagesc信息查詢Imfinfo、ind2rgb。

讀取圖形圖像文件

主呼叫格式:

A=imread(文件名,fmt) [X,映射]=imread(文件名,fmt)

[…]=imread(文件名)[…]=imread(URL,…)

[…]=imread(…,idx)(僅限CUR、ICO和TIFF)

[…]=imread(…,idx)(僅限CUR、ICO和TIFF)

[…]=imread(…,' frames ',idx)(僅適用於GIFF)

[…]=imread(…,ref)(僅限HDF)

[…]=imread(…,' BackgroundColor ',BG)(僅限PNG)

[A,map,alpha]=imread(…)(僅限CUR,ICO與PNG)

最基本的呼叫格式:

[X,map]=imread(文件名,fmt)

*imread('rice.png ',' 5 ');%讀取rice.png文件的第5幀圖像。

* RGB = im read(' earth . jpg ');

%將圖像earth.jpg讀入MATLAB7.0平臺,讀取數據矩陣為變量RGB。

圖形圖像文件的寫入和顯示

使用imwrite完成寫入圖形圖像文件的操作:基本調用格式:imwrite(X,map,filename,fmt)

加載小醜%根據地圖格式(MATLAB數據文件格式)加載圖像。

Imwrite(X,地圖,'小醜。JPG))%保存為包含小醜圖像的JPG文件。

圖像函數可用於顯示圖像,其語法格式為:

image(C) image(x,y,C) image(…,' PropertyName ',PropertyValue,…)

image('PropertyName ',PropertyValue,…) handle=image(…)

imagesc函數類似於image函數,但它可以自動縮放輸入數據。

加載小醜%根據地圖格式(MATLAB數據文件格式)加載圖像。

Image(10,10,X)%顯示壹個小醜圖像,圖像左上角坐標為(0,0)。

色彩映射表(地圖)%

高級圖像顯示功能imshow,其語法格式為:

imshow(I,n) imshow(I,[低,高]) imshow(BW) imshow(X,map)

imshow(RGB) imshow(…,display_option) imshow(x,y,A,…) imshow文件名

h=imshow(…)

I=imread('rice.png ')

j = filter 2([1 2;-1 -2],I)% template[1 2;-1–2]過濾圖像。

imshow(壹)

圖,imshow(J,[])

用圖像閱讀器顯示圖像

圖像閱讀器的開關

1.在圖像查看器中顯示圖像:imview。

moon fig = im read(' moon . TIF ');

imview(moonfig)

imview('moon.tif ')

指定圖像的起始大小(1),設置Imviewinitialmaginfication屬性為' fit ',默認值為100,100%顯示。(2)使用imview函數中的Initialmagnification參數,並將值指定為“FIT”。

imshow(X,map,' InitialMaginfication ',' fit ')

要關閉圖像查看器,直接單擊窗口下的關閉按鈕,或使用以下語句關閉它:imview close all。

參考教材:《數字圖像處理與MATLAB實現》,於主編,重慶大學出版社TN911.73

  • 上一篇:C:\WINDOWS\systen32\Wmupdate.dll 出錯
  • 下一篇:發送示例源代碼
  • copyright 2024編程學習大全網