第8章MATLAB在圖像處理中的應用_第1頁
第8章MATLAB在圖像處理中的應用_第2頁
第8章MATLAB在圖像處理中的應用_第3頁
第8章MATLAB在圖像處理中的應用_第4頁
第8章MATLAB在圖像處理中的應用_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第8章章 MATLAB在圖像處在圖像處 理中的應用理中的應用n8.1 讀取和顯示圖像讀取和顯示圖像n8.2 圖像的直方圖均衡圖像的直方圖均衡n8.3 灰度拉伸灰度拉伸n8.4 圖像濾波圖像濾波n8.5 閾值分割與二值化閾值分割與二值化n8.6 形態(tài)學算子形態(tài)學算子n8.7 圖像變換圖像變換n8.8 本章小結本章小結n8.1 讀取和顯示圖像讀取和顯示圖像n8.2 圖像的直方圖均衡圖像的直方圖均衡n8.3 灰度拉伸灰度拉伸n8.4 圖像濾波圖像濾波n8.5 閾值分割與二值化閾值分割與二值化n8.6 形態(tài)學算子形態(tài)學算子n8.7 圖像變換圖像變換n8.8 本章小結本章小結n8.1.1 讀取圖片 在

2、MATLAB中常用四種圖像類型,分別是RGB真彩色圖像、索引圖像、灰度圖像和二值圖像,它們各有各的優(yōu)勢,且可以相互轉換。1RGB真彩色圖像 在 R G B 真 彩 色 圖 像 中 , R ( R e d ) 、 G(Green)、B(Black)三個分量表示一個像素的顏色。在MATLAB中,RGB真彩色圖像可以用雙精度存儲,亮度范圍為0 1,0 0 0表示黑色,1 1 1表示白色。此外,RGB真彩色圖像還可以用無符號整型存儲,一般常用8bit表示,亮度范圍為0 255,0 0 0表示黑色,255 255 255表示白色。兩者之間可以相互轉換。n例 現(xiàn)在有一個大小為2562563以無符號整型存儲

3、的RBG圖像I,其中R、G、B的值全為1,將其變成雙精度型I1,然后再變回無符號型I2。n代碼如下: I = ones(256, 256, 3); I1 = double(I) / 255; I2 = uint8( round( I1 * 255 ) ); I(2, 3) I1(2, 3) I2(2, 3)2索引圖像 索引圖像包括兩部分,即圖像數(shù)據(jù)矩陣和調色板。調色板是一個有3列和若干行的色彩映象矩陣,矩陣每行代表一種顏色,3列分別代表紅、綠、藍色強度的雙精度數(shù)。MATLAB中調色板色彩強度范圍為0 1,其中0代表最暗,1代表最亮。n例 讀取和顯示索引圖像,程序如下:nX map = imre

4、ad(spine.tif); figure; imshow(X) colormap(map)3灰度圖像 灰度圖像是圖像處理中非常常用的一類圖像,在MATLAB中,一般采用矩陣存儲灰度圖像,如果數(shù)據(jù)類型為double,則取值范圍為0, 1,其中0代表黑色,1代表白色。灰度圖像一般也采用imshow()函數(shù)進行顯示。n例 在程序中建立256256的灰度圖像,并將其轉換為8位無符號整型,然后顯示圖像。nclear I = zeros(256, 256); for i=1:256 I(1:256, i) = i / 255; % 像素賦值 end figure imshow(I)4二值圖像 在MATL

5、AB中,對于二值圖像,采用邏輯類型進行存儲,每個像素只有兩個灰度值,0和1,其中0代表黑色,1代表白色。一般可以使用logical()函數(shù)將雙精度類型轉換為邏輯型矩陣。n例 在程序中建立256256的二值圖像,其中上半部分是白色,下半部分是黑色,然后顯示圖像。nclear I = zeros(256, 256); I(1:128, :) = 1; % 像素賦值 I(129:256, :) = 0; % 像素賦值 figure imshow(I)n在MATLAB中利用imread()函數(shù)讀取圖片,然后利用imshow()函數(shù)顯示圖像。該函數(shù)常用的調用格式為:(1)A = imread(filen

6、ame, fmt):讀取文件名filename而擴展名為fmt的圖片,并保存在數(shù)組A中,注意如果圖片沒有在MATLAB可讀取的路徑內,filename應該為全路徑+圖片的名稱。(2)X, map = imread(filename, fmt):讀取文件名filename而擴展名為fmt的圖片,并保存在數(shù)組X中,并將其圖像調色板的索引保存到map中。(3). = imread(filename):自動讀取文件名filename的圖片。(4). = imread(URL,.):讀取網(wǎng)址為URl的網(wǎng)絡圖片。n例 設在D盤中有一副圖片,其名稱為hbu.jpg,則利用imread()函數(shù)讀取該圖片。nc

