MATLAB圖像處理常用函數大全

2021-12-24 數模樂園

點擊箭頭處「藍色字」,關注我們哦!!

顯示索引圖像和灰度圖像 
>> [X,map]=imread('trees.tif'); 
>> gmap=rgb2gray(map); 
>> figure,imshow(X,map); 
>> figure,imshow(X,gmap); 


利用膨脹函數平移圖像 
I = imread('football.jpg'); 
se = translate(strel(1), [30 30]);%將一個平面結構化元素分別向下和向右移動30個位置 
J = imdilate(I,se);%利用膨脹函數平移圖像 
subplot(121);imshow(I), title('原圖') 
subplot(122), imshow(J), title('移動後的圖像'); 


水平翻轉和上下翻轉 
I = imread('cameraman.tif'); 
Flip1=fliplr(I);               %  對矩陣I左右反轉 
subplot(131);imshow(I);title('原圖'); 
subplot(132);imshow(Flip1);title('水平鏡像'); 
Flip2=flipud(I);               %  對矩陣I垂直反轉 
subplot(133);imshow(Flip2);title('豎直鏡像'); 


圖像旋轉 
I=imread('cameraman.tif'); 
B=imrotate(I,60,'bilinear','crop'); 
%雙線性插值法旋轉圖像,並裁剪圖像,使其和原圖像大小一致 
subplot(121),imshow(I),title('原圖'); 
subplot(122),imshow(B),title('旋轉圖像60^{o},並剪切圖像'); 


截取圖像 
I = imread('circuit.tif'); 
I2 = imcrop(I,[75 68 130 112]); 
imshow(I), figure, imshow(I2) 


畫輪廓 
>> I=imread('circuit.tif'); 
>> imshow(I) 
>> figure 
>> imcontour(I,3) 


噪聲和濾波 
I=imread('cameraman.tif'); 
J=imnoise(I,'salt & pepper',0.02);%添加椒鹽噪聲 
subplot(121),imshow(J);title('噪聲圖像') 
K=medfilt2(J);%使用3*3的鄰域窗的中值濾波 
subplot(122),imshow(K);title('中值濾波後圖像') 




Matlab數字數字圖像處理函數匯總: 


1、數字數字圖像的變換 


① fft2:fft2函數用於數字數字圖像的二維傅立葉變換,如:i=imread('104_8.tif'); 


j=fft2(i); 


②ifft2::ifft2函數用於數字數字圖像的二維傅立葉反變換,如: 


 i=imread('104_8.tif'); 


 j=fft2(i); 


k=ifft2(j); 


2、模擬噪聲生成函數和預定義濾波器 


① imnoise:用於對數字數字圖像生成模擬噪聲,如: 


 i=imread('104_8.tif'); 


 j=imnoise(i,'gaussian',0,0.02);%模擬高斯噪聲 


② fspecial:用於產生預定義濾波器,如: 


h=fspecial('sobel');%sobel水平邊緣增強濾波器 


h=fspecial('gaussian');%高斯低通濾波器 


h=fspecial('laplacian');%拉普拉斯濾波器 


h=fspecial('log');%高斯拉普拉斯(LoG)濾波器 


h=fspecial('average');%均值濾波器 


2、數字數字圖像的增強 


①直方圖:imhist函數用於數字數字圖像的直方圖顯示,如: 


i=imread('104_8.tif'); 


imhist(i); 


②直方圖均化:histeq函數用於數字數字圖像的直方圖均化,如: 


i=imread('104_8.tif'); 


j=histeq(i); 


imshow(J) 
③對比度調整:imadjust函數用於數字數字圖像的對比度調整,如:i=imread('104_8.tif'); 


j=imadjust(i,[0.3,0.7],[]); 


④對數變換:log函數用於數字數字圖像的對數變換,如: 


i=imread('104_8.tif'); 


j=double(i); 


k=log(j); 


⑤基於卷積的數字數字圖像濾波函數:filter2函數用於數字數字圖像濾波,如:i=imread('104_8.tif'); 


h=[1,2,1;0,0,0;-1,-2,-1]; 


j=filter2(h,i); 


⑥線性濾波:利用二維卷積conv2濾波, 如: 


i=imread('104_8.tif'); 


h=[1,1,1;1,1,1;1,1,1]; 


h=h/9; 


j=conv2(i,h); 


⑦中值濾波:medfilt2函數用於數字數字圖像的中值濾波,如: 


i=imread('104_8.tif'); 


j=medfilt2(i); 


⑧銳化 


(1)利用Sobel算子銳化數字數字圖像, 如: 


i=imread('104_8.tif'); 


h=[1,2,1;0,0,0;-1,-2,-1];%Sobel算子 


j=filter2(h,i); 


(2)利用拉氏算子銳化數字數字圖像, 如: 


i=imread('104_8.tif'); 


j=double(i); 


h=[0,1,0;1,-4,0;0,1,0];%拉氏算子 


k=conv2(j,h,'same'); 


m=j-k; 


