導航:首頁 > 使用方法 > 格圖使用方法

格圖使用方法

發布時間:2023-03-19 00:45:00

① matlab畫函數圖像怎麼分析格圖比重

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

像素值及其統計
MATLAB的影像處理工具箱提供了多個函數以返回與構成圖像的數據值相關的信息,這些函數能夠以多種形式返回圖像數據的信息,主要包括: ①選定像素的數據值(pixval函數和impixel函數); ②沿圖像中某個路徑的數據值(improfile函數); ③圖像數據的輪廓圖(imcontour函數); ④圖像數據的柱狀圖(imhist函數); ⑤圖像數據的摘要統計值(mean2函數、std2函數和corr2函數); ⑥圖像區域的特徵度量(imfeature函數)

像素選擇 影像處理工具箱中包含兩個函數可返回用戶指定的圖像像素的顏色數據值。 1) pixval函數 當游標在圖像上移動時,該函數以交互的方式顯示像素的數據值。另外,該函數還可以顯示兩個像素之間的Euclidean距離。
2) impixel函數 impixel函數可以返回選中像素或像素集的數據值。用戶可以直接將像素坐標作為該函數的輸入參數,或用滑鼠選中像素。 例:

imshow canoe.tif;
val=impixel
對於索引圖像,pixel函數和impixel函數都將其顯示為存儲在顏色映像中的RGB值而不是索引值。

強度描述圖 在MATLAB影像處理工具箱中,提供了improfile函數用於沿著圖像中一條直線段路徑或直線路徑計算並繪制其強度(灰度)值。 例:
imshow debyel.tif;
improfile

imshow canoe.tif;
improfile
例:

RGB=imread('flowers.tif');
figure(1);imshow(RGB);
improfile
圖像輪廓圖 在灰度圖的輪廓圖顯示時,可利用MATLAB影像處理工具箱中的imcontour函數。該函數類似於contour函數,與contour函數相比,其功能更全。它能夠自動設置坐標軸對象,從而使得其方向和縱橫比能夠與所顯示的圖形相匹配。 例:
I=imread('rice.tif');
imshow(I);
figure;imcontour(I)

I=imread('rice.png');
imshow(I);
figure;imcontour(I)
圖像柱狀圖 圖像柱狀圖可以用來顯示索引圖像或灰度圖像中的灰度分布。可利用MATLAB影像處理工具箱中的imhist函數創建柱狀圖。 例:以前面介紹的大米灰度圖為例來創建該圖的柱狀圖。其代碼如下:
I=imread('rice.tif');
imhist(I,64);

I=imread('rice.png');
imhist(I,64);
圖像分析
MATLAB中的圖像分析技術可以提取圖像的結構信息。例如,可以利用影像處理工具箱提供的edge函數來探測邊界。這里所謂的邊界,其實就是圖像中包含的對象所對應的位置。下面介紹幾種常見圖像分析函數。 1. 灰度圖像的邊緣:edge函數 該函數的語法如下:

BW=edge(I,method)
返回與I大小一樣的二進制圖像BW,其中元素I為發現I中的邊緣。method為下列字元串之一: 『sobel』:預設值,用導數的sobel近似值檢測邊緣,那些梯度最大點返回邊緣; 『prewitt』:用導數的prewitt近似值檢測邊緣,在那些梯度最大點返回邊緣; 『roberts』:用導數的roberts近似值檢測邊緣,在那些梯度最大點返回邊緣; 『log』:使用高斯濾波器的拉普拉斯運算對I進行濾波,通過尋找0相交檢測邊緣。 『zerocross』:使用指定的濾波器對I濾波後,尋找0相交檢測邊緣。

BW=edge(I,method,thresh)
用thresh指定靈敏度閾值,所有不強於thresh的邊緣都被忽略。

BW=edge(I,method,thresh,direction)
對於』sobel』和』prewitt』方法指定方向; direction為字元串:』horizontal』表示水平方向,』vertical』表示垂直方向,』both』兩個方向(預設值)。

BW=edge(I,』log』,thresh,sigma)
用sigma指定標准偏差。

[BW,thresh]=edge(…)。
行四叉樹分解:qtdecomp函數 將一塊圖像分成四塊等大小的方塊,然後判斷每塊是否滿足同性質的標准,如果滿足,則不再分解,否則,再進行細分成四塊,並對每塊應用測試標准,分解過程重復迭代下去,直到滿足標准,結果可能包含不同大小的塊。該函數的語法結構如下:
S=qtdecomp(I)
對灰度圖像I進行四叉樹分解,返回四叉樹結構的稀疏矩陣S。

S=qtdecomp(I,threshold)
如果塊中元素最大值減去最小值大於threshold,則分解塊。threshold為0到1之間的值。