7、lear A = imread(D:hbu.jpg, jpg); size(A) imshow(A)n例 將上例中的圖像轉換為灰度圖像進行顯示。nclear A = imread(D:hbu.jpg, jpg); I = rgb2gray(A); size(I) imshow(I)n8.1.2 顯示圖片 在8.1.1節(jié)中們已經講述了最常見的圖像顯示函數(shù)imshow()函數(shù),下面對其進行詳細的解釋。該函數(shù)常用的調用格式為:(1)imshow(I):顯示矩陣I代表的圖像,I可以是灰度圖像也可是彩色圖像。(2)imshow(I, map):顯示矩陣I代表的圖像,I為索引圖像,調色板為map。(3)i

8、mshow(I,low,high):其中,low和high分別為數(shù)據(jù)數(shù)組的最小值和最大值,由于MATLAB自動對灰度圖像進行標度以適合調色板的范圍,因而可以使用自定義大小的調色板。(4)imshow(I, ):low為I中最小的值,high為I中最大的值。n例 利用Maltab中子帶的cameraman.tif圖像進行圖像顯示。nI = imread(cameraman.tif); subplot(1,2,1) imshow(I) subplot(1,2,2) imshow(I, 32 128)n8.1 讀取和顯示圖像讀取和顯示圖像n8.2 圖像的直方圖均衡圖像的直方圖均衡n8.3 灰度拉伸灰

9、度拉伸n8.4 圖像濾波圖像濾波n8.5 閾值分割與二值化閾值分割與二值化n8.6 形態(tài)學算子形態(tài)學算子n8.7 圖像變換圖像變換n8.8 本章小結本章小結n8.2.1 直方圖 圖像的灰度直方圖是圖像灰度級的函數(shù),它描述了圖像中每個灰度級所包含的像素的個數(shù)(也就是說每個灰度級出現(xiàn)的的頻率分布)。在Matlab中繪制直方圖的函數(shù)是hist,其使用用方法為hist(y, x)。hist()函數(shù)的調用格式如下:(1)N = hist(Y):該調用格式將向量Y中的元素平均分配到十個容器中,并且這十個容器的大小一樣。N表示每個容器中所包含的元素的個數(shù)是多少。對于Y為矩陣的情況,該調用格式將對矩陣進行逐列

10、操作。(2)N = hist(Y,M):該調用格式將向量Y的元素平均分到M個容器中,且這M個容器的大小一致。N表示每個容器所包含的元素的個數(shù)是多少。對于Y為矩陣的情況,該調用格式也對矩陣進行逐列操作。(3)N = hist(Y,X):該調用格式中X是向量,該調用格式在劃分容器的時候,容器的中心為向量X中的元素,從而執(zhí)行該調用命令可獲得Y在這些容器中的分布情況。n例 Y = 1:10,利用hist(Y)計算其直方圖。MATLAB代碼如下:nY = 1:10; hist(Y) h = findobj(gca,Type,patch); set(h,FaceColor,1 0.76 0.05,Edge

11、Color,w);1234567891000.10.20.30.40.50.60.70.80.91n8.2.2 直方圖均衡 圖像經過均衡化處理以后,圖像的直方圖的波峰和波谷都被拉直了,這樣整個圖像的直方圖就變得比較平滑平直,即各灰度級擁有的頻數(shù)大致相同,這樣灰度級就具有均勻的概率分布,圖像看起來就更清晰。 在MATLAB中,使用histeq()函數(shù)進行直方圖均衡化,其調用格式如下:(1)J = histeq(I,hgram):將原始圖像I的直方圖變成用戶指定的向量hgram。hgram中的各元素的值域為0,1;(2)J = histeq(I,n):指定直方圖均衡后的灰度級數(shù)n,默認值為64;(

12、3)J,T = histeq(I,.):返回從能將圖像I的灰度直方圖變換成圖像J的直方圖變換T。(4)newmap = histeq(X,map,hgram)、newmap = histeq(X,map)、newmap,T = histeq(X,.) 這三個是針對索引圖像調色板的直方圖均衡化,用法和灰度圖像的一樣。n例 對MATLAB自帶的圖像tire進行直方圖均衡化。MATLAB代碼如下:I = imread(tire.tif);J = histeq(I);imshow(I)figureimshow(J)n運行結果如下: (a) (b)其中(a)為原始圖像,(b)為直方圖均衡化以后的圖像,可