3、數字數字圖像邊緣檢測 


①sobel算子 如: 


i=imread('104_8.tif'); 


j =edge(i,'sobel',thresh) 


  


②prewitt算子 如: 


i=imread('104_8.tif'); 


j =edge(i,'prewitt',thresh) 


③roberts算子  如: 


i=imread('104_8.tif'); 


j =edge(i,'roberts',thresh) 


④log算子  如: 


i=imread('104_8.tif'); 


j =edge(i,'log',thresh) 


⑤canny算子 如: 


i=imread('104_8.tif'); 


j =edge(i,'canny',thresh) 


⑥Zero-Cross算子 如: 


i=imread('104_8.tif'); 


j =edge(i,'zerocross',thresh) 


4、形態學數字數字圖像處理 


①膨脹:是在二值化數字數字圖像中「加長」或「變粗」的操作,函數imdilate執行膨脹運算,如: 


a=imread('104_7.tif');%輸入二值數字數字圖像 


b=[0 1 0;1 1 1;01 0]; 


c=imdilate(a,b); 


②腐蝕:函數imerode執行腐蝕,如: 


a=imread('104_7.tif');%輸入二值數字數字圖像 


b=strel('disk',1); 


c=imerode(a,b); 


③開運算:先腐蝕後膨脹稱為開運算,用imopen來實現,如: 


 a=imread('104_8.tif'); 


b=strel('square',2); 


c=imopen(a,b); 


④閉運算:先膨脹後腐蝕稱為閉運算,用imclose來實現,如: 


 a=imread('104_8.tif'); 


b=strel('square',2); 


c=imclose(a,b); 


  


  


數字數字圖像增強 
1. 直方圖均衡化的 Matlab 實現 
1.1 imhist 函數 
功能:計算和顯示數字數字圖像的色彩直方圖 
格式:imhist(I,n) 
        imhist(X,map) 
說明:imhist(I,n) 其中,n 為指定的灰度級數目,預設值為256;imhist(X,map) 就算和顯示索引色數字數字圖像 X 的直方圖,map為調色板。用stem(x,counts) 同樣可以顯示直方圖。 


1.2 imcontour 函數 
功能:顯示數字數字圖像的等灰度值圖 
格式:imcontour(I,n),imcontour(I,v) 
說明:n 為灰度級的個數,v 是有用戶指定所選的等灰度級向量。 


1.3 imadjust 函數 
功能:通過直方圖變換調整對比度 
格式:J=imadjust(I,[low high],[bottomtop],gamma) 
        newmap=imadjust(map,[low high],[bottomtop],gamma) 
說明:J=imadjust(I,[low high],[bottomtop],gamma) 其中,gamma 為校正量r,[lowhigh] 為原數字數字圖像中要變換的灰度範圍,[bottom top] 
指定了變換後的灰度範圍;newmap=imadjust(map,[lowhigh],[bottom top],gamma) 調整索引色數字數字圖像的調色板 map 。此時若 [low high] 和 
[bottom top] 都為2×3的矩陣,則分別調整 R、G、B 3個分量。 


1.4 histeq 函數 
功能:直方圖均衡化 
格式:J=histeq(I,hgram) 
        J=histeq(I,n) 
        [J,T]=histeq(I,...) 
        newmap=histeq(X,map,hgram) 
        newmap=histeq(X,map) 
        [new,T]=histeq(X,...) 
說明:J=histeq(I,hgram) 實現了所謂「直方圖規定化」,即將原是圖象 I 的直方圖變換成用戶指定的向量 hgram 。hgram 中的每一個元素 
都在 [0,1] 中;J=histeq(I,n) 指定均衡化後的灰度級數 n ,預設值為 64;[J,T]=histeq(I,...)返回從能將數字數字圖像 I 的灰度直方圖變換成 
數字數字圖像 J 的直方圖的變換 T ;newmap=histeq(X,map) 和 [new,T]=histeq(X,...) 是針對索引色數字數字圖像調色板的直方圖均衡。 


2. 噪聲及其噪聲的 Matlab 實現 
        imnoise 函數 
格式:J=imnoise(I,type) 
        J=imnoise(I,type,parameter) 
說明:J=imnoise(I,type) 返回對數字數字圖像 I 添加典型噪聲後的有噪數字數字圖像 J ,參數type 和 parameter 用於確定噪聲的類型和相應的參數。 




3. 數字數字圖像濾波的 Matlab 實現 


3.1 conv2 函數 
功能:計算二維卷積 
格式:C=conv2(A,B) 
        C=conv2(Hcol,Hrow,A) 
        C=conv2(...,'shape') 