S=qtdecomp(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塊的值取代I的四叉樹分解中的每個dim×dim塊。S由qtdecomp函數返回的稀疏矩陣,包含四叉樹結構;VALS是dim×dim×k數組,k是四叉樹的分解的dim×dim塊的數量。如果沒有指定大小的塊,則返回一個空矩陣。R和C為包含塊左上角行列坐標的向量。

[VALS,IDX]=qtdgetblk(I,S,dim)
返回塊左上角直線索引的向量IDX。

設置四叉樹分解塊值:qtsetblk函數
J=qtsetblk(I,S,dim,VALS)
用VALS中對應dim×dim塊的值取代I的四叉樹分解中的每個dim×dim塊。S由qtdecomp函數返回的稀疏矩陣,包含四叉樹結構;VALS是dim×dim×k數組,k是四叉樹的分解的dim×dim塊的數量。

實例 1)圖像分析中的灰度邊緣檢測實例
%調入與顯示RGB圖像
*RGB=imread('flowers.tif');
isrgb(RGB);
figure(1);imshow(RGB);

RGB=imread('autumn.tif');
isrgb(RGB);
figure(1);imshow(RGB);

% RGB圖像轉換為灰度圖像
I=rgb2gray(RGB);
figure(2);imshow(I);
colorbar('horiz');
isgray(I);

% 邊緣檢測
ED=edge(I,'sobel',0.08);
figure(3);imshow(ED);
2) Sobel邊界探測器和Canny邊界探測器在圖像分析中的應用實例 操作的對象仍以前面提到rice.tif圖像為例。其代碼如下:

I=imread('rice.tif');

I=imread('rice.png');
BW1=edge(I,'sobel');
BW2=edge(I,'canny');
figure(1);imshow(BW1);
figure(2);imshow(BW2);
圖像調整
MATLAB中的圖像高速技術用於圖像的改善。此處的「改善」有兩個方面的含義,即:客觀方面,例如提高圖像的信噪比;主觀方面,例如通過修正圖像的顏色和強度(灰度)使其某些特徵更容易辨識。 1. 對比度增強 在MATLAB中,有關函數有: 1) 對比度調整函數:imadjust函數 該函數可用於調整灰度值或顏色圖,其用法為:

J=imadjust(I,[low high],[bottom top],gamma)
將灰度圖像I轉換為圖像J,使值從low到high與從bottom到top相匹配。值大於high或小於low的被剪去,即小於low的值與bottom相匹配,大於high的值與top相匹配。使用該函數時可將[low high]或[bottom top]指定為空矩陣[ ],此時預設值為[0 1]。Gamma用來指定描述I和J值關系曲線的形狀;gamma < 1,越亮輸出值越加強;gamma > 1,越亮輸出值越減弱;預設gamma=1,表示線性變換。

newmap=imadjust(map,[low high],[bottom top],gamma)
對索引圖像的顏色圖進行變換。如果[low high]和[bottom top]均為2×3矩陣,則gamma為1×3向量,imadjust函數分別調整紅、綠、藍成分,調整後的顏色圖newmap大小與原來的map一樣。

RGB=imadjust(RGB1,…)
對RGB圖像RGB1的每個圖像塊進行調整。與調整顏色圖一樣,通過指定[low high]和[bottom top]均為2×3矩陣,gamma為1×3向量,對每個圖像塊可以使用不同的參數值。如果top < bottom,則圖像顏色或灰度將倒置,即倒置變換,得到原圖的底片。輸入圖像可以是uint8或雙精度類型值,輸出圖像與輸入圖像類型一樣。

2) 函數:brighten函數 該函數的用法為:brighten(beta) 使現有顏色圖變成更亮或更暗的圖。如果0 < beta ≤1,則顏色圖增亮;-1≤beta < 0,則顏色圖變暗。brighten(beta)可以使用brighten(-beta)還原。

MAP=brighten(beta)
返回當前使用的顏色圖的更亮或更暗變換後的顏色圖MAP,但不改變現有的顯示。

NEWMAP=brighten(MAP,beta)
返回指定顏色圖MAP的更亮或更暗變換後的新顏色圖NEWMAP,但不改變顯示。

brighten(FIG,beta)
增強圖FIG的所有物體。

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

J=histeq(I,hgram)
轉換灰度圖像I,使輸出圖像J的直方圖具有length(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,length(hgram)必須與size(MAP,1)一樣。 輸入圖像可以是uint8或雙精度類型。輸出顏色圖通常為雙精度類型。輸出T也是雙精度類型。

圖像平滑 圖像平滑主要用於受干擾而質量降低的圖像,在MATLAB圖像處理工具箱中有關圖像雜訊的函數有: 1) 向圖像增加雜訊:imnoise函數 該函數的用法為:
J=imnoise(I,type,…)
向灰度圖像I中增加type類型雜訊。Type為下列字元串之一: 『gaussian』:增加GAUSS白雜訊; 『salt & pepper』:增加黑白像素點; 『speckle』:增加乘法雜訊。 根據類型再確定其他參數。