13、以看到圖像的灰度更均勻了。再計算圖(a)和(b)的直方圖分布情況,代碼如下:I = imread(tire.tif);J = histeq(I);hist(double(I(:),256);figurehist(double(J(:),256);結果如圖:0501001502002503000500100015002000250005010015020025030005001000150020002500 (c) (d) 其中(c)和(d)分別是原始圖像和均衡化后的直方圖,對比圖(c)與(d)可知直方圖均衡化實質上是減少圖像的灰度級以換取對比度的加大。n8.1 讀取和顯示圖像讀取和顯示圖像n8

14、.2 圖像的直方圖均衡圖像的直方圖均衡n8.3 灰度拉伸灰度拉伸n8.4 圖像濾波圖像濾波n8.5 閾值分割與二值化閾值分割與二值化n8.6 形態(tài)學算子形態(tài)學算子n8.7 圖像變換圖像變換n8.8 本章小結本章小結n1線性變換 在數(shù)字圖像處理中,線性變換使曝光不充分圖像中黑的更黑,白得更白,從而提高圖像對比度,其公式如下:g(x,y)=(d-c)/(b-a)f(x,y)-a+c其中f(x,y)表示線性變換前的原始圖像,而g(x,y)表示線性變換后的圖像,a、b、c和d都表示線性變換的系數(shù)。n2分段線性變換 在數(shù)字圖像處理中,非線性變換往往可以有效的提高圖像的局部對比度白,從而有效的增強圖像的局

15、部細節(jié),其公式如下: g(x,y)=c/df(x,y) 0=f(x,y)=a g(x,y)= (d-c)/(b-a)f(x,y)-a+c a=f(x,y)=bg(x,y)= (f-b)/(e-a)f(x,y)-b+d b=f(x,y)=c其中f(x,y)表示分段線性變換前的原始圖像,而g(x,y)表示分段線性變換后的圖像,a、b、c、d、e和f都表示分段線性變換的系數(shù)。n3非線性變換 在數(shù)字圖像處理中,線性變換往往不能滿足所有的圖像增強,從而非線性變換被用于圖像增強中,這里主要使用的對數(shù)變換和指數(shù)變換,其公式如下:g(x,y)=a+lnf(x,y)+1/b*lnc g(x,y)= c + ex

16、p(f(x,y)其中f(x,y)表示線性變換前的原始圖像,而g(x,y)表示非線性變換后的圖像,a、b、c都表示非線性變換的系數(shù)。n在MATLAB中imadjust函數(shù)用于進行圖像的灰度變換,以調節(jié)灰度圖像的亮度或彩色圖像的顏色矩陣。其調用格式如下:(1)J = imadjust(I):將灰度圖像I中像素的亮度值映射到圖像J中,以致1%的圖像數(shù)據(jù)在最低和最高強度間達到飽和。此函數(shù)的功能是增大圖像J的對比度,便于后續(xù)的圖像處理。具體用法同imadjust(I,stretchlim(I);(2)J = imadjust(I,low_in; high_in,low_out; high_out):將灰

17、度圖像I中像素的亮度值映射到圖像J中。也就是,將圖像I中l(wèi)ow_in到high_in間的亮度值映射到low_out到high_out間,并將low_in 以下的值設定為下邊界low_out而high_in 以上的值設定為上邊界high_out,最后得到圖像J。low_in; high_in和low_out; high_out都可以取值為空矩陣,則默認值為0,1;(3)J = imadjust(I,low_in; high_in,low_out; high_out,gamma):將灰度圖像I中像素的亮度值映射到圖像J中。其中,通過gamma的值來確定I和J的關系的曲線形狀。如果gamma的值越大

18、,則輸出圖像J的像素值相應成比例地越小,圖像越灰暗;如果省略參數(shù)gamma,則默認為圖像J和I間為線性映射。(4)newmap = imadjust(map,low_in; high_in,low_out; high_out,gamma):調整索引色圖像的調色板map。如果low_in,high_in,low_out, high_out和gamma都是標量,則將圖像中的r,g和b分量同時做出以上映射。對于每一個顏色分量,都有唯一的映射與之相對應。當low_in和high_in,或者low_out和high_out,或者gamma,三者只要有其一是1*3向量時,調整后的顏色矩陣newmap與ma

19、p的大小相同。(5)GB2 = imadjust(RGB1,.):對彩色圖像RGB1的三基色(紅、綠和藍)分別調整。當顏色矩陣變化時,每個調色板都有唯一的映射值與之對應。n例 對MATLAB自帶的圖像football進行灰度拉伸。nRGB1 = imread(football.jpg); RGB2 = imadjust(RGB1,.2 .3 0; .6 .7 1,); imshow(RGB1), figure imshow(RGB2)運行結果: 原圖結果圖n8.1 讀取和顯示圖像讀取和顯示圖像n8.2 圖像的直方圖均衡圖像的直方圖均衡n8.3 灰度拉伸灰度拉伸n8.4 圖像濾波圖像濾波n8.5

20、 閾值分割與二值化閾值分割與二值化n8.6 形態(tài)學算子形態(tài)學算子n8.7 圖像變換圖像變換n8.8 本章小結本章小結n8.4.1 均值濾波 均值濾波屬于線性濾波的一種,主要是通過像素點和其周圍領域像素點簡單的線性運算實現(xiàn)濾波的。在MATLAB中實現(xiàn)圖像的均值濾波主要通過使用imfilter函數(shù)和fspecial相結合的方式進行濾波。1.imfilter函數(shù)調用格式:(1)B = imfilter(A, H):利用濾波器系數(shù)為H的濾波器對A進行濾波。(2)g = imfilter(f, w, filtering_mode, boundary_options, size_options):其中,f

21、為輸入圖 像 , w 為 濾 波 掩 模 , g 為 濾 波 后 圖 像 。filtering_mode用于指定在濾波過程中是使用“相關”還是“卷積”。boundary_options用于處理邊界充零問題,邊界的大小由濾波器的大小確定。options具體參數(shù)選項描述filtering_modecorr通過使用相關運算來完成濾波,該值為默認。 conv通過使用卷積運算來完成濾波boundary_optionsX輸入圖像的邊界通過用值X(無引號)來填充擴展其默認值為0 replicate圖像大小通過復制外邊界的值來擴展 symmetric圖像大小通過鏡像反射其邊界來擴展 circular圖像大小通

22、過將圖像看成是一個二維周期函數(shù)的一個周期來擴展size_optionsfull輸出圖像的大小與被擴展圖像的大小相同 same輸出圖像的大小與輸入圖像的大小相同。這可通過將濾波掩模的中心點的偏移限制到原圖像中包含的點來實現(xiàn),該值為默認值。2.fspecial函數(shù)用于建立預定義的濾波算子,其調用格式如下:(1)h = fspecial(type) :利用type建立預定義的濾波算子;(2)h = fspecial(type,para):利用type和para建立預定義的濾波算子。其中type指定算子的類型,para指定相應的參數(shù)。type具體類型如下:選項描述average為均值濾波,參數(shù)為hsi

23、ze代表模板尺寸,默認值為3,3disk為圓形區(qū)域均值濾波,參數(shù)為radius代表區(qū)域半徑,默認值為5gaussian為高斯低通濾波,有兩個參數(shù),hsize表示模板尺寸,默認值為3 3,sigma為濾波器的標準值,單位為像素,默認值為0.5laplacian為拉普拉斯算子,參數(shù)alpha用于控制算子形狀,取值范圍為0,1,默認值為0.2log為拉普拉斯高斯算子,有兩個參數(shù),hsize表示模板尺寸,默認值為3 3,sigma為濾波器的標準差,單位為像素,默認值為0.5motion為運動模糊算子,有兩個參數(shù),表示攝像物體逆時針方向以theta角度運動了len個像素,len的默認值為9,theta的

24、默認值為0prewitt用于邊緣增強,大小為3 3,無參數(shù)sobel用于邊緣提取,無參數(shù)unsharp為對比度增強濾波器。參數(shù)alpha用于控制濾波器的形狀,范圍為0,1,默認值為0.2n例 對MATLAB自帶的圖像football進行窗口為3*3的均值濾波。img = imread(football.jpg);% 產生均值濾波算子 H = fspecial(average,3 3)% 產生均值濾波算子 imgAvg = imfilter(img,H);% 查看原始圖像figureimshow(img, )% 查看濾波后圖像figureimshow(imgAvg, ) 原圖 濾波后圖像n8.4

25、.2 中值濾波 利用中值濾波,不但可以濾出掉那些孤立的噪聲點,而且還可以很好地保持圖像的細節(jié)特征與邊緣特性,更不會使去噪后的圖像產生明顯的模糊現(xiàn)象。中值濾波的步驟為:(1)將濾波模板(即一定大小的滑動窗口)的中心與待處理圖像中某個位置的像素點重合;(2)讀取模板中各個不同位置的像素的灰度值;(3)讀取后的灰度值按升序或降序順序排列;(4)在已排序好的序列中,取其中間的數(shù)值即是模板現(xiàn)在所在位置的中心像素值。(5)重復步驟以上步驟,直到模板的中心位置遍歷完待測圖像的每個像素點。n在MATLAB中中值濾波有固定的調用函數(shù)medfilt2,其調用格式為:(1)h = medfilt2 (I) :利用3

26、*3的窗口對圖像I進行中值濾波;(2)h = medfilt2 (I,M N):利用M*N的窗口對圖像I進行中值濾波。n例 對MATLAB自帶的圖像football進行中值檢測,窗口大小為5*5。img = imread(football.jpg);I = rgb2gray(img); % 加脈沖噪聲I1 = imnoise(I, salt & pepper); % 中值濾波 imgMed = medfilt2 (I1, 5 5);% 查看原始圖像figureimshow(I, )% 查看噪聲圖像figureimshow(I1, )% 查看濾波后圖像figureimshow(imgMe

27、d, )原始圖像噪聲圖像濾波后圖像n8.1 讀取和顯示圖像讀取和顯示圖像n8.2 圖像的直方圖均衡圖像的直方圖均衡n8.3 灰度拉伸灰度拉伸n8.4 圖像濾波圖像濾波n8.5 閾值分割與二值化閾值分割與二值化n8.6 形態(tài)學算子形態(tài)學算子n8.7 圖像變換圖像變換n8.8 本章小結本章小結 圖像閾值分割是一種被廣泛應用的分割技術,它利用圖像中待提取目標與其背景在灰度特性上的差異,將圖像看作是不同灰度級的兩種區(qū)域(目標和背景)的組合,然后據(jù)此設計一個適當?shù)拈撝祵D像中的每個像素點判別為目標或者背景,最后得到對應的二值圖像。 在MATLAB中,graythresh函數(shù)使用最大類間方差法找到圖片的一

28、個合適的閾值,然后im2bw函數(shù)進行圖像的二值化。n例 對MATLAB自帶的圖像coins進行OSTU閾值分割和二值化。MATLAB代碼如下:I = imread(coins.png);% OSTU閾值分割% 求取分割閾值level = graythresh(I);% 進行圖像分割和二值化BW = im2bw(I,level);% 查看原始圖像figureimshow(I, )% 查看二值化圖像figure, imshow(BW,) 原始圖像 二值化后圖像n8.1 讀取和顯示圖像讀取和顯示圖像n8.2 圖像的直方圖均衡圖像的直方圖均衡n8.3 灰度拉伸灰度拉伸n8.4 圖像濾波圖像濾波n8.5

29、 閾值分割與二值化閾值分割與二值化n8.6 形態(tài)學算子形態(tài)學算子n8.7 圖像變換圖像變換n8.8 本章小結本章小結 數(shù)學形態(tài)學是以形態(tài)結構元素為基礎對圖像進行分析的數(shù)學工具。它的基本思想是用具有一定形態(tài)的結構元素去度量和提取圖像中的對應形狀以達到對圖像分析和識別的目的。數(shù)學形態(tài)學的應用可以簡化圖像數(shù)據(jù),保持它們基本的形狀特征,并除去不相干的結構。1strel函數(shù) 該函數(shù)能夠生成膨脹腐蝕及開閉運算等操作的結構元素對象,其調用格式如下:(1)SE = strel(shape,parameters) :創(chuàng)建由shape指定形狀的結構元素。其中,參數(shù)parameters用來控制SE的大小。通常,sh

30、ape的類型有arbitrary 、pair 、diamond 、periodicline、 disk 、rectangle、 line 、square、 octagon 等;(2)SE = strel(arbitrary, NHOOD):創(chuàng)建一個任意形狀的結構元素。其中,NHOOD是只包含元素0和1的矩陣,可以用se=strel(NHOOD)簡化來指定形狀;(3)SE = strel(arbitrary, NHOOD, HEIGHT):HEIGHT是一個與NHOOD同大小的矩陣,包含于相關的NHOOD中非零元素的高度值;(4)SE = strel(ball, R, H, N):創(chuàng)建一個橢球形

31、的結構元素。其中,R為平面X-Y內的半徑,H為高度。當N大于0時,橢球是利用N不平坦的線狀結構來進行逼近的。當N等于0時,它沒有逼近;(5)SE = strel(diamond, R):創(chuàng)建一個平坦的菱形結構元素。其中,R是結構元素中從原點到菱形最遠的距離;(6)SE = strel(disk, R, N):創(chuàng)建一個平坦的圓形結構元素,其中,R為半徑。N必須是固定值0,4,6或8.當N大于0時,圓形結構元素被N個周期線性結構元素序列近似逼近;當N等于0時,沒有逼近,結構元素包含所有的小于從原點到R的像素。(7)SE = strel(line, LEN, DEG):創(chuàng)建一個平坦的線性結構。其中,

32、LEN為線的長度,DEG為角度;(8)SE = strel(octagon, R):創(chuàng)建一個平坦的八邊形結構。其中,沿水平軸和垂直軸度量,R是從結構元素的原點到八邊形的距離,且R必須是3的非付倍數(shù);(9)SE = strel(pair, OFFSET):創(chuàng)建一個包含兩個成員的平坦結構元素。其中,一個成員在原點,一個成員由向量OFFSET表示,且該向量必須是一個兩元素的整數(shù)向量;(10)SE = strel(periodicline, P, V):創(chuàng)建一個包含有2*P+1個成員的平坦元素。其中,V是一個兩元素向量,它包含有整數(shù)值得行和列的轉移,一個元素在原點,另一個元素位于1*V, -1*V,

33、2*V, -2*V, ., P*V, -P*V處;(11)SE = strel(rectangle, MN):創(chuàng)建一個平坦的矩陣結構。其中,由MN指定矩形的大??;(12)SE = strel(square, N):創(chuàng)建一個方形的結構元素。其中,N表示邊長包含的像素數(shù)。n例 利用strel生成一個半徑為5的圓盤結構。MATLAB代碼如下:nse = strel(disk,5,0)se = 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1

34、 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 02imdilate函數(shù) 該函數(shù)能夠實現(xiàn)二值圖像的膨脹操作,其調用格式如下:(1)BW2=imdilate(BW1,SE):使用二值結構要素矩陣SE隊圖像數(shù)據(jù)矩陣BW1執(zhí)行膨脹操作,輸入圖像BW1的類型為double或unit8,輸出圖像BW2的類型為unit8;(2)BW2=imdilate(BW1,SE,n):使用二值結構要

35、素矩陣SE隊圖像數(shù)據(jù)矩陣BW1執(zhí)行n次膨脹操作。n例 對8.5節(jié)中例題二值化后的圖像進行膨脹操作。MATLAB代碼如下:I = imread(coins.png);% OSTU閾值分割% 求取分割閾值level = graythresh(I);% 進行圖像分割和二值化BW = im2bw(I, level);% 生產形態(tài)學結構se = strel(rectangle,3 5);%結構元素 % 形態(tài)學膨脹imgDil = imdilate(BW,se,same); %dilate% 查看原始圖像figureimshow(I, )% 查看二值化圖像figure, imshow(BW,)% 查看形態(tài)

36、學膨脹圖像figure, imshow(imgDil,)二值化圖像形態(tài)學膨脹圖像3imerode 函數(shù) 該函數(shù)能夠實現(xiàn)二值圖像的腐蝕操作,其調用格式如下:(1)BW2 = imerode(BW1,SE):使用二值結構要素矩陣SE隊圖像數(shù)據(jù)矩陣BW1執(zhí)行腐蝕操作。輸入圖像BW1的類型為double或unit8,輸出圖像BW2的類型為unit8;(2)BW2 = imerode(BW1,SE,n):使用二值結構要素矩陣SE隊圖像數(shù)據(jù)矩陣BW1執(zhí)行n次腐蝕操作。n例 對8.5節(jié)中例題二值化后的圖像進行腐蝕操作。MATLAB代碼如下:I = imread(coins.png);% OSTU閾值分割%

37、求取分割閾值level = graythresh(I);% 進行圖像分割和二值化BW = im2bw(I,level);% 生產形態(tài)學結構se = strel(rectangle,3 5);%結構元素 % 形態(tài)學腐蝕imgEro = imerode (BW,se,same); % 查看原始圖像figureimshow(I, )% 查看二值化圖像figure, imshow(BW,)% 查看形態(tài)學腐蝕圖像figure, imshow(imgEro,)二值化圖像形態(tài)學腐蝕圖像4bwmorph函數(shù) 該函數(shù)的功能是能實現(xiàn)二值圖像形態(tài)學運算,格式如下:(1)BW2=bwmorph(BW1,operati

38、on):可對二值圖像BW1采用指定的形態(tài)學運算;(2)BW2=bwmorph(BW1,operation,n):可對二值圖像BW1采用指定的形態(tài)學運算n次。operation為表8.3所示的字符串之一。OperationDescriptionbothat是形態(tài)學上的“底帽”變換操作,返回的圖像是原圖減去形態(tài)學閉操作處理后的圖像(閉操作:先膨脹再腐蝕)bridge連接斷開的像素。也就是將0值像素置1如果他有兩個非零的不相連(8鄰域)的像素clean移除孤立的像素(被0包圍的1)close執(zhí)行形態(tài)學閉操作(先膨脹后腐蝕)diag利用對角線填充來消除背景中的8連通區(qū)域dilate利用結構ones(3

39、)執(zhí)行膨脹操作erode利用結構ones(3)執(zhí)行腐蝕操作fill填充孤立的內部像素(被1包圍的0)hbreak移除H連通的像素majority將某一像素置1如果該像素的33鄰域中至少有5個像素為1;否則將該像素置0open執(zhí)行形態(tài)學開操作(先腐蝕后膨脹)remove移除內部像素。該選項將一像素置0如果該像素的4連通鄰域都為1,僅留下邊緣像素shrinkn = Inf時,將目標縮成一個點。沒有孔洞的目標縮成一個點,有孔洞的目標縮成一個連通環(huán)skeln = Inf時,移除目標邊界像素,但是不允許目標分隔開,保留下來的像素組合成圖像的骨架spur移除刺激(孤立)像素thickenn = Inf時,

40、通過在目標外部增加像素加厚目標直到這樣做最終使先前未連接目標成為8連通域thinn = Inf時,減薄目標成線。沒有孔洞的目標縮成最低限度的連通邊;有孔洞的目標縮成連通環(huán)tophat執(zhí)行形態(tài)學“頂帽”變換操作,返回的圖像是原圖減去形態(tài)學開操作處理之后的圖像(開操作:先腐蝕再膨脹)n例 對8.5節(jié)中例題二值化后的圖像進行tophat操作,MATLAB代碼如下:I = imread(coins.png);% OSTU閾值分割% 求取分割閾值level = graythresh(I);% 進行圖像分割和二值化BW = im2bw(I,level);% tophat變換imgTop = bwmorph

41、(BW,tophat); % 查看原始圖像figureimshow(I, )% 查看二值化圖像figure, imshow(BW, )% 查看 tophat變換圖像figure, imshow(imgTop, )二值化圖像 tophat變換圖像5imclose函數(shù) 該函數(shù)功能是對灰度圖像執(zhí)行形態(tài)學閉運算,即使用同樣的結構元素先對圖像進行膨脹操作后進行腐蝕操作。調用格式為:IM2=imclose(IM,SE)n例 對8.5節(jié)中例題二值化后的圖像進行形態(tài)學閉運算,MATLAB代碼如下:I = imread(coins.png);% OSTU閾值分割% 求取分割閾值level = graythres

42、h(I);% 進行圖像分割和二值化BW = im2bw(I,level);% 生產形態(tài)學結構se = strel(rectangle,3 5);%結構元素 % 形態(tài)學閉運算imgClo = imclose (BW, se); % 查看原始圖像figureimshow(I, )% 查看二值化圖像figure, imshow(BW, )% 查看形態(tài)學閉運算結果 figure, imshow(imgClo, )二值化圖像 形態(tài)學閉運算后圖像6imopen函數(shù) 該函數(shù)功能是對灰度圖像執(zhí)行形態(tài)學開運算,即使用同樣的結構元素先對圖像進行腐蝕操作后進行膨脹操作。調用格式為: IM2=imopen(IM,SE

43、)n例 對8.5節(jié)中例題二值化后的圖像進行形態(tài)學開運算,MATLAB代碼如下:I = imread(coins.png);% OSTU閾值分割% 求取分割閾值level = graythresh(I);% 進行圖像分割和二值化BW = im2bw(I,level);% 生產形態(tài)學結構se = strel(rectangle,3 5);%結構元素 % 形態(tài)學開運算imgOpe = imopen (BW, se); % 查看原始圖像figureimshow(I, )% 查看二值化圖像figure, imshow(BW, )% 查看形態(tài)學開運算結果 figure, imshow(imgOpe, )二

44、值化圖像 形態(tài)學開運算后圖像n8.1 讀取和顯示圖像讀取和顯示圖像n8.2 圖像的直方圖均衡圖像的直方圖均衡n8.3 灰度拉伸灰度拉伸n8.4 圖像濾波圖像濾波n8.5 閾值分割與二值化閾值分割與二值化n8.6 形態(tài)學算子形態(tài)學算子n8.7 圖像變換圖像變換n8.8 本章小結本章小結n1快速傅里葉變換 在MATLAB圖像處理工具箱中,對圖像進行二維的傅里葉變換的函數(shù)為fft2(),其調用格式如下:(1)Y = fft2(X):對矩陣X進行快速傅里葉變換,返回變換后傅里葉系數(shù)Y。通常,X為二維數(shù)據(jù)(一般為灰度圖像),Y與X的維數(shù)相同,且Y包含復數(shù)。(2)Y = fft2(X, m, n):對矩陣X進行快速傅里葉變換,m和n表示返回的傅里葉系數(shù)矩陣Y的大小,如果m和n超過了數(shù)據(jù)矩陣X的大小,則返回的Y矩陣在超出X的維數(shù)部分補零。通常,X為二維數(shù)據(jù)(一般為灰度圖像)。 在MATLAB圖像處理工具箱中,對圖像進行二維的逆傅里葉變換的函數(shù)為ifft2(),其調用格式如下:(1)Y = ifft2(X):對矩陣X進行逆傅里葉變換,返回變換后二維矩陣Y。通常,X為二維數(shù)據(jù),且包含復數(shù),Y與X的維數(shù)相同。(2)Y = ifft2(X, m, n):對矩陣X進行逆快速傅里葉變換,m和n表示返回的二維矩陣Y的大小。通常,X為二維數(shù)據(jù)。 通常利用函數(shù)fftshift(

溫馨提示

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

評論

0/150

提交評論