說明:對於 C=conv2(A,B) ,conv2 的算矩陣A 和 B 的卷積,若[Ma,Na]=size(A), [Mb,Nb]=size(B), 則 size(C)=[Ma+Mb-1,Na+Nb-1]; 
C=conv2(Hcol,Hrow,A) 中,矩陣 A 分別與Hcol 向量在列方向和 Hrow 向量在行方向上進行卷積;C=conv2(...,'shape') 用來指定 conv2 
返回二維卷積結果部分,參數 shape 可取值如下: 
        》full為預設值,返回二維卷積的全部結果; 
        》same返回二維卷積結果中與 A 大小相同的中間部分; 
        valid 返回在卷積過程中,未使用邊緣補 0 部分進行計算的卷積結果部分,當 size(A)>size(B) 時,size(C)=[Ma-Mb+1,Na-Nb+1]。 


3.2 conv 函數 
功能:計算多維卷積 
格式:與 conv2 函數相同 


3.3 filter2函數 
功能:計算二維線型數字濾波,它與函數 fspecial 連用 
格式:Y=filter2(B,X) 
        Y=filter2(B,X,'shape') 
說明:對於 Y=filter2(B,X) ,filter2 使用矩陣B 中的二維 FIR 濾波器對數據 X 進行濾波,結果 Y 是通過二維互相關計算出來的,其大 
小與 X 一樣;對於Y=filter2(B,X,'shape') ,filter2返回的 Y 是通過二維互相關計算出來的,其大小由參數 shape 確定,其取值如下 
: 
        》full返回二維相關的全部結果,size(Y)>size(X); 
        》same返回二維互相關結果的中間部分,Y 與X 大小相同; 
        》valid返回在二維互相關過程中,未使用邊緣補 0 部分進行計算的結果部分,有 size(Y)<size(X) 。 


3.4 fspecial 函數 
功能:產生預定義濾波器 
格式:H=fspecial(type) 
        H=fspecial('gaussian',n,sigma)        高斯低通濾波器 
        H=fspecial('sobel')                        Sobel 水平邊緣增強濾波器 
        H=fspecial('prewitt')                     Prewitt 水平邊緣增強濾波器 
        H=fspecial('laplacian',alpha)            近似二維拉普拉斯運算濾波器 
        H=fspecial('log',n,sigma)                高斯拉普拉斯(LoG)運算濾波器 
        H=fspecial('average',n)                  均值濾波器 
        H=fspecial('unsharp',alpha)            模糊對比增強濾波器 
說明:對於形式 H=fspecial(type) ,fspecial 函數產生一個由 type 指定的二維濾波器 H ,返回的H 常與其它濾波器搭配使用。 




4. 彩色增強的 Matlab 實現 
4.1 imfilter函數 
功能:真彩色增強 
格式:B=imfilter(A,h) 
說明:將原始數字數字圖像 A 按指定的濾波器 h 進行濾波增強處理,增強後的數字數字圖像 B 與A 的尺寸和類型相同 


  


數字數字圖像的變換 


1. 離散傅立葉變換的Matlab 實現 
      Matlab 函數 fft、fft2 和 fftn 分別可以實現一維、二維和 N 維 DFT 算法;而函數 ifft、ifft2 和 ifftn 則用來計算反 DFT 。 
這些函數的調用格式如下: 
         A=fft(X,N,DIM) 
      其中,X 表示輸入數字數字圖像;N 表示採樣間隔點,如果 X 小於該數值,那麼 Matlab 將會對 X 進行零填充,否則將進行截取,使之長度為 
N ;DIM 表示要進行離散傅立葉變換。 
        A=fft2(X,MROWS,NCOLS)  
其中,MROWS 和 NCOLS 指定對 X 進行零填充後的 X 大小。 
        A=fftn(X,SIZE) 
其中,SIZE 是一個向量,它們每一個元素都將指定 X 相應維進行零填充後的長度。 
      函數 ifft、ifft2 和 ifftn的調用格式於對應的離散傅立葉變換函數一致。 
例子:數字數字圖像的二維傅立葉頻譜 
% 讀入原始數字數字圖像 
I=imread('lena.bmp'); 
imshow(I) 
% 求離散傅立葉頻譜 
J=fftshift(fft2(I)); 
figure; 
imshow(log(abs(J)),[8,10]) 


2. 離散餘弦變換的 Matlab實現 
2.1. dCT2 函數 
功能:二維 DCT 變換 
格式:B=dct2(A)  
        B=dct2(A,m,n)  
        B=dct2(A,[m,n])  
說明:B=dct2(A) 計算 A 的 DCT 變換 B ,A 與 B 的大小相同;B=dct2(A,m,n) 和 B=dct2(A,[m,n]) 通過對 A 補 0 或剪裁,使 B 的大小為 m×n。 


2.2. dict2 函數 
功能:DCT 反變換 
格式:B=idct2(A)  
        B=idct2(A,m,n)  
        B=idct2(A,[m,n])  
說明:B=idct2(A) 計算 A 的 DCT 反變換 B ,A 與 B 的大小相同;B=idct2(A,m,n) 和 B=idct2(A,[m,n]) 通過對 A 補 0 或剪裁,使 B的大小為 m×n。 


2.3. dctmtx函數 
功能:計算 DCT 變換矩陣 
格式:D=dctmtx(n) 
說明:D=dctmtx(n) 返回一個 n×n 的 DCT 變換矩陣,輸出矩陣 D 為 double 類型。 