J=imnoise(I, 『gaussian』,M,V)
在圖像I中加入均值為M、方差為V的高斯白雜訊。預設值為0,方差為0.01的雜訊。

J=imnoise(I, 『salt & pepper』,D)
在圖像I中加入強度為D的「樹鹽」黑白像素點。其效果近似於:D*prod(size(I))像素。預設強度為0.05。

J=imnoise(I, 『speckle』,V)
使用公式J=I+n*I,向圖像I中加入乘法雜訊,其中n是均值為0,方差為V的均勻分布隨機雜訊。V預設值為0.04。 圖像I類型為uint8或雙精度值,輸出圖像J與I類型一致。

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

B=medfilt2(A,[M N])
對矩陣A進行二維中值濾波。每個輸出像素包含輸入圖像中相應像素周期的M×N鄰域的中值。在圖像邊緣添加0,因此邊緣在[M N]/2內的點可能發生扭曲。[M N]預設值為[3 3]。

B=medfilt2(A,』indexed』,…)
將A當作索引圖像處理,如果A為uint8類,填補0;如果A為雙精度類,則填補1。

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

Y=ordfilt2(X,order,domain)
由domain中非0元素指定鄰域的排序集中的第order個元素代替X中的每個元素。Domain是一個僅包括0和1的矩陣,1僅定義濾波運算的鄰域。

Y=ordfilt2(X,order,domain,S)
S與domain一樣大,用與domain的非0值相應的S的值作為附加補償。

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

J=wiener2(I,[M N],noise)
使用M×N大小鄰域局部圖像均值與偏差,採用像素式自適應濾波器對圖像I進行濾波。

[J,noise]=wiener2(I,[M N])
濾波前還有估計附加雜訊的能量。

特定區域處理
區域的指定
在進行圖像處理時,有時只要對圖像中某個特定區域進行處理,並不需要對整個圖像進行處理。MATLAB中對特定區域的處理是通過二值掩模來實現的,通過選定一個區域後會生成一個與原圖大小相同的二值圖像,選定的區域為白色,其餘部分為黑色。通過掩模圖像,就可以實現對特定區域的選擇性處理。下面介紹創建區域的方法: 1. 多邊形選擇方法 roipoly函數用於設定圖像中的多邊形區域,該函數返回與輸入圖像大小一致的二值圖像BW,選中的區域值為1,其餘的部分值為0。其語法格式為:

BW=roipoly(I,c,r)
其功能是:用向量c、r指定多邊形各角點的X、Y軸的坐標。

BW=roipoly(I)
其功能是:是讓用戶交互選擇多邊形區域,通過點擊滑鼠設定多邊形區域的角點,用空格鍵和Del鍵撤銷選擇,按Enter鍵確認選擇,確認後該函數返回與輸入圖像大小一致的二值圖像BW,在多邊形區域內像素值為1,其餘區域內像素值為0。

BW=roipoly(x,y,I,xi,yi)
其功能是:是用矢量x、y建立非默認的坐標系,然後在指定的坐標系下選擇由向量xi、yi指定的多邊形區域。

[BW,xi,yi]=roipoly(…)
其功能是:交互選擇多邊形區域,並返回多邊形角點的坐標。

[x,y,BW,xi,yi]=roipoly(…)
其功能是:交互選擇多邊形區域後,還返回多邊形頂點在指定的坐標系X-Y下的坐標。

例:根據指定的坐標選擇一個六邊形區域的程序清單:

I=imread('eight.tif');
c=[222 272 300 272 222 194];
r=[21 21 75 121 121 75];
BW=roipoly(I,c,r);
figure(1);imshow(I);
figure(2);imshow(BW);
其他選擇方法 MATLAB圖像處理工具箱中提供了可以實現按灰度選擇區域的函數roicolor函數,其語法格式為:
BW=roicolor(A,low,high)
其功能是:按指定的灰度范圍分割圖像,返回二值掩模BW,[low,high]為所要選擇區域的灰度范圍。如果low大於high,則返回為空矩陣。

BW=roicolor(A,v)
其功能是:按向量v中指定的灰度值來選擇區域。 下面是一個按灰度分割圖像中的目標的程序清單:

I=imread('rice.tif');

