① 急求用Matlab讀取個圖片然後對圖片的相色進行分析,將各種顏色的分布多少用柱狀圖表示出來。
一般matlab里的讀取都是txt文件,麻煩一點的有的用excel,畢竟是數據處理的軟體嘛。
我覺得你這個圖形文件最好能轉成txt格式的,一定是有方法轉的。
轉完了放在matlab就很容易。然後在進行你說的相色分析。
方法如下:
首先,你備份文件,確定格式為,.txt。
然後我們用傳統的方法在matlab你面讀取你的txt。
嘗試這個程序:
M= gallery('integerdata', 100, [5 8], 0);
dlmwrite('myfile.txt', M, 'delimiter', ' ')
D=dlmread('myfile.txt')
第一行是我生成的一個矩陣,然後第二行我寫入到文件'myfile.txt'。
這就模擬了你的.dat文件, 改成.txt之後的樣子。
你在程序第一行寫
D=dlmread('myfile.txt')
就讀取了文件。並把讀取的,寫入到了D矩陣中。
結果如下:
你可以嘗試一下。
希望解決了你的疑惑,謝謝。
② matlab如何批量讀取圖片並作分析
for i=1:452
if i<10
str = ['top00',num2str(i),'.bmp'];
else if i<100
str = ['top0',num2str(i),'.bmp'];
else
str = ['top',num2str(i),'.bmp'];
end
I=imread(str);
Zmax=max(max(I));
Zmin=min(min(I));
TK=(Zmax+Zmin)/2;%初始閾值
flag=1;
[m,n]=size(I);
while(flag)
fg=0;
bg=0;
fgsum=0;
bgsum=0;
for i=1:m
for j=1:n
tmp=I(i,j);
if(tmp>=TK)
fg=fg+1;
fgsum=fgsum+double(tmp);
else
bg=bg+1;
bgsum=bgsum+double(tmp);
end
end
end
u1=fgsum/fg;
u2=bgsum/bg;
TKTmp=uint8((u1+u2)/2);
if(TKTmp==TK)
flag=0;
else
TK=TKTmp;
end
end
end
③ 怎麼用matlab畫出圖片的頻譜分析圖
1.假設信號域為四捨五入,向量t為n維向量,則信號的離散采樣周期為Ts=1/fs=四捨五入/(n-1),其中fs為采樣頻率。
④ 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
⑤ 如何用Matlab處理圖片,作灰度分析
第一步:獲取圖片,假設圖片的名字為a.jpg
im=imread('a.jpg');
如果是一幅彩色圖,用下面的命令,否則越過下面一步:
im=rgb2gray(im);
此時,你的im已經是灰度圖了,可以用imshow(im)來看,該怎麼灰度分析就由你定了。例如,作直方圖的話,直接用imhist(im)就OK。
⑥ matlab如何批量讀取圖片並作分析
% 你的代碼沒有仔細看,有問題在說吧,結果在R中
n=452;
R=zeros(n,1);
forp=1:n
fn=['000'num2str(p)];
fn=fn(length(fn)-1:end);
fn=['top'fn'.bmp'];
I=imread(fn);
Zmax=max(max(I));
Zmin=min(min(I));
TK=(Zmax+Zmin)/2;%初始閾值
flag=1;
[m,n]=size(I);
while(flag)
fg=0;
bg=0;
fgsum=0;
bgsum=0;
fori=1:m
forj=1:n
tmp=I(i,j);
if(tmp>=TK)
fg=fg+1;
fgsum=fgsum+double(tmp);
else
bg=bg+1;
bgsum=bgsum+double(tmp);
end
end
end
u1=fgsum/fg;
u2=bgsum/bg;
TKTmp=uint8((u1+u2)/2);
if(TKTmp==TK)
flag=0;
else
TK=TKTmp;
end
end
BCT=sum(newI(:)==0);
R(p)=BCT;
end;
⑦ 在matlab中知道兩函數圖像,如何對其進行誤差分析呢
在matlab中知道兩函數圖像,如何對其進行誤差分析呢?這類問題可以按下列思路來解決:
1、利用imread函數,讀入圖像文件
2、利用rgb2gray函數,將RGB 圖像或顏色圖轉換為灰度圖
3、利用 im2bw函數,將圖像轉換為二進制圖像
4、利用 bwlabel函數,在矩陣L中,作表示二進制圖像的標記
5、利用regionprops函數,測量圖像區域的屬性
6、利用cat函數,沿指定維度串聯,生成新的數組
7、利用max函數,求最大值(誤差)
⑧ MATLAB怎麼做圖像處理
matlab要從命令窗口輸入命令來做圖像處理
假如你的圖像在桌面上,名字是a.bmp
你可以用如下方法讀入圖片:
I=imread('C:\Documents and settings\Administrator\桌面\a.bmp');
imshow(I) %顯示圖像
你可以根據此來修改你的小波變換程序,以便用於你的圖像處理。你自己先試試,如果不行的話,再把你的程序貼出來,我幫你看看,改好了發給你。
[email protected],歡迎你來問。
王老師
⑨ matlab圖像分析。
fitsrea函數是用從FITS文件中讀取數據的。
如果beijing.bmp文件是放在MATLAB的WORK文件中。可以用imread函數讀取圖像。
improfile是用於沿線段計算橫截面的像素值。需根據圖片的所需的數據來設置參數。
可以用doc improfil查看相關用法。
Example:
I = imread('liftingbody.png');
x = [19 427 416 77];
y = [96 462 37 33];
improfile(I,x,y),grid on;
⑩ MATLAB--數字圖像處理 頻域圖像分析
頻域圖像分析
1.熟悉MATLAB軟體的使用。
2.掌握頻域圖像分析的原理及數學運算。
1.自選一幅圖像,並對其分別添加一定強度的周期雜訊和高斯雜訊,然後分別採用高斯模板、中值濾波的時域方法以及傅里葉變換和小波變換的頻率濾波方法對該含噪圖像進行去噪處理,並基於PSNR值和視覺效果這兩個指標來比較這四種濾波方法對兩種不同雜訊的去噪能力。
2.編寫一個程序,要求實現下列演算法:首先將閣像分割為8x8的子圖像,對每個予圖像進行FFT.對每個了圖像中的64個系數。按照每個系數的方差來排序後,捨去小的變換系數,只保留16個系數,實現4: I的圖像壓縮。
3.給定一幅行和列都為2的整數次幕圖像,用Haar小波基函數對其進行二維小波變換,試著將最低尺度近似分量置零再反變換,結果是什麼?如果把垂直方向的細節分量置零,反變換後結果又是什麼呢?試解釋一下原因。
4.基於小波變換對圖像進行不同壓縮比的壓縮。在同壓縮比情況下,對於基於小波變換和基於傅里葉變換的壓縮結果,比較=二者保留原圖像能里百分比情況。
Win10 64位電腦
MATLAB R2017a
1.傅里葉變換
從純粹的數學意義上看,傅里葉變換是將一個函數轉換為一系列周期函數來處理的。從物理效果看,傅里葉變換是將圖像從空間域轉換到頻率域,其逆變換是將圖像從頻率域轉換到空間域。換句話說,傅里葉變換的物理意義是將圖像的灰度分布函數變換為圖像的頻率分布函數。
傅里葉逆變換是將圖像的頻率分布函數變換為灰度分布函數傅里葉變換以前,圖像(未壓縮的點陣圖)是由對在連續空間(現實空間)上的采樣得到一系列點的集合,通常用一個二維矩陣表示空間上各點,記為z=f(x,y)。又因空間是三維的,圖像是二維的,因此空間中物體在另一個維度上的關系就必須由梯度來表示,這樣我們才能通過觀察圖像得知物體在三維空間中的對應關系。
2.小波變換
小波變換是時間(空間)頻率的局部化分析,它通過伸縮平移運算對信號(函數)逐步進行多尺度細化,最終達到高頻處時間細分,低頻處頻率細分,能自動適應時頻信號分析的要求,從而可聚焦到信號的任意細節帶雜訊信號經過預處理,然後利用小波變換把信號分解到各尺度中,在每一尺度下把屬於雜訊的小波系數去掉,保留並增強屬於信號的小波系數,最後再經過小波逆變換回復檢測信號。
小波變換在去除雜訊時可提取並保存對視覺起主要作用的邊緣信息,而傳統的基於傅里葉變換去除雜訊的方法在去除雜訊和邊沿保持上存在著矛盾,因為傅里葉變換方法在時域不能局部化,難以檢測到局域突變信號,在去除雜訊的同時,也損失了圖像邊沿信息。由此可知,與傅里葉變換去除雜訊的方法相比較,小波變換法去除雜訊具有明顯的性能優勢。
3.PSNR演算法
peak的中文意思是頂點。而ratio的意思是比率或比列的。整個意思就是到達噪音比率的頂點信號,psnr一般是用於最大值信號和背景噪音之間的一個工程項目。通常在經過影像壓縮之後,輸出的影像都會在某種程度與原始影像不同。為了衡量經過處理後的影像品質,我們通常會參考PSNR值來衡量某個處理程序能否令人滿意。它是原圖像與被處理圖像之間的均方誤差相對於(2 n-1) 2的對數值(信號最大值的平方,n是每個采樣值的比特數),它的單位是dB。
SNRP演算法
haar基函數進行小波變換
七、實驗結果與分析
圖 1原圖
1.加入周期雜訊、高斯雜訊
2.對添加了高斯雜訊和周期雜訊的圖像進行高斯濾波
PSNR值
1.對高斯雜訊進行高斯濾波後 23.0287
2.對周期雜訊進行高斯濾波後 23.4837
2.中值濾波
PSNR值:
1.對高斯雜訊進行中值濾波 23.9931
2.對周期雜訊進行中值濾波 24.3134
3.傅里葉變換濾波
PSNR值:
1.對添加了高斯雜訊的圖像進行傅里葉變換濾波 20.4922
2.對添加了周期雜訊的圖像進行傅里葉變換濾波 18.9736
4.小波變換濾波
PSNR值:
1.對添加了高斯雜訊的圖像進行小波變換濾波 23.4712
2.對添加了周期雜訊的圖像進行小波變換濾波 24.4525
分析:
對於高斯雜訊,高斯濾波和傅里葉變換濾波聲的除噪效果較好,中值濾波效果較差,小波變換濾波的處理效果也比較好
對於周期雜訊,中值濾波和高斯濾波效果不是很好,傅里葉變換變換濾波對雜訊的去處效果比較好,對於原圖像損壞不大,小波變換對原圖的損壞較大,但是圖片可以看出雜訊也去除的比較好。
5.圖像壓縮(4:1壓縮) 原圖-左 壓縮後-右
分析:
圖像壓縮演算法就是先將一副圖像分成很多小塊,然後分別對這些小塊進行變換,這里採用的是傅里葉變換,然後過濾掉冗餘的像素點,然後再利用反變換得到壓縮後的圖像即可。
小波變換
1.定義
小波變換是時間(空間)頻率的局部化分析,它通過伸縮平移運算對信號(函數)逐步進行多尺度細化,最終達到高頻處時間細分,低頻處頻率細分,能自動適應時頻信號分析的要求,從而可聚焦到信號的任意細節帶雜訊信號經過預處理,然後利用小波變換把信號分解到各尺度中,在每一尺度下把屬於雜訊的小波系數去掉,保留並增強屬於信號的小波系數,最後再經過小波逆變換回復檢測信號。
2.優點
小波變換在去除雜訊時可提取並保存對視覺起主要作用的邊緣信息,而傳統的基於傅里葉變換去除雜訊的方法在去除雜訊和邊沿保持上存在著矛盾,因為傅里葉變換方法在時域不能局部化,難以檢測到局域突變信號,在去除雜訊的同時,也損失了圖像邊沿信息。由此可知,與傅里葉變換去除雜訊的方法相比較,小波變換法去除雜訊具有明顯的性能優勢。
Haar基函數進行小波變換
圖 2原圖
圖 3 haar變換
圖 4 haar反變換後
圖 5 最低分量近似置零
圖 6 垂直分量置零
小波變換進行圖像壓縮與傅里葉變換壓縮對比
1.壓縮比 1:2(左-小波壓縮 右-傅里葉壓縮)
2.壓縮比 1:4(左-小波壓縮 右-傅里葉壓縮)
通過這次實驗,學到了很多。特別是在傅里葉變換和小波變換等方面,開始的時候連傅里葉變換的基礎基礎也不懂,後來在csdn上看了一篇講解傅里葉變換的文章,豁然開朗,傅里葉變換居然可以將一個時域信號轉化到頻域,而且自己還對與i有了更加深刻的理解。雖然傅里葉變換可以把信號從時域轉換到頻域,但是頻域與時域的對應關系卻無法一一對應,所以誕生了小波變換。小波變換的特別之處就是可以把一個時域上的信息轉換為時域-頻域一一對應,這對應特殊信號的提取是有很好的效果,在一定程度上比傅里葉變換更厲害。但是在傅里葉、小波等基礎概念知識方面,自己還是涉獵的比較少,原理的論證公式太復雜了。