3. 數字數字圖像小波變換的Matlab 實現 
3.1 一維小波變換的 Matlab實現 
(1) dwt 函數 
功能:一維離散小波變換 
格式:[cA,cD]=dwt(X,'wname') 
        [cA,cD]=dwt(X,Lo_D,Hi_D) 
說明:[cA,cD]=dwt(X,'wname')使用指定的小波基函數'wname' 對信號 X 進行分解,cA、cD分別為近似分量和細節分量;[cA,cD]=dwt(X,Lo_D,Hi_D) 使用指定的濾波器組 Lo_D、Hi_D 對信號進行分解。 


(2) idwt 函數 
功能:一維離散小波反變換 
格式:X=idwt(cA,cD,'wname') 
        X=idwt(cA,cD,Lo_R,Hi_R) 
        X=idwt(cA,cD,'wname',L) 
        X=idwt(cA,cD,Lo_R,Hi_R,L) 
說明:X=idwt(cA,cD,'wname')由近似分量 cA 和細節分量 cD 經小波反變換重構原始信號 X 。 
        'wname' 為所選的小波函數 
        X=idwt(cA,cD,Lo_R,Hi_R) 用指定的重構濾波器 Lo_R 和 Hi_R 經小波反變換重構原始信號 X 。 
        X=idwt(cA,cD,'wname',L) 和 X=idwt(cA,cD,Lo_R,Hi_R,L) 指定返回信號 X 中心附近的 L 個點。 


3.2 二維小波變換的 Matlab實現 
          二維小波變換的函數 
---- 
     函數名                函數功能 

     dwt2           二維離散小波變換 
   wavedec2       二維信號的多層小波分解 
     idwt2          二維離散小波反變換 
   waverec2        二維信號的多層小波重構 
   wrcoef2          由多層小波分解重構某一層的分解信號 
   upcoef2          由多層小波分解重構近似分量或細節分量 
   detcoef2         提取二維信號小波分解的細節分量 
   appcoef2        提取二維信號小波分解的近似分量 
   upwlev2         二維小波分解的單層重構 
   dwtpet2         二維周期小波變換 
   idwtper2        二維周期小波反變換 

(1) wcodemat 函數 
功能:對數據矩陣進行偽彩色編碼 
格式:Y=wcodemat(X,NB,OPT,ABSOL) 
        Y=wcodemat(X,NB,OPT) 
        Y=wcodemat(X,NB) 
        Y=wcodemat(X) 
說明:Y=wcodemat(X,NB,OPT,ABSOL)返回數據矩陣 X 的編碼矩陣 Y ;NB 偽編碼的最大值,即編碼範圍為 0~NB,預設值 NB=16; 
       OPT 指定了編碼的方式(預設值為 'mat'),即: 
                OPT='row' ,按行編碼 
                OPT='col' ,按列編碼 
                OPT='mat' ,按整個矩陣編碼 
       ABSOL 是函數的控制參數(預設值為 '1'),即: 
                ABSOL=0 時,返回編碼矩陣 
                ABSOL=1 時,返回數據矩陣的絕對值ABS(X) 


(2) dwt2 函數 
功能:二維離散小波變換 
格式:[cA,cH,cV,cD]=dwt2(X,'wname') 
        [cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D) 
說明:[cA,cH,cV,cD]=dwt2(X,'wname')使用指定的小波基函數 'wname' 對二維信號 X 進行二維離散小波變幻;cA,cH,cV,cD 分別為近似分 
量、水平細節分量、垂直細節分量和對角細節分量;[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D) 使用指定的分解低通和高通濾波器 Lo_D 和 Hi_D 分 
解信號 X 。 


(3) wavedec2 函數 
功能:二維信號的多層小波分解 
格式:[C,S]=wavedec2(X,N,'wname') 
        [C,S]=wavedec2(X,N,Lo_D,Hi_D) 
說明:[C,S]=wavedec2(X,N,'wname')使用小波基函數'wname' 對二維信號 X 進行 N 層分解;[C,S]=wavedec2(X,N,Lo_D,Hi_D) 使用指定 
的分解低通和高通濾波器Lo_D 和 Hi_D 分解信號 X 。 


(4) idwt2 函數 
功能:二維離散小波反變換 
格式:X=idwt2(cA,cH,cV,cD,'wname') 
        X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R) 
        X=idwt2(cA,cH,cV,cD,'wname',S) 
        X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S) 
說明:X=idwt2(cA,cH,cV,cD,'wname')由信號小波分解的近似信號cA 和細節信號 cH、cH、cV、cD 經小波反變換重構原信號 X 
;X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R)使用指定的重構低通和高通濾波器 Lo_R 和 Hi_R 重構原信號 X ;X=idwt2(cA,cH,cV,cD,'wname',S) 
和X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S) 返回中心附近的 S 個數據點。 


