《MATLAB基礎及應用》課件 第7章 數(shù)字圖像處理_第1頁
《MATLAB基礎及應用》課件 第7章 數(shù)字圖像處理_第2頁
《MATLAB基礎及應用》課件 第7章 數(shù)字圖像處理_第3頁
《MATLAB基礎及應用》課件 第7章 數(shù)字圖像處理_第4頁
《MATLAB基礎及應用》課件 第7章 數(shù)字圖像處理_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

MATLAB基礎及應用曹敦虔編著第7章數(shù)字圖像處理本章學習重點掌握內(nèi)容:數(shù)字圖像基礎灰度變換空間濾波頻率域濾波彩色圖像處理第7章數(shù)字圖像處理7.1

數(shù)字圖像基礎7.2

灰度變換7.3

空間濾波7.4

頻率域濾波7.5 彩色圖像處理第7章數(shù)字圖像處理隨著計算機技術(shù)的發(fā)展,數(shù)字圖像處理技術(shù)也得到了快速發(fā)展,數(shù)字圖像也經(jīng)廣泛應用在工業(yè)、農(nóng)業(yè)、軍事、交通、醫(yī)學、安全、人工智能等領域,人們的日常生活也常常涉及到數(shù)字圖像處理,如指紋識別、人臉識別、手機拍照、掃碼支付、文字識別等.本章將介紹數(shù)字圖像的一些基礎知識和常見數(shù)字圖像處理算法.7.1數(shù)字圖像基礎一幅圖像可以定義為一個二元函數(shù)z

=f(x,y),其中x和y是空間(平面)坐標,函數(shù)值z是圖像在點(x,y)處的顏色或強度(灰度).若x,y和z都是有限的離散數(shù)值,稱該圖像為數(shù)字圖像.一般情況下,x,y和z都取整數(shù),1≤x≤m,1≤y≤n,z的取值范圍根據(jù)圖像的色彩空間不同而不同.每一個點(x,y,z)稱為一個圖像元素或像素,m×n是圖像的像素數(shù),通常稱為圖像的分辨率,m稱為行分辨率,n稱為列分辨率.yx7.1數(shù)字圖像基礎

7.1數(shù)字圖像基礎

7.1數(shù)字圖像基礎顯示一幅圖像的方式也有多種,最直觀也最常用的一種方式是以平面圖的方式顯示,例如圖7.1是一幅灰度圖像的平面圖.

圖7.17.1數(shù)字圖像基礎由于圖像可以看為二元素函數(shù),所以灰度圖像可以用三維柱形圖的方式來顯示,柱子的高度表示圖像的灰度值.

圖7.27.1數(shù)字圖像基礎還可以直接顯示圖像的數(shù)據(jù),如下所示(這里僅顯示一部分):

76 162 162 164 162 160 153 165 160 167 15876 162 162 164 162 161 154 165 160 167 15877 162 162 164 161 162 155 164 161 166 15878 161 162 163 159 162 157 163 161 165 15978 160 161 162 157 162 158 161 160 163 15978 159 160 160 155 162 159 159 159 160 16078 158 160 159 153 162 159 158 157 158 16078 157 159 158 152 161 159 157 155 156 16076 157 156 155 160 157 158 155 158 160 15776 157 156 155 159 156 157 155 156 159 15676 157 157 155 158 155 156 154 153 157 1567.1數(shù)字圖像基礎色彩深度是指表示1像素的顏色(或灰度)所需的存儲空間的位數(shù).色深決定了圖像的顏色取值范圍,也就決定了圖像的色彩豐富程度.色彩深度為k的圖像稱為k比特圖像.k比特圖像的顏色數(shù)最多為2k,例如1比特圖像最多只有2種顏色,2比特圖像最多有4種顏色,8比特圖像最多有256種顏色.在不壓縮的情況下,保存一幅k比特圖像所需的存儲空間大小為m×n×k比特,即m×n×k/8字節(jié).

