| 20 | 1/1 | 返回列表 |
| 查看: 7547 | 回復: 19 | ||||||||||||
| 【獎勵】 本帖被評價18次,作者wayping增加金幣 13.8 個 | ||||||||||||
[資源]
分享matlab的一些代碼(入門貼)
|
||||||||||||
|
小可在使用matlab的過程中,有些常用的程序經(jīng)常反復輸入,不甚其煩。相信有的童鞋也遇到過相似的情況,所以總結了一下,以饗各位。屬于入門貼,歡迎高手交流~~ 1、圖像的讀取 MATLAB中從圖像文件中讀取數(shù)據(jù)用函數(shù)imread(),這個函數(shù)的作用就是將圖像文件的數(shù)據(jù)讀入矩陣中,此外還可以用imfinfo()函數(shù)查看圖像文件的信息(見例1) 2、灰度直方圖及直方圖均衡化 灰度直方圖用于顯示圖像的灰度值分布情況,是數(shù)字圖像處理中最簡單和最實用的工具。MATLAB中提供了專門繪制直方圖的函數(shù)imhist()。用它可以很簡單的繪制出一幅圖像的灰度直方圖(見例2)。 在圖像處理中,點運算是簡單而又重要的一種技術,其中最常用的一種應用就是直方圖的均衡化(見例3)。 3、圖像的代數(shù)運算 代數(shù)運算是指對兩幅輸入圖像進行點對點的加、減、乘和除計算而得到輸出圖像的運算。對于相加和相乘的情形,可能不止有兩幅圖像參加運算。圖像相加的一個重要應用是對同一場景的多幅圖像求平均值。這點被經(jīng)常用來有效地降低加性(additive)隨機噪聲的影響(見例4) 4、圖像濾波處理 在數(shù)字圖像處理中,常常會遇到圖像中混雜有許多的噪聲。因此,在進行圖像處理中,有時要先進行祛除噪聲的工作。最常用的祛除噪聲的方法是用濾波器進行濾波處理。MATLAB的圖像處理工具箱里也設計了許多的濾波器。如均值濾波器、中值濾波器、維納濾波器等。用戶可以很方便的運用一些函數(shù)完成數(shù)字濾波工作。(見例5)。 5、傅立葉變換 傅立葉變換是線性系統(tǒng)分析的一個有力的工具。它在圖像處理,特別是在圖像增強、復原和壓縮中,扮演著非常重要的作用。實際中一般采用一種叫做快速傅立葉變換(FFT)的方法,MATLAB中的fft2指令用于得到二維FFT的結果,ifft2指令用于得到二維FFT逆變換的結果。(見例6) 6、圖像壓縮 在圖像的變換和壓縮中,常常用到離散余弦變換(DCT)。DCT具有能使圖像的最重要的信息集中在DCT的幾個系數(shù)上的性能。正是基于此,DCT通常應用于圖像的壓縮。(見例7) 1、圖像的讀取 MATLAB中從圖像文件中讀取數(shù)據(jù)用函數(shù)imread(),這個函數(shù)的作用就是將圖像文件的數(shù)據(jù)讀入矩陣中,此外還可以用imfinfo()函數(shù)查看圖像文件的信息(見例1) %例1:圖像數(shù)據(jù)及圖像信息的讀取 imfinfo c:\lilizong\boat.bmp %讀取圖像信息 [A,M]=imread('c:\lilizong\boat.bmp'); %圖像數(shù)據(jù)的讀取,將圖像數(shù)據(jù)放入矩陣A中,顏色數(shù)據(jù)放入矩陣M中 imshow(A,M);title('原圖像'); M(:,1)=0; %將顏色數(shù)據(jù)矩陣的一列置零 figure imshow(A,M);title('改變顏色后的圖像') MATLAB還提供了將數(shù)據(jù)寫入一個文件的函數(shù)imwrite以及不同類型文件相互轉換的函數(shù),可以參考MATLAB 的幫助文件。 2、灰度直方圖及直方圖均衡化 灰度直方圖用于顯示圖像的灰度值分布情況,是數(shù)字圖像處理中最簡單和最實用的工具。MATLAB中提供了專門繪制直方圖的函數(shù)imhist()。用它可以很簡單的繪制出一幅圖像的灰度直方圖(見例2)。 %例2:直方圖的顯示 imshow('c:\lilizong\boat.bmp');title('原圖像') %顯示原圖像 A=imread('e:\matlabwork\tuxiang\Girl.bmp','bmp'); figure;imhist(A),title('對應直方圖') 在圖像處理中,點運算是簡單而又重要的一種技術,其中最常用的一種應用就是直方圖的均衡化(見例3)。 %例3:直方圖均衡化 imshow('c:\lilizong\boat1.bmp');title('原圖像') I=imread('c:\lilizong\boat1.bmp'); figure;imhist(I),title('對應直方圖') %從得到的直方圖可以看出,圖像的對比度很低,灰度級集中在70-160范圍內,如果只取 %這個范圍內的灰度,并擴展到[0,255],則會明顯增強圖像對比度 J=imadjust(I,[70/255 160/255],[]); figure;imshow(J),title('經(jīng)灰度級調整后的圖') figure;imhist(J),title('灰度級調整后的直方圖') %MATLAB還提供了histeq函數(shù)(自動直方圖均衡化) K=histeq(I); figure;imshow(K),title('經(jīng)直方圖均衡化后的圖') figure;imhist(K),title('直方圖均衡化后的直方圖') 3、圖像的代數(shù)運算 代數(shù)運算是指對兩幅輸入圖像進行點對點的加、減、乘和除計算而得到輸出圖像的運算。對于相加和相乘的情形,可能不止有兩幅圖像參加運算。圖像相加的一個重要應用是對同一場景的多幅圖像求平均值。這點被經(jīng)常用來有效地降低加性(additive)隨機噪聲的影響(見例4) %例4:圖象加噪聲再通過多次相加求平均的方法祛除噪聲 [I,M]=imread('c:\boat.png'); J=imnoise(I,'salt & pepper',0.005); subplot(1,2,1),imshow(I,M),title('原圖象'); subplot(1,2,2),imshow(J,M),title('加噪聲后圖象'); K=zeros(256); for i=1:100 J=imnoise(I,'salt & pepper',0.005); J1=im2double(J); % K=K+J1; K=K+J1; end K=K/100; figure,imshow(K),title('相加求平均后的圖象'); 4、圖像濾波處理 在數(shù)字圖像處理中,常常會遇到圖像中混雜有許多的噪聲。因此,在進行圖像處理中,有時要先進行祛除噪聲的工作。最常用的祛除噪聲的方法是用濾波器進行濾波處理。MATLAB的圖像處理工具箱里也設計了許多的濾波器。如均值濾波器、中值濾波器、維納濾波器等。用戶可以很方便的運用一些函數(shù)完成數(shù)字濾波工作。(見例5)。 %例5:用濾波器祛除圖象噪聲(分別用均值濾波,中值濾波,及維納濾波器祛除加入高斯噪聲的圖象) I=imread('C:\boat.png'); J=imnoise(I,'gaussian',0,0.002); %加入高斯噪聲 %進行均值濾波 h=fspecial('average',3); %fspecial函數(shù)用于產(chǎn)生預定義濾波器 I2=uint8(round(filter2(h,I))); %filter2函數(shù)用于圖像濾波,此處h是濾波參數(shù)(均值),I是要處理的圖像 %進行中值濾波 I3=medfilt2(J,[3,3]); %medfilt2函數(shù)用于圖像的中值濾波 %進行維納濾波 I4=wiener2(J,[3,3]);%進行一次維納濾波 I5=wiener2(I4,[3,3]);%進行二次維納濾波 subplot(2,3,1),imshow(I),title('原圖象') subplot(2,3,2),imshow(J),title('加噪聲圖象') subplot(2,3,3),imshow(I2),title('均值濾波后圖象') subplot(2,3,4),imshow(I3),title('中值濾波后圖象') subplot(2,3,5),imshow(I4),title('維納濾波后圖象') subplot(2,3,6),imshow(I5),title('兩次維納濾波后圖象') 5、傅立葉變換 傅立葉變換是線性系統(tǒng)分析的一個有力的工具。它在圖像處理,特別是在圖像增強、復原和壓縮中,扮演著非常重要的作用。實際中一般采用一種叫做快速傅立葉變換(FFT)的方法,MATLAB中的fft2指令用于得到二維FFT的結果,ifft2指令用于得到二維FFT逆變換的結果。(見例6) %例6:近似沖擊函數(shù)的二維快速傅立葉變換(FFT) x=1:99;y=1:99; [X,Y]=meshgrid(x,y); A=zeros(99,99); A(49:51,49:51)=1; B=fft2(A); subplot(1,2,1),imshow(A),xlabel('空域圖象'); subplot(1,2,2),imshow(B),xlabel('時域圖象'); figure subplot(1,2,1),mesh(X,Y,A),xlabel('空域'),grid on; subplot(1,2,2),mesh(X,Y,abs(B)),xlabel('時域'),grid on; 6、圖像壓縮 在圖像的變換和壓縮中,常常用到離散余弦變換(DCT)。DCT具有能使圖像的最重要的信息集中在DCT的幾個系數(shù)上的性能。正是基于此,DCT通常應用于圖像的壓縮。(見例7) JPEG圖像壓縮算法: 輸入圖像被分成8*8或16*16的小塊,然后對每一小塊進行二維DCT(離散余弦變換)變換,變換后的系數(shù)量化、編碼并傳輸; JPEG文件解碼量化了的DCT系數(shù),對每一塊計算二維逆DCT變換,最后把結果塊拼接成一個完整的圖像。在DCT變換后舍棄那些不嚴重影響圖像重構的接近0的系數(shù)。 DCT變換的特點是變換后圖像大部分能量集中在左上角,因為左上放映原圖像低頻部分數(shù)據(jù),右下反映原圖像高頻部分數(shù)據(jù)。而圖像的能量通常集中在低頻部分。 %例7:DCT變換用于圖象的壓縮實例 I=imread('d:\lilizong\test.jpg'); %該圖片在安裝matlab的目錄中找,原圖為灰度圖象 I=im2double(I);%圖像存儲類型轉換 T=dctmtx(8);%離散余弦變換矩陣 B=blkproc(I,[8 8],'P1*x*P2',T,T'); %對原圖像進行DCT變換 mask=[1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; B2=blkproc(B,[8 8],'P1.*x',mask); %數(shù)據(jù)壓縮,丟棄右下角高頻數(shù)據(jù) I2=blkproc(B2,[8 8],'P1*x*P2',T',T); %進行DCT反變換,得到壓縮后的圖像 imshow(I) title('原始圖像') figure; imshow(I2) title('壓縮后的圖像') 應用到的函數(shù): I=imread('圖像文件名') :讀取圖像數(shù)據(jù),保存在矩陣I中; imshow(I) :顯示灰度圖像I,其他用法見matlab幫助; I2=im2double(I1) :把圖像數(shù)組I1轉換成double精度類型; D=dctmtx(n) :二維離散余弦變換函數(shù),返回n*n離散余弦變換矩陣。 一個n*n的變換矩陣T被定義成: Tpq=1/sqrt(n) ,當p=0,0<=q<=M-1; Tpq=sqrt(2/n)*cos[pi*(2q+1)*p/2n] ,當1<=p<=M-1,0<=q<=M-1。 B=blkproc(A,[m n],fun,P1,P2...) :塊操作函數(shù)。對圖像A的每個不同的m*n塊應用fun函數(shù),P1,P2等為fun函數(shù)參數(shù)。在圖像邊緣用0來擴展;只有當fun的返回矩陣是m*n矩陣時,B和A的大小才相同。 figure:強制生成一個新的個繪圖窗口; 可以看出,盡管由于85%的DCT系數(shù)被拋棄而使恢復后的圖像質量有所降低,圖像內容仍能清晰可辨,達到了圖像壓縮的目的。 發(fā)表于 @ 2007年04月06日 14:25:00|評論(3)|編輯 新一篇: 部分matlab代碼 | 舊一篇: MATLAB圖像處理命令 logerer 發(fā)表于2008年1月6日 20:43:43 IP:舉報 不錯不錯,感謝博主。圖片也發(fā)上來就更好了。為什么 (378209553@QQ.com) 發(fā)表于2008年5月28日 0:48:09 IP:舉報 imshow('C:\Documents and Settings\系統(tǒng)維護\桌面\a.jpg');title('原圖像') I=imread('C:\Documents and Settings\系統(tǒng)維護\桌面\a.jpg'); figure;imhist(I),title('對應直方圖') %從得到的直方圖可以看出,圖像的對比度很低,灰度級集中在70-160范圍內,如果只取 %這個范圍內的灰度,并擴展到[0,255],則會明顯增強圖像對比度 J=imadjust(I,[70/255 160/255],[]); figure;imshow(J),title('經(jīng)灰度級調整后的圖') figure;imhist(J),title('灰度級調整后的直方圖') %MATLAB還提供了histeq函數(shù)(自動直方圖均衡化) K=histeq(I); figure;imshow(K),title('經(jīng)直方圖均衡化后的圖') figure;imhist(K),title('直方圖均衡化后的直方圖') ??? Error using ==> iptcheckinput Function IMHIST expected its first input, I or X, to be two-dimensional. Error in ==> imhist>parse_inputs at 270 iptcheckinput(a, {'double','uint8','logical','uint16','int16','single'}, ... Error in ==> imhist at 57 [a, n, isScaled, top, map] = parse_inputs(varargin{:}); |
matlab學習專輯 | 模擬與仿真 | matlab | matlab |
科研軟件資料 | 數(shù)理基礎收集 | 數(shù)字圖像處理 | 科研相關 |
氧化鋅的例子 | source |
| 20 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 340求調劑 +5 | jhx777 2026-03-27 | 5/250 |
|
|---|---|---|---|---|
|
[考研] 一志愿南昌大學324求調劑 +4 | hanamiko 2026-03-27 | 4/200 |
|
|
[考研] 【求調劑】085601材料工程專碩 | 總分272 | +5 | 腳滑的守法公民 2026-03-27 | 5/250 |
|
|
[考研]
|
18419759900 2026-03-25 | 8/400 |
|
|
[考研] 269專碩求調劑 +10 | 金恩貝 2026-03-21 | 10/500 |
|
|
[考研] 322求調劑 +4 | 我真的很想學習 2026-03-23 | 4/200 |
|
|
[考研] 286求調劑 +4 | lim0922 2026-03-26 | 4/200 |
|
|
[考研] 一志愿陜師大生物學071000,298分,求調劑 +5 | SYA! 2026-03-23 | 5/250 |
|
|
[考研] 324求調劑 +8 | hanamiko 2026-03-26 | 10/500 |
|
|
[考研]
|
nnnnnnn5 2026-03-25 | 5/250 |
|
|
[考研] 343求調劑 +4 | 贈我一本書 2026-03-23 | 4/200 |
|
|
[考研]
材料調劑
5+4
|
想要一壺桃花水 2026-03-25 | 10/500 |
|
|
[考研] 材料科學與工程 317求調劑 +4 | JKSOIID 2026-03-26 | 4/200 |
|
|
[考研] 0856求調劑 +8 | zhn03 2026-03-25 | 9/450 |
|
|
[考研] 一志愿武理085500機械專業(yè)總分300求調劑 +3 | an10101 2026-03-24 | 7/350 |
|
|
[考研] 335求調劑 +4 | yuyu宇 2026-03-23 | 5/250 |
|
|
[考研] 工科0856求調劑 +5 | 沐析汀汀 2026-03-21 | 5/250 |
|
|
[考研] 306求調劑 +5 | 來好運來來來 2026-03-22 | 5/250 |
|
|
[考研] 生物學調劑 +5 | Surekei 2026-03-21 | 5/250 |
|
|
[考研] 一志愿北京化工大學070300 學碩336求調劑 +5 | vv迷 2026-03-21 | 8/400 |
|