(5) waverec2 函數 
說明:二維信號的多層小波重構 
格式:X=waverec2(C,S,'wname') 
        X=waverec2(C,S,Lo_R,Hi_R) 
說明:X=waverec2(C,S,'wname')由多層二維小波分解的結果 C、S 重構原始信號 X ,'wname'為使用的小波基函數;X=waverec2(C,S,Lo_R,Hi_R) 使用重構低通和高通濾波器 Lo_R 和 Hi_R 重構原信號。 


  


  


數字數字圖像處理工具箱 
1. 數字數字圖像和數字數字圖像數據 
   預設情況下,MATLAB將數字數字圖像中的數據存儲為雙精度類型(double),64位浮點 
數,所需存儲量很大;MATLAB還支持另一種類型無符號整型(uint8),即數字數字圖像矩 
陣中每個數據佔用1個字節。 
   在使用MATLAB工具箱時,一定要注意函數所要求的參數類型。另外,uint8 
與double兩種類型數據的值域不同,編程需注意值域轉換。 
          從uint8到double的轉換 
    
       數字數字圖像類型        MATLAB語句 
    
     索引色             B=double(A)+1 
     索引色或真彩色 B=double(A)/255 
     二值數字數字圖像          B=double(A) 
    
         從double到uint8的轉換 
    
       數字數字圖像類型        MATLAB語句 
    
    索引色              B=uint8(round(A-1)) 
    索引色或真彩色   B=uint8(round(A*255)) 
    二值數字數字圖像           B=logical(uint8(round(A))) 
    


2. 數字數字圖像處理工具箱所支持的數字數字圖像類型 
2.1 真彩色數字數字圖像 
    R、G、B三個分量表示一個像素的顏色。如果要讀取數字數字圖像中(100,50)處的像素值, 
可查看三元數據(100,50,1:3)。 
    真彩色數字數字圖像可用雙精度存儲,亮度值範圍是[0,1];比較符合習慣的存儲方法是用無 
符號整型存儲,亮度值範圍[0,255] 
    
2.2 索引色數字數字圖像 
   包含兩個結構,一個是調色板,另一個是數字數字圖像數據矩陣。調色板是一個有3列和若干行 
的色彩映象矩陣,矩陣每行代表一種顏色,3列分別代表紅、綠、藍色強度的雙精度數。 
    
   注意:MATLAB中調色板色彩強度[0,1],0代表最暗,1代表最亮。 
          常用顏色的RGB值 
   ---- 
    顏色   R   G   B      顏色    R  G   B  
   ---- 
     黑     0   0   1     洋紅    1   0   1 
     白     1   1   1     青藍    0   1   1 
     紅     1   0   0     天藍 0.67 0   1 
     綠     0   1   0     橘黃    1 0.5 0 
     藍     0   0   1     深紅   0.5 0   0 
     黃     1   1   0      灰    0.5 0.5 0.5        
   ---- 
         產生標準調色板的函數 
   ---- 
    函數名      調色板 
   ---- 
     Hsv       色彩飽和度,以紅色開始,並以紅色結束 
     Hot       黑色-紅色-黃色-白色 
     Cool      青藍和洋紅的色度 
     Pink      粉紅的色度 
     Gray      線型灰度 
     Bone      帶藍色的灰度 
     Jet        Hsv的一種變形,以藍色開始,以藍色結束 
     Copper    線型銅色度 
     Prim       三稜鏡,交替為紅、橘黃、黃、綠和天藍 
     Flag       交替為紅、白、藍和黑 
 
   預設情況下,調用上述函數灰產生一個64×3的調色板,用戶也可指定調色板大小。 
    
   索引色數字數字圖像數據也有double和uint8兩種類型。 
   當數字數字圖像數據為double類型時,值1代表調色板中的第1行,值2代表第2行…… 
   如果數字數字圖像數據為uint8類型,0代表調色板的第一行,,值1代表第2行…… 


2.3 灰度數字數字圖像 
   存儲灰度數字數字圖像只需要一個數據矩陣。 
   數據類型可以是double,[0,1];也可以是uint8,[0,255] 


2.4 二值數字數字圖像 
   二值數字數字圖像只需一個數據矩陣,每個像素只有兩個灰度值,可以採用uint8或double類型存儲。 
   MATLAB工具箱中以二值數字數字圖像作為返回結果的函數都使用uint8類型。 


2.5 數字數字圖像序列 
   MATLAB工具箱支持將多幀數字數字圖像連接成數字數字圖像序列。 
   數字數字圖像序列是一個4維數組,數字數字圖像幀的序號在數字數字圖像的長、寬、顏色深度之後構成第4維。 
   分散的數字數字圖像也可以合併成數字數字圖像序列,前提是各數字數字圖像尺寸必須相同,若是索引色數字數字圖像, 
調色板也必須相同。 
   可參考cat()函數    A=cat(4,A1,A2,A3,A4,A5) 