2比特8比特24比特7.1.1黑白圖像如果一幅圖像只有黑、白兩種顏色,那么這種圖像稱為黑白圖像,也稱為二值圖像.可以使用1比特圖像來表示黑白圖像,通常用0表示黑色,1表示白色.在MATLAB中,通常使用一個邏輯型數(shù)組來表示一幅黑白圖像.圖7.4是一幅黑白圖像及其部分數(shù)據(jù).

111110000000111110000000111110000000111110000000111110000000111110000000111110000000111110000000圖7.47.1.2

灰度圖像如果一幅圖像從黑到白有多個中間亮度的灰色,那么稱這種圖像為灰度圖像.不同亮度的灰色數(shù)量稱為灰度級,在計算中為了方便表示,灰度級通常都是2的整數(shù)次冪.k比特灰度圖像可以有2k個不同亮度的灰色,所以灰度級為2k.1比特灰度圖像就退化為黑白圖像.最常見的是8比特灰度圖像,總共有256種不同亮度的灰色,0表示黑色,255表示白色,0~255之間的整數(shù)表示介于黑與白之間的灰色.在MATLAB中,通常使用uint8型數(shù)組來表示一幅8比特灰度圖像,有時候與使用值為0~1之間的double型的數(shù)組來表示.

151142139158142141125183791291501451611531131501949213614411914216289153176941881438611215211013714219220616090851161641371231781581621137383173139115104119135107931031201221151457.1.3 彩色圖像如果一幅圖像中有多種不同的顏色,那么就稱這種圖像為彩色圖像.通常,表示一個彩色需要3個數(shù)值,所以彩色圖像z=f(x,y)中的函數(shù)值z是一個3維向量.MATLAB是采用一個三維數(shù)組來表示一幅彩色圖像的.用來描述顏色的數(shù)學模型稱為彩色模型,常見的彩色模型有RGB、CMYK、HSI、Lab等,其中RGB模型最為常用,它是目前彩色顯示器顯示顏色的主要方式,也是MATLAB處理彩色圖像時默認使用的彩色模型.有關彩色模型相關知識可參見7.5節(jié).右圖顯示的是一幅RGB彩色圖像及其R、G、B三個分量灰度圖.

7.1.4 索引圖像索引圖像使用顏色映射表來表示顏色的一種圖像.一幅索引圖像包含兩個部分,一部分是圖像數(shù)據(jù),另一部分是顏色映射表(調(diào)色板).圖像數(shù)據(jù)是一個uint8型數(shù)組,其中的數(shù)值所代表的顏色由顏色映射表來定義.顏色映射表是一個排好序的m×3的double型數(shù)組(m通常為256),其中每一行代表一種顏色,其3個值分別是RGB顏色的三個分量的權(quán)重.假設圖像數(shù)據(jù)為ai,則對應的顏色為Colormap(ai,:).在圖像顏色數(shù)量較少(少于256色)的情況下,使用索引圖像能夠顯著減小所需的存儲空間,所以索引圖像主要用于網(wǎng)絡上的圖片傳輸和一些對圖像色彩要求不高,但對圖片文件大小有嚴格要求的地方.

7.1.5 MATLAB圖像處理基本命令