I=imread('rice.png');
BW=roicolor(I,128,255);
figure(1);imshow(I);
figure(2);imshow(BW);
特定區域濾波
MATLAB圖像處理工具箱中提供的roifilt2函數用於對特定區域進行濾波,其語法格式為:

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經fun運算的結果,其餘部分的像素值為I的原始值。

例:對指定區域進行銳化濾波的程序清單:

I=imread('eight.tif');
c=[222 272 300 272 222 194];
r=[21 21 75 121 121 75];
BW=roipoly(I,c,r);
h=fspecial('unsharp');
J=roifilt2(h,I,BW);
subplot(1,2,1);imshow(I);
subplot(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,xi,yi)
[x,y,J,BW,xi,yi]=roifill(…)
其功能是:在指定的坐標系X-Y下填充由向量xi,yi指定的多邊形區域。

例:下面是一個為填充指定的區域程序清單:

I=imread('rice.tif');

I=imread('rice.png');
c=[52 72 300 270 221 194];
r=[71 21 75 121 121 75];
J=roifill(I,c,r);
subplot(1,2,1);imshow(I);
subplot(1,2,2);imshow(J);

圖形圖像文件的讀取
圖形圖像文件操作 相關的函數 已MAT文件載入或保存矩陣數據 Load、save 載入或保存圖形文件格式的圖像,如BMP、TIFF等 Imread、imwrite 顯示載入到MATLAB7.0中的圖像 Image、imagesc 信息查詢 Imfinfo、ind2rgb

圖形圖像文件的讀取
主要調用格式:

A=imread(filename,fmt) [X,map]=imread(filename,fmt)
[…]=imread(filename) […]=imread(URL, …)
[…]=imread(…,idx) (CUR,ICO,and TIFF only)
[…]=imread(…,idx) (CUR,ICO,and TIFF only)
[…]=imread(…,』frames』,idx) (GIFF only)
[…]=imread(…,ref) (HDF only)
[…]=imread(…,』BackgroundColor』,BG) (PNG only)
[A,map,alpha]=imread(…) (CUR,ICO,and PNG only)
最基本調用格式:

[X,map]=imread(filename,fmt)

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

*RGB=imread(『earth.jpg』);
%將圖像earth.jpg讀入MATLAB7.0工作平台,讀取數據矩陣為變數RGB
圖形圖像文件的寫入與顯示
用imwrite來完成圖形圖像文件的寫人操作: 基本調用格式:imwrite(X,map,filename,fmt)
load clown %根據MAP格式(MATLAB數據文件格式)裝載圖像
imwrite(X,map,'clown.jpg') %保存為一幅包含小丑圖像的JPG文件
可用image函數顯示圖像,其語法格式:
image(C) image(x,y,C) image(…,』PropertyName』,PropertyValue, …)
image(』PropertyName』,PropertyValue, …) handle=image(…)
函數imagesc與image函數類似,但是它可以自動標度輸入數據

load clown %根據MAP格式(MATLAB數據文件格式)裝載圖像
image(10,10,X) %顯示一幅小丑圖像,圖像的左上角坐標為(0,0)
colormap(map) %
高級圖像顯示函數imshow,其語法格式為:
imshow(I,n) imshow(I,[low,high]) imshow(BW) imshow(X,map)
imshow(RGB) imshow(…,display_option) imshow(x,y,A, …) imshow filename
h=imshow(…)

I=imread('rice.png')
J=filter2([1 2;-1 -2],I) %用模板[1 2;-1 –2]對圖像濾波
imshow(I)
figure,imshow(J,[])
用圖像閱讀器顯示圖像
圖像閱讀器的開關
1.在圖像閱覽器中顯示圖像:imview

moonfig=imread('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

閱讀全文

與格圖使用方法相關的資料

熱點內容
俄羅斯人都有哪些做土豆的方法 瀏覽:545
酸度檢測國標方法有 瀏覽:200
更新手機系統幾種方法 瀏覽:374
手指頭有點發黃怎麼治療方法 瀏覽:463
如何降薪最快的方法 瀏覽:257
九朵雲加馬油使用方法 瀏覽:160
常用的材料防腐與防護的方法 瀏覽:593
農村深山引水解決方法 瀏覽:5
合成鹽酸的檢測標准及方法 瀏覽:306
一般可以採用哪些方法 瀏覽:773
如何做公因數方法 瀏覽:997
存貨計量方法分析 瀏覽:972
四肢白斑的治療方法 瀏覽:53
槍與玫瑰的使用方法txt 瀏覽:610
簡單泡發海參的方法 瀏覽:283
佳能微單無線怎麼設置在哪裡設置方法 瀏覽:119
怎麼溝通好的方法 瀏覽:519
統計多次增長率用什麼方法 瀏覽:320
驗光鏡片箱使用方法 瀏覽:750
大蒜調和油食用方法 瀏覽:670