3. MATLAB數字數字圖像類型轉換 
         數字數字圖像類型轉換函數 
   
     函數名                     函數功能 
   
     dither       數字數字圖像抖動,將灰度圖變成二值圖,或將真彩色數字數字圖像抖動成索引色數字數字圖像 
    gray2ind    將灰度數字數字圖像轉換成索引數字數字圖像 
    grayslice    通過設定閾值將灰度數字數字圖像轉換成索引色數字數字圖像 
     im2bw      通過設定亮度閾值將真彩色、索引色、灰度圖轉換成二值圖 
    ind2gray    將索引色數字數字圖像轉換成灰度數字數字圖像 
    ind2rgb      將索引色數字數字圖像轉換成真彩色數字數字圖像 
    mat2gray   將一個數據矩陣轉換成一副灰度圖 
    rgb2gray    將一副真彩色數字數字圖像轉換成灰度數字數字圖像 
    rgb2ind      將真彩色數字數字圖像轉換成索引色數字數字圖像 
   -- 


4. 數字數字圖像文件的讀寫和查詢 
4.1 圖形數字數字圖像文件的讀取 
   利用函數imread()可完成圖形數字數字圖像文件的讀取,語法: 
     A=imread(filename,fmt) 
     [X,map]=imread(filename,fmt) 
     [...]=imread(filename) 
     [...]=imread(filename,idx) (只對TIF格式的文件) 
     [...]=imread(filename,ref) (只對HDF格式的文件) 
   通常,讀取的大多數數字圖像均為8bit,當這些數字圖像加載到內存中時,Matlab就將其存放 
在類uint8中。此為Matlab還支持16bit的PNG和TIF數字圖像,當讀取這類文件時,Matlab就將 
其存貯在uint16中。 
   注意:對於索引數字圖像,即使數字圖像陣列的本身為類uint8或類uint16,imread函數仍將 
顏色映象表讀取並存貯到一個雙精度的浮點類型的陣列中。 


4.2 圖形數字圖像文件的寫入 
   使用imwrite函數,語法如下: 
   imwrite(A,filename,fmt) 
   imwrite(X,map,filename,fmt) 
   imwrite(...,filename) 
   imwrite(...,parameter,value) 
   當利用imwrite函數保存數字圖像時,Matlab預設的方式是將其簡化道uint8的數據格式。 


4.3 圖形數字圖像文件信息的查詢  imfinfo()函數 




5. 數字圖像文件的顯示 
5.1 索引數字圖像及其顯示 
   方法一: 
          image(X) 
          colormap(map) 
   方法二:  
          imshow(X,map) 


5.2 灰度數字圖像及其顯示 
   Matlab 7.0 中,要顯示一副灰度數字圖像,可以調用函數 imshow 或 imagesc (即  
imagescale,數字圖像縮放函數) 
   (1) imshow 函數顯示灰度數字圖像 
    使用imshow(I)    或 使用明確指定的灰度級書目:imshow(I,32) 
     
    由於Matlab自動對灰度數字圖像進行標度以適合調色板的範圍,因而可以使用自定義 
大小的調色板。其調用格式如下: 
           imshow(I,[low,high]) 
    其中,low 和 high 分別為數據數組的最小值和最大值。 
   (2) imagesc 函數顯示灰度數字圖像 
   下面的代碼是具有兩個輸入參數的 imagesc 函數顯示一副灰度數字圖像 
       imagesc(1,[0,1]); 
       colormap(gray); 
    imagesc 函數中的第二個參數確定灰度範圍。灰度範圍中的第一個值(通常是0), 
對應於顏色映象表中的第一個值(顏色),第二個值(通常是1)則對應與顏色映象表 
中的最後一個值(顏色)。灰度範圍中間的值則線型對應與顏色映象表中剩餘的值(顏色)。 
    在調用 imagesc 函數時,若只使用一個參數,可以用任意灰度範圍顯示數字圖像。在該 
調用方式下,數據矩陣中的最小值對應於顏色映象表中的第一個顏色值,數據矩陣中的最大 
值對應於顏色映象表中的最後一個顏色值。 


5.3 RGB 數字圖像及其顯示 
   (1) image(RGB)  
   不管RGB數字圖像的類型是double浮點型,還是 uint8 或 uint16 無符號整數型,Matlab都 
能通過 image 函數將其正確顯示出來。 
   RGB8 = uint8(round(RGB64×255)); %將 double 浮點型轉換為 uint8 無符號整型 
   RGB64 = double(RGB8)/255;           % 將 uint8 無符號整型轉換為 double 浮點型 
   RGB16 = uint16(round(RGB64×65535)); %將 double 浮點型轉換為 uint16 無符號整型  
   RGB64 = double(RGB16)/65535;      % 將 uint16 無符號整型轉換為 double 浮點型 
   (2) imshow(RGB) 參數是一個 m×n×3 的數組 


5.4 二進位數字圖像及其顯示 
   (1) imshow(BW) 
   在 Matlab 7.0 中,二進位數字圖像是一個邏輯類,僅包括 0 和 1 兩個數值。像素 0 顯示 