命令說明命令說明gray2ind將灰度圖像轉(zhuǎn)換成索引圖像imshow顯示圖像im2bw將圖像轉(zhuǎn)換成黑白圖像imwrite向文件中寫入圖像數(shù)據(jù)im2double將圖像數(shù)組轉(zhuǎn)換為double型數(shù)組ind2gray將索引圖像轉(zhuǎn)換成灰度圖像im2uint16將圖像數(shù)組轉(zhuǎn)換為uint16型數(shù)組ind2rgb將索引圖像轉(zhuǎn)換成RGB彩色圖像im2uint8將圖像數(shù)組轉(zhuǎn)換為uint8型數(shù)組mat2gray將數(shù)據(jù)矩陣轉(zhuǎn)換成灰度圖像imfinfo獲取圖片文件中的圖像信息montage一次顯示多幀圖像immovie將多幀圖像轉(zhuǎn)換成動畫rgb2gray將RGB彩色圖像轉(zhuǎn)換成灰度圖像implay播放動畫rgb2ind將RGB彩色圖像轉(zhuǎn)換成索引圖像imread讀取圖片文件中的圖像數(shù)據(jù)warp將圖像顯示到指定圖形的表面上A=imread('世界地圖.jpg');%讀入圖像subplot(2,2,1);xlabel('彩色圖像');imshow(A);%顯示圖像subplot(2,2,2);xlabel('灰度圖像');B=rgb2gray(A);%將圖像轉(zhuǎn)換成灰度圖像imshow(B);subplot(2,2,3);xlabel('黑白圖像');C=im2bw(B);%將圖像轉(zhuǎn)換成黑白圖像imshow(C);subplot(2,2,4);title('將圖像顯示到球面上');%默認顯示在圖像上方,需手工調(diào)整至下方[x,y,z]=sphere(50);warp(x,y,z,A);示例:運行結(jié)果如圖所示例7.1如圖所示,有一幅圖像,上面有一條由數(shù)據(jù)繪制而成的曲線,假設該數(shù)據(jù)已丟失,現(xiàn)在要通過圖像盡可能地恢復原始繪圖數(shù)據(jù).分析:基本思路是先將圖像轉(zhuǎn)換為黑白圖像并取反(白色為0,黑色為1),然后對圖像的每一列檢測是否有非0值,如果有則查找非0值的下標,其下標即是黑色像素的縱坐標.由于一列可能有多個黑色像素,如果有則取其縱坐標的平均值.為了盡量逼近原始數(shù)據(jù),在圖像上升期取縱坐標的最大值,在下降期取最小值.如果某列沒有黑色像素,則設置縱坐標為NaN.在處理結(jié)束后再對結(jié)果進行遍歷,如果有某一數(shù)值為NaN,但其兩邊的數(shù)值不為NaN,則取兩邊的數(shù)值的平均值作為該數(shù)值.最后再對數(shù)據(jù)進行標定.由于原始圖像沒有坐標系,無法獲知原始數(shù)據(jù)的實際大小,所以標定到[0,1].functiony=DataRestorFromImg(A)%從數(shù)據(jù)圖中恢復數(shù)據(jù)%A帶有數(shù)據(jù)變化曲線的圖像%y恢復的數(shù)據(jù)B=~im2bw(A);%轉(zhuǎn)換為黑白圖像,并取反[m,n]=size(B);y=zeros(n,1);forj=1:n

if(any(B(:,j)))%如果第j列存在非0值t=find(B(:,j));%查找非0值的下標y(j)=mean(t);%取平均值

%對尖點進行處理

if(j>1&&~isnan(y(j-1)))

if(y(j)>y(j-1))y(j)=max(t);%如果是上升期,則取最大值

elsey(j)=min(t);%如果是下降期,則取值小值

end

end

elsey(j)=nan;%如果第j列沒有非0值,則設為nan

endend%處理中斷點forj=2:n-1

if(isnan(y(j))&&~isnan(y(j-1))&&~isnan(y(j+1)))y(j)=(y(j-1)+y(j+1))/2;

endendy=1-y/m;%將數(shù)據(jù)標定到0~1endA=imread('數(shù)據(jù)圖像.jpg');%讀取圖像y=DataRestorFromImg(A);plot(y);在另一個m程序文件中輸入:顯示結(jié)果:7.2 灰度變換灰度變換是指將圖像的像素值r映射到像素值s的一種變換.用函數(shù)來表示就是S=T(r)稱T為灰度變換函數(shù).灰度變換的對像一般是灰度圖像,如果是彩色圖像,則可以針對每個分量定義一個變換函數(shù),然后分別進行變換.本節(jié)主要介紹8比特灰度圖像的灰度變換.

7.2.1 常用灰度變換1. 線性變換線性變換函數(shù)為s=kr+b其中,k和b是參數(shù),取值不同可得到不同效果.當k>1,b=0時,灰度拉伸,圖像變亮;當k<1,b=0時,灰度壓縮,圖像變暗;當k=1,b>0時,灰度整體平移向白色,圖像整體變得更亮;當k=1,b<0時,灰度整體平移向黑色,圖像整體變得更暗;當k=?1,b=255時,可實現(xiàn)圖像灰度反轉(zhuǎn)效果.:

