matlab中圖像處理函數(shù)有哪些? Matlab常用圖像處理函數(shù)匯總


MathWorks Matlab R2020a v9.8.0 中文永久授權(quán)版(附序列號+激活補丁+教程) Win64位
- 類型:編程其它
- 大?。?/span>20.8GB
- 語言:簡體中文
- 時間:2021-05-11

Mathworks Matlab R2021b (9.11.0) 中文完美授權(quán)版(含激活補丁+教程) Win64
- 類型:編程其它
- 大?。?/span>19.3GB
- 語言:簡體中文
- 時間:2021-09-26
一、圖像的讀取
A=imread(‘1.bmp’); %讀入圖像
二、圖像的寫入
mwrite(A,‘test.bmp’);
三、圖像的顯示
imshow(I,[low high]);
I為要顯示的圖像矩陣。[low high]為指定顯示灰度圖像的灰度范圍。 高于high的像素被顯示成白色;低于low的像素被顯示成黑色;介于 High和low之間的像素被按比例拉伸后顯示為各種等級的灰色。
四、創(chuàng)建窗口
figure;%創(chuàng)建一個新的窗口
subplot(m,n,p); 打開一個有m行n列圖像位置的窗口,并將焦點位于第p個位置上。
五、圖像的格式轉(zhuǎn)換
A=im2bw(I,LEVEL); //閾值法從灰度圖、RGB圖創(chuàng)建二值圖。LEVEL為指定的閾值(0,1)。
A=rgb2gray(I);從RGB圖創(chuàng)建灰度圖
A=im2uint8(I);將圖像轉(zhuǎn)換成uint8類型
A=im2double(I); 將圖像轉(zhuǎn)換成double類型
六、灰度直方圖
imhist(I);
[M,N]=size(I); %計算圖像大小 [counts,x]=imhist(I,32);%計算有32個小區(qū)間的灰度直方圖 counts=counts/M/N;%計算歸一化灰度直方圖各區(qū)間的值 stem(x,counts);%繪制歸一化直方圖
七、伽馬變換
J=imadjust(I,[low_in high_in],[low_out high_out],gamma)
I=imread('1.bmp'); I = rgb2gray(I); I = imadjust(I,[],[],0.5); figure;imshow(I); %gamma=0.5 title('Gamma 0.5');
八、圖像二值化
BW=im2bw(I,level);%level為人工設定閾值范圍為[0 ,1]
九、閾值變換
thresh=graythresh(I);%自動設定所需的最優(yōu)化閾值
十、直方圖均衡化
[J,T]=histeq(I); %J為輸出圖像,T為變換矩陣
十一、圖像平移
strel(); //創(chuàng)建形態(tài)學結(jié)構(gòu)元素
translate(SE,[y x])%原結(jié)構(gòu)元素SE上y和x方向平移
imdilate%形態(tài)學膨脹
I=imread(1.bmp'); se=translate(strel(1),[180 190]); B=imdilate(I,se); figure; subplot(1,2,1); subimage(I); title('原圖像'); subplot(1,2,2); subimage(B); title('平移后圖像');
十二、圖像鏡像
B=imtransform(A,tform,method);
tform=makeform(transformtype,matrix);%空間變換結(jié)構(gòu)
Method合法值 | 含義 |
‘bicubic’ | 雙三次插值 |
‘bilinear’ | 雙線性插值 |
‘nearest’ | 最近鄰插值 |
參數(shù)transformtype指定了變換的類型,常見的’affine’為二維或 多維仿射變換,包括平移、旋轉(zhuǎn)、比例、拉伸和錯切等。 matrix為相應的仿射變換矩陣。
A=imread(1.bmp'); [height,width,dim]=size(A); tform=maketform('affine',[-1 0 0;0 1 0;width 0 1]); B=imtransform(A,tform,'nearest'); tform2=maketform('affine',[1 0 0;0 -1 0;0 height 1]); C=imtransform(A,tform2,'nearest'); figure;imshow(B); //水平鏡像 figure;imshow(C); //垂直鏡像
十三、圖像轉(zhuǎn)置
A=imread(1.bmp'); tform=maketform('affine',[0 1 0;1 0 0;0 0 1]); B=imtransform(A,tform,'nearest'); figure;imshow(B);
十四、圖像中心旋轉(zhuǎn)
B=imrotate(A,angle,method,’crop’);
angle為旋轉(zhuǎn)角度,正值為逆時針旋轉(zhuǎn)??蛇x參數(shù)method為imrotate函數(shù)指定 插值方法。‘crop’選項會裁減旋轉(zhuǎn)后增大的圖像,保持和原圖像同樣大小
A=imread('nir.bmp'); B=imrotate(A,30,'nearest','crop'); figure;imshow(B); //逆時針旋轉(zhuǎn)30°
十五、添加噪聲
h=imnoise(I,type,parameters);
type合法值 | 含義 |
‘gaussian’ | 高斯白噪聲 |
‘salt&pepper’ | 椒鹽噪聲 |
十六、圖像濾波
B=imfilter(f,w,option1,option2,…);
f 為要進行濾波操作的圖像。
w為濾波操作使用的模板,為一個二維數(shù)組,可自己定義。
option1……是可選項,包括:
1、邊界選項(’symmetric’、’replicate’、’circular’)
2、尺寸選項(’same’、’full’)
3、模式選項(’corr’、’conv’)
十七、濾波器設計
h=fspecial(type,parameters)parameters為可選項,是和所選定的濾波器類型type相關(guān)的 配置參數(shù),如尺寸和標準差等。 type為濾波器的類型。其合法值如下:
type合法值 | 含義 |
‘average’ | 平均模板 |
‘disk’ | 圓形領域的平均模板 |
‘gaussian’ | 高斯模板 |
‘laplacian’ | 拉普拉斯模板 |
‘log’ | 高斯-拉普拉斯模板 |
‘prewitt’ | Prewitt水平邊緣檢測算子 |
‘sobel’ | Sobel水平邊緣檢測算子 |
十八、中值濾波
I=medfilt2(I1,[m,n]);
m和n為中值濾波處理的模板大小,默認3*3
十九、圖像銳化
1、Robert交叉梯度
I=imread(1.bmp'); I=double(I);%雙精度化 w1=[-1 0;0 1]; w2=[0 -1;1 0]; G1=imfilter(I,w1,‘corr’,‘replicate’);%正45°梯度 G2=imfilter(I,w2,‘corr’,‘replicate’);%負45°梯度 G=abs(G1)+abs(G2);%計算Robert梯度 figure;imshow(G,[]); figure;imshow(abs(G1),[]); figure;imshow(abs(G2),[]);
2、高斯-拉普拉斯銳化
I=imread('1.bmp'); J=double(I);%雙精度化 h1=fspecial('log',5,0.5);%大小為5,sigma=0.5的LOG算子 I1=imfilter(J,h1,'corr','replicate'); figure;imshow(uint8(abs(I1)),[]); h2=fspecial('log',5,2);%大小為5,sigma=2的LOG算子 I2=imfilter(J,h2,'corr','replicate'); figure;imshow(uint8(abs(I2)),[]);
二十、傅里葉變換
I=fft2(x);%快速傅里葉變換
I=fft2(x,m,n); x為輸入圖像;
m和n分別用于將x的第一和第二維規(guī)整到指定的長度。
I1=abs(I);%計算I的幅度譜
I2=angle(I);%計算I的相位譜
Y=fftshift(I);%頻譜平移
I=ifft2(x);%快速傅里葉逆變換 I=ifft2(x,m,n);
二十一、圖像腐蝕
I2=imerode(I,SE);
SE=strel(shape,parameters);
I為原始圖像,可以是二值或者灰度圖像。
shape指定了結(jié)構(gòu)元素的形狀。
parameters是和輸入shape有關(guān)的參數(shù)。
shape合法值 | 含義 |
‘arbitrary’或為空 | 任意自定義結(jié)構(gòu)元素圓形結(jié)構(gòu)元素 |
‘disk’ | 圓形結(jié)構(gòu)元素 |
‘square’ | 正方形結(jié)構(gòu)元素 |
‘rectangle’ | 矩形結(jié)構(gòu)元素 |
‘line’ | 線性結(jié)構(gòu)元素 |
‘pair’ | 包含2個點的結(jié)構(gòu)元素 |
‘diamond’ | 菱形的結(jié)構(gòu)元素 |
二十二、圖像膨脹
J=imdilate(I,SE);
SE=strel(shape,parameters);
I為原始圖像,可以是二值或者灰度圖像。
shape指定了結(jié)構(gòu)元素的形狀。
parameters是和輸入shape有關(guān)的參數(shù)
二十二、開閉運算
SE=strel(shape,parameters);
I2=imopen(I,SE);%開運算
I3=imclose(I,SE);%閉運算
二十三、連通分量提取
[L num]=bwlabel(Ibw,conn);
Ibw為一幅輸入二值圖像。
conn為可選參數(shù),指明提取連通分量是4連通還是8連通。默認為8。
L為連通分量標注圖像。
num為二值圖像Ibw中連通分量個數(shù)。
二十四、形態(tài)學處理
I=bwmorph(I,operation,n)
operation合法值 | 含義 |
‘bridge’ | 橋接有單個像素縫隙分割的前景像素 |
‘diag’ | 圍繞對角線相連的前景像素進行填充 |
‘clean’ | 清楚孤立的前景像素 |
‘fill’ | 填充單個像素的孔洞 |
‘hbreak’ | 去掉前景中的H形連接 |
‘majority’ | 如果點P的8領域中一半以上像素為前景像素,則 P為前景像素,否則為背景。 |
二十五、圖像分割
1、基于梯度算子的邊緣檢測
BW=edge(I,type,thresh,direction,’nothinning’) ;
type合法值 | 含義 |
‘sobel | sobel算子 |
‘prewitt’ | prewitt算子 |
‘rebert’ | rebert算子 |
thresh是敏感度閾值參數(shù),任何灰度值低于此閾值的邊緣將不 會被檢測到。默認值為空矩陣[],此時算法自動計算閾值。
direction指定了我們感興趣的邊緣方向,edge函數(shù)將只檢測direction中指定方 向的邊緣,其合法值如下:
direction合法值 | 邊緣方向 |
‘horizontal’ | 水平方向 |
‘vertical’ | 豎直 方向 |
‘both’ | 所有方向 |
可選參數(shù)’nothinning’,指定時可以通過跳過邊緣細化算法來加快算法 運行的速度。默認是’thinning’,即進行邊緣細化。
2、基于高斯-拉普拉斯算子的邊緣檢測
BW=edge(I,’log’,thresh,sigma) ;
sigma指定生成高斯濾波器所使用的標準差。默認時,標準差為2。
3、基于Canny算子的邊緣檢測
BW=edge(I,’canny’,thresh,sigma) ;
thresh是敏感度閾值參數(shù),默認值為空矩陣[]。此處為一列向量,為算法指 定閾值的上下限。第一個元素為閾值下限,第二個元素為閾值上限。如果 只指定一個閾值元素,則默認此元素為閾值上限,其0.4倍的值作為閾值下 限。如閾值參數(shù)沒有指定,則算法自行確定敏感度閾值上下限。
a=imread(1.bmp'); c=fspecial('gaussian',5,0.8); b=imfilter(a,c); bw1=edge(b,‘sobel’);%sobel算子 bw2=edge(b,‘prewitt’);%prewitt算子 bw3=edge(b,‘roberts’);%roberts算子 bw4=edge(b,‘log’); %log算子 bw5=edge(b,‘canny’);%canny算子 figure;imshow(bw1);imwrite(bw1,'bwsobel.bmp'); figure;imshow(bw2);imwrite(bw2,'bwprewitt.bmp'); figure;imshow(bw3);imwrite(bw3,'bwroberts.bmp'); figure;imshow(bw4);imwrite(bw4,'bwlog.bmp'); figure;imshow(bw5);imwrite(bw5,'bwcanny.bmp');
二十六、霍夫變換
1、霍夫變換(針對二值圖像)
[H,theta,rho]=hough(BW,param1,val1,param2,val2);
2、尋找峰值—houghpeaks
peaks=houghpeaks(H,numpeaks,param1,val1,param2,val2);
3、提取直線段—houghlines
lines=houghlines(BW,theta,rho,peaks,param1,val1,param2,val2);
以上就是Matlab常用圖像處理函數(shù)匯總,希望大家喜歡,請繼續(xù)關(guān)注腳本之家。
相關(guān)推薦:
matlab的a和b哪個版本最好用? matlab中a版和b版的區(qū)別介紹
MATLAB怎么讀取Excel文件表格中的數(shù)據(jù)? Matlab讀取Excel文件指南
相關(guān)文章
mat文件在matlab里面怎么讀取? matlab保存和讀取mat文件數(shù)據(jù)的技巧
mat文件在matlab里面怎么讀取?使用matlab進行運算的時候,想保存和讀取mat文件數(shù),該怎么操作呢?下面我們就來看看matlab保存和讀取mat文件數(shù)據(jù)的技巧2023-06-12matlab怎么調(diào)用自定義函數(shù)? matlab定義函數(shù)并調(diào)用的技巧
matlab怎么調(diào)用自定義函數(shù)?matlab經(jīng)常會調(diào)用函數(shù),該怎么自定義函數(shù)并調(diào)用呢?詳細請看下文介紹2023-06-12matlab中怎么求矩陣的轉(zhuǎn)置? matlab矩陣轉(zhuǎn)置命令使用技巧
matlab中怎么求矩陣的轉(zhuǎn)置?我們使用matlab的時候,想知道怎么求矩陣的轉(zhuǎn)置,該怎么操作呢?下面我們就來看看matlab矩陣轉(zhuǎn)置命令使用技巧2023-06-12MathWorks Matlab R2023a中文版永久密鑰激活+詳細安裝教程(含下載)
matlab2023a是MathWorks打造的一款非常專業(yè)且強大的商業(yè)數(shù)學軟件,本文為大家?guī)碜钚翸atlab R2023a安裝激活教程,內(nèi)含安裝密鑰和lic許可證,讓你免費體驗全部功能2023-03-21Mathworks Matlab R2022b(9.13)密鑰安裝+許可破解教程(附下載)
全新的Matlab R2022b v9.13已經(jīng)正式發(fā)布了,此版本發(fā)布了兩個新產(chǎn)品以及多項重要更新,本文主要為大家?guī)砹薓atlab R2022b(V9.13)密鑰破解安裝教程,歡迎有興趣的朋友前來2022-09-16MathWorks MATLAB R2022a中文版激活密鑰+詳細安裝教程(含下載)
Matlab R2022a是一款由MathWorks開發(fā)的全球最強大、最實用超強商業(yè)數(shù)學軟件,本文為大家?guī)鞰atlab 2022a安裝教程,并包含Windows和Mac教程,內(nèi)含激活秘鑰和補丁下載,僅供2022-03-14MathWorks Matlab R2021b(V9.11)密鑰安裝+許可激活圖文教程
Matlab R2021b是一款由美國MathWorks公司出品的商業(yè)數(shù)學軟件,新版包括 MATLAB 和 Simulink 的若干新功能、一款新產(chǎn)品以及對其它2021-09-26MathWorks Matlab R2021a中文版永久激活詳細教程(含下載+密鑰)
matlab2021a是由美國知名企業(yè)MathWorks打造的一款非常專業(yè)且強大的商業(yè)數(shù)學軟件,今天小編為大家?guī)砹嗽敿毜钠平饨坛膛c文件,需要的朋友一起看看吧2021-03-15MathWorks MATLAB R2020b詳細密鑰安裝教程(附許可下載)
MATLAB R2020b是一款全球最強大且最實用超強商業(yè)數(shù)學軟件,MATLAB允許矩陣操作,函數(shù)和數(shù)據(jù)繪圖,算法實現(xiàn),用戶界面創(chuàng)建等,這里整理了最新MATLAB R2020b許可證激活方法,2020-09-22MathWorks Matlab R2020a(V9.8)密鑰安裝+永久激活詳細教程(含下載)
Matlab R2020a是由MathWorks開發(fā)的全球最強大、最實用超強商業(yè)數(shù)學軟件,本文主要為大家?guī)砹薓atlab 2020a安裝教程+永久激活方法,并附上Matlab 2020a官方原版 + 激活補丁2020-03-27