為黑色,像素 1 顯示為白色。 
   顯示時,也可通過NOT(~)命令,對二進位圖象進行取反,使數值 0 顯示為白色;1 顯示 
為黑色。  
   例如:imshow(~BW) 
   (2) 此外,還可以使用一個調色板顯示一副二進位數字圖像。如果圖形是 uint8 數據類型, 
則數值 0 顯示為調色板的第一個顏色,數值 1 顯示為第二個顏色。 
   例如:imshow(BW,[1 0 0;0 0 1])   


5.5 直接從磁碟顯示數字圖像 
   可使用一下命令直接進行數字圖像文件的顯示:  
        imshow filename 
   其中,filename 為要顯示的數字圖像文件的文件名。 
   如果數字圖像是多幀的,那麼imshow 將僅顯示第一幀。但需注意,在使用這種方式時,數字圖像 
數據沒有保存在Matlab7.0 工作平臺。如果希望將數字圖像裝入工作檯中,需使用 getimage 函數,從當前的句柄圖形數字圖像對象中獲取數字圖像數據, 
   命令形式為:rgb = getimage; 


bwlabel  
功能:  
標註二進位數字圖像中已連接的部分。  
L = bwlabel(BW,n)  
[L,num] = bwlabel(BW,n) 
isbw  
功能:  
判斷是否為二進位數字圖像。  
語法:  
flag = isbw(A)  
相關命令:  
isind, isgray, isrgb  
74.isgray  
功能:  
判斷是否為灰度數字圖像。  
語法:  
flag = isgray(A)  
相關命令:  
isbw, isind, isrgb 
11.bwselect  
功能:  
在二進位數字圖像中選擇對象。 
語法:  
BW2 = bwselect(BW1,c,r,n)  
BW2 = bwselect(BW1,n)  
[BW2,idx] = bwselect(...)  
舉例  
BW1 = imread('text.tif');  
c = [16 90 144];  
r = [85 197 247];  
BW2 = bwselect(BW1,c,r,4);  
imshow(BW1)  
figure, imshow(BW2) 
47.im2bw  
功能:  
轉換數字圖像為二進位數字圖像。  
語法:  
BW = im2bw(I,level)  
BW = im2bw(X,map,level)  
BW = im2bw(RGB,level)  
舉例  
load trees  
BW = im2bw(X,map,0.4);  
imshow(X,map)