A=imread('Lena.jpg');figure(1);subplot(1,2,1);xlabel('原圖');f=@(r)r;imshow(f(A));subplot(1,2,2);xlabel('$s=r$','Interpreter','latex');fplot(f,[0255]);axisequal;xlim([0255]);ylim([0255]);figure(2);subplot(1,2,1);xlabel('線性拉伸r');f=@(r)2*r;imshow(f(A));subplot(1,2,2);xlabel('$s=2r$','Interpreter','latex');fplot(f,[0255]);axisequal;xlim([0255]);ylim([0255]);figure(3);subplot(1,2,1);xlabel('線性壓縮');f=@(r)1/2*r;imshow(f(A));subplot(1,2,2);xlabel('$s=\frac{1}{2}r$','Interpreter','latex');fplot(f,[0255]);axisequal;xlim([0255]);ylim([0255]);figure(4);subplot(1,2,1);xlabel('反轉(zhuǎn)變換');f=@(r)255-r;imshow(f(A));subplot(1,2,2);xlabel('$s=255-r$','Interpreter','latex');fplot(f,[0255]);axisequal;xlim([0255]);ylim([0255]);

(a)恒等變換(b)線性拉伸(c)線性壓縮(d)反轉(zhuǎn)變換7.2.1 常用灰度變換

A=imread('Lena.jpg');figure(1);subplot(1,2,1);c=255/log(256);f=@(r)uint8(c*log(1+double(r)));imshow(f(A));xlabel('對數(shù)變換');subplot(1,2,2);fplot(f,[0255]);axisequal;xlim([0255]);ylim([0255]);xlabel('$s=c\log(1+r)$','Interpreter','latex');figure(2);subplot(1,2,1);c=255/log(256);f=@(r)uint8(exp(double(r)/c)-1);imshow(f(A));xlabel('指數(shù)變換');subplot(1,2,2);fplot(f,[0255]);axisequal;xlim([0255]);ylim([0255]);xlabel('$s=\exp(\frac{1}{c}r)-1$','Interpreter','latex');(a)對數(shù)變換效果(b)指數(shù)變換效果7.2.1 常用灰度變換3. 冪律變換冪律變換也稱伽馬變換,其變換函數(shù)為s=c

rα其中,c和α是參數(shù),取值不同可得到不同效果.若要使得當r=255時,s=255,可取c=2551?α.當α<1時,拉伸較暗的灰度,壓縮較亮的灰度,圖像整體灰度較為平均.當α>1時,壓縮較暗的灰度,拉伸較亮的灰度,圖像暗的區(qū)域更暗,亮的區(qū)域更亮,增強圖像的對比度.

A=imread('Lena.jpg');figure(1);subplot(1,2,1);alpha=1/2;f=@(r)uint8(255.^(1-alpha).*(double(r)).^alpha);imshow(f(A));subplot(1,2,2);fplot(f,[0255]);axisequal;xlim([0255]);ylim([0255]);xlabel('$s=\sqrt{255}r^{1/2}$','Interpreter','latex');figure(2);subplot(1,2,1);alpha=2;f=@(r)uint8(255.^(1-alpha).*(double(r)).^alpha);imshow(f(A));subplot(1,2,2);fplot(f,[0255]);axisequal;xlim([0255]);ylim([0255]);xlabel('$s=\frac{1}{255}r^2$','Interpreter','latex');

(b)當α=2時的效果7.2.2 自定義變換

A=imread('Lena.jpg');figure(1);subplot(1,2,1);x=[0100150255];y=[060180255];%構(gòu)造分段線性函數(shù)f=@(r)(x(1)<=r&r<x(2)).*((y(2)-y(1))./(x(2)-x(1)).*(r-x(1))+y(1))+(x(2)<=r&r<x(3)).*

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論