相關焦點

  • 【matlab圖像處理】圖像處理工具箱(2)
    今天介紹圖像處理工具箱的基本圖像操作。本內容參考自《實用MATLAB圖像和視頻處理》第4章。對於matlab的安裝,可以參考以下文章:讀取圖片是最基本的操作,matlab中內置的函數為imread(),它可以讀取常見的圖像格式,如TIFF、JPEG、BMP、GIF、PNG等,如下。
  • 【matlab圖像處理】圖像處理工具箱(1)
    今天介紹圖像處理工具箱概述。本內容參考自《實用MATLAB圖像和視頻處理》第4章以及博客:https://blog.csdn.net/qq_42722197/article/details/118005631對於matlab的安裝,可以參考以下文章:圖像處理工具箱(Image Processing T
  • MATLAB——圖像處理常用函數
    由於數字圖像可以被看作為一個矩陣,因此可以用MATLAB來進行圖像處理。本章簡單介紹了幾個常用到的圖像處理函數。
  • matlab處理圖像代碼
    2、灰度直方圖及直方圖均衡化灰度直方圖用於顯示圖像的灰度值分布情況,是數字圖像處理中最簡單和最實用的工具。MATLAB中提供了專門繪製直方圖的函數imhist()。用它可以很簡單的繪製出一幅圖像的灰度直方圖(見例2)。
  • MATLAB中圖像處理的一些簡單函數
    2.MATLAB中圖像文件的顯示 imshow imshow函數是最常用的顯示各種圖像的函數,其語法如下: imshow(X,map)其中X是圖像數據矩陣,map是其對應的顏色矩陣,若進行圖像處理後不知道圖像數據的值域可以用[]代替map。
  • Matlab 圖像處理相關函數命令大全
    imresize  改變圖像大小語法:B=imresize(A,m,method)imrotate  旋轉圖像語法:B=imrotate(A,angle,method) \ B=imrotate(A,angle,method,'crop') 三、像素和統計處理函數corr2
  • 大神帶你玩轉matlab圖像處理(五)
    A:原圖像,B:結果圖將真彩色圖像B轉換為灰度圖像A。rgb2gray函數通過消除色調和飽和度信息,同時保留亮度,來將B圖像轉換為灰度圖。imbinarize使用256-bin圖像直方圖來計算Otsu的閾值。要使用其他直方圖,請參見otsuthresh。B=imbinarize(A,method)使用方法「 global」或「 adaptive」指定的閾值處理方法從圖像A創建二進位圖像。B=imbinarize(A,T)使用閾值T從圖像A創建二進位圖像。
  • MATLAB的ezplot函數繪製隱函數圖像
    也就是說,使用plot 函數之前,必須首先定義好曲線上每一點的x 及y 坐標,常用格式為:(1)plot(x) 當x 為一向量時,以x 元素的值為縱坐標,x的序號為橫坐標值繪製曲線。當x 為一實矩陣時,則以其序號為橫坐標,按列繪製每列元素值相對於其序號的曲線,當x 為m× n 矩陣時,就有n 條曲線。
  • MATLAB中內置了哪些函數是本科生常用的?
    6 人贊同matlab用的比較多,但是水平比較渣,寫出來的代碼基本都是小白level的,也就是以能算通為目的,很少做語言和算法上的優化(因為目前處理過的東西都是數據量和計算量不大的東西,沒需求就沒動力做優化=。=)所以估計一些經驗比較適合題主這種同樣初入門的人。首先,matlab下寫代碼,牢記關鍵詞 矩陣運算。
  • 大神帶你玩轉matlab圖像處理(6)——Hough變換
    近段時間過冷水開始接觸一點點圖像處理的知識三維空間分布函數繪製實例推文就有關於讀取圖像上的數據程序處理。
  • Matlab常用函數與常用指令大全
    順帶分享一個Matlab 2010b 下載地址http://pan.baidu.com/s/1mhEm5a4matlab常用函數- -1、特殊變量與常數ans 計算結果的變量名computer 確定運行的計算機eps 浮點相對精度Inf 無窮大I 虛數單位inputname 輸入參數名NaN 非數
  • Matlab|繪製函數圖像
    一、繪製圖像的常用思路在通常情況下,手動繪製函數圖像的基本思路是確定自變量的取值範圍、選取合適的自變量點、通過函數表達式得出對應的應變量的點、將這些點連接起來,即可得到大致圖像。使用Matlab繪製函數圖像也是使用這樣的思路,當自變量的點取得夠多時,連接這些點的圖形就越接近函數圖像。
  • Matlab 圖像處理相關函數命令
    imresize  改變圖像大小語法:B=imresize(A,m,method)imrotate  旋轉圖像語法:B=imrotate(A,angle,method) \ B=imrotate(A,angle,method,'crop') 三、像素和統計處理函數corr2
  • 一文了解Matlab如何製作動態圖像
    首先,以之前介紹過的心形圖為例,來說明在matlab中如何將繪圖過程保存為gif動態圖像。1.gif文件,在matlab可以使用imwrite將圖像保存為gif,但需要將圖像數據保存為索引圖像。,frame2im函數將當前圖形保存為rgb圖像,rgb2ind函數將rgb圖像保存為索引圖像。
  • 小波變換MATLAB圖像融合
    圖像融合可以克服單一圖像在幾何、光譜、和空間解析度等方面存在的局限性。而小波變換具有的正交性、非冗餘性以及完善的重構能力,有效彌補金字塔方法分解時的信息冗餘性以及重構過程中的不穩定性。小波變換的基本原理是繼承和發展了短時傅立葉變換局部化的思想,同時又克服了窗口大小不隨頻率變化等缺點,能夠提供一個隨頻率改變的「時間-頻率」窗口,是進行信號時頻分析和處理的理想工具。
  • 【matlab圖像處理】圖像處理的經典操作
    今天介紹圖像處理的經典操作。本內容參考自《實用MATLAB圖像和視頻處理》第一章。對於matlab的安裝,可以參考以下文章:今天,幾乎不存在與數字圖像處理無關的技術領域。數字圖像處理應用領域非常廣泛,包括:醫學上的核磁共振成像、工業上的缺陷檢測、軍事上的無人機識別、安防上的智能監控、手機上的自拍美圖,更別說網際網路上每時每秒上傳的照片和短視頻等等。
  • 值得收藏 | 如何用matlab做出酷炫的圖像
    1、基礎知識1.1 二維圖形繪製plot函數是Matlab繪製二維圖形的常用函數,該函數將數組中的數據點繪連起來構成一條連續的曲線。1.2 三維圖形繪製plot3函數是Matlab繪製三維曲線的常用函數。
  • MATLAB求函數的導數和偏導
    matlab求導命令diff調用格式:diff(函數),求的一階導數;diff(函數,n),求的n階導數(n是具體整數);diff(函數,變量名),求對的偏導數;diff(函數,變量名,n),求對的n階偏導數;matlab求雅可比矩陣命令jacobian,調用格式:jacobian([函數;函數;函數],[])給出矩陣
  • matlab常用函數大全
    一、 MATLAB 常用的基本數學函數abs(
  • MATLAB處理NAN數據程序(含實例)
    1);data2 = data(:,2);data3 = data(:,3);%funnan自定義函數 %輸入:data1是需要處理的數據%輸出% data是處理之後的數據 % stroe是去掉NAN後取鄰近平均值的位置 stroe1是繼續取NAN值的位置 s是取平均值對應的數據[data11,stroe,stroe1,s] = funnan1(data1,m);[data22,stroe2,stroe22