




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
10.1數字圖像的數學描述
10.2圖像變換
10.3模板運算與圖像濾波
10.4邊緣檢測
10.5對象提取
第10單元MATLAB圖像處理
10.1.1圖像坐標系和像素坐標
圖像坐標系和像素坐標如圖10-1所示。10.1數字圖像的數學描述圖10-1圖像坐標系和像素坐標10.1.2圖像的數學表達
RGB模型中,彩色圖像采用三維陣列表示,它由下面的三個二維陣列構成:
,,
彩色圖像中的像素用向量表示:10.1.3圖像讀取、顯示、存盤的MATLAB編程
采用imread讀圖像函數、imshow顯圖像函數和imwrite寫圖像函數編程。程序如下:
char1='D:\MyDocuments\'; %指定圖像文件存放的路徑
char2='Autumn'; %指定欲存取圖像文件的名稱
char3='Tulips'; %指定另一個欲存取圖像文件的名稱
char4='.jpg'; %指定欲存取圖像文件的擴展名
xx=imread([char1char2char4]);%按指定全路徑讀取圖像并賦值給變量xx
yy=imread([char1char3char4]);%按指定全路徑讀取圖像并賦值給變量yy
figure,imshow(xx); %將矩陣xx顯示為屏幕圖像
figure,imshow(yy); %將矩陣yy顯示為屏幕圖像
imwrite(xx,[char1,'Autumn1',char4],'jpeg'); %將矩陣xx按指定全路徑和格式存盤
imwrite(yy,[char1,'Tulips1',char4],'jpeg'); %將矩陣yy按指定全路徑和格式存盤10.2.1彩色圖像變換為灰度圖像
圖像中的色彩數據,對某些研究問題而言是冗余信息,往往需要將彩色圖像變換成灰度圖像。灰度圖像可用灰度矩陣GR表征:10.2圖像變換
采用rgb2gray函數編程將彩色圖像變換為灰度圖像。程序如下:
char1='D:\MyDocuments\'; %指定圖像文件讀取的路徑
char2='Autumn'; %指定欲讀圖像文件的名稱
char3='Tulips'; %指定另一個欲讀圖像文件的名稱
char4='.jpg'; %指定欲讀圖像文件的擴展名
xx=imread([char1char2char4]); %按指定全路徑讀取圖像文件并賦值給變量xx
yy=imread([char1char3char4]); %按指定全路徑讀取圖像文件并賦值給變量yy
gray_xx=rgb2gray(xx); %將彩色圖像xx變為灰度圖像gray_xx
gray_yy=rgb2gray(yy); %將彩色圖像yy變為灰度圖像gray_yy
figure,imshow(gray_xx); %將矩陣gray_xx顯示為屏幕圖像
figure,imshow(gray_yy); %將矩陣gray_yy顯示為屏幕圖像
程序執行的結果如圖10-2所示。(a)圖像1(b)圖像2圖10-2彩色圖像變換為灰度圖像10.2.2彩色或灰度圖像變換為二值圖像
采用Otsu‘s方法計算閾值T,灰度大于T的像素群取值1,小于T的像素群取值0,灰度圖變換成二值圖,它把圖像化分成了僅留欲處理對象和黑色背景的兩個區域,使對象從背景中凸顯出來。二值化圖像可用二值矩陣BW表征,其元素值符合下面關系:這一處理過程的關鍵是閾值的選擇,采用Otsu‘s閾值進行二值化處理,對原本具有二值傾向的圖像,能使圖像中的對象特征突出,保留較多的有用信息,便于后續的特征量提取,而對于二值傾向較弱的圖像,亦傾向于保留盡可能多的有用信息。
采用im2bw函數編程將彩色圖像變換為二值圖像。程序如下:
char1='D:\MyDocuments\'; %指定圖像文件讀取的路徑
char2='Autumn'; %指定圖像文件的名稱
char3='Tulips'; %指定另一個圖像文件的名稱
char4='.jpg'; %指定圖像文件的擴展名
xx=imread([char1char2char4]); %按指定全路徑讀取圖像文件并賦值給變量xx
yy=imread([char1char3char4]); %按指定全路徑讀取圖像文件并賦值給變量yy
binary_xx=im2bw(xx,0.35);%將彩色圖像xx變為二值圖像binary_xx
binary_yy=im2bw(yy,0.65);%將彩色圖像xx變為二值圖像binary_xx
figure,imshow(binary_xx);%將矩陣binary_xx顯示為屏幕圖像
figure,imshow(binary_yy);%將矩陣binary_yy顯示為屏幕圖像
程序執行的結果如圖10-3所示。(a)(b)圖10-3彩色圖像轉換為二值圖像10.2.3灰度頻數分布圖
以橫坐標為像素灰度級(0~255)、縱坐標為圖像中相應灰度級像素的個數,繪制圖像的灰度頻數分布圖。灰度頻數分布是圖像處理的重要輔助工具。
采用imhist函數編程繪制圖像的灰度頻數分布圖。程序如下:
char1='D:\MyDocuments\'; %指定圖像文件存放的路徑
char2='Autumn'; %指定欲存取圖像文件的名稱
char3='Tulips'; %指定另一個欲存取圖像文件的名稱
char4='.jpg'; %指定欲存取圖像文件的擴展名
xx=imread([char1char2char4]);%按指定全路徑讀取圖像文件并賦值給變量xx
yy=imread([char1char3char4]);%按指定全路徑讀取圖像文件并賦值給變量yygray_xx=rgb2gray(xx); %將彩色圖像xx變為灰度圖像gray_xx
gray_yy=rgb2gray(yy); %將彩色圖像yy變為灰度圖像gray_yy
subplot(221);imshow(gray_xx);%將矩陣gray_xx顯示為屏幕圖像
title('圖像的灰度化處理');
subplot(222);imhist(gray_xx); %繪制圖像gray_xx的灰度頻數分布圖
xlabel('灰度級','FontSize',11,'FontName','Arial');
ylabel('頻數','FontSize',11,'FontName','Arial');
title('圖像的灰度分布');
subplot(223);imshow(gray_yy); %將矩陣gray_yy顯示為屏幕圖像
title('圖像的灰度化處理');
subplot(224);imhist(gray_yy); %繪制圖像gray_yy的灰度頻數分布圖
xlabel('灰度級','FontSize',11,'FontName','Arial');
ylabel('頻數','FontSize',11,'FontName','Arial');
title('圖像的灰度分布');
程序執行的結果如圖10-4所示。圖10-4圖像的灰度頻數分布圖10.2.4圖像代數運算
兩圖像的加減乘除運算稱作圖像代數運算。可采用MATLAB/imadd函數、imsubtract函數、immultiply函數和imdivide函數編程實現。
采用imadd、imsubtract、immultiply、imdivide等函數編程實現代數運算。程序如下:
char1='D:\MyDocuments\'; %指定圖像文件讀取的路徑
char2='Follow'; %指定第1個欲讀取的圖像文件名
char3='Bliss'; %指定第2個欲讀取的圖像文件名
char4='.jpg'; %指定第1個圖像文件的擴展名
char5='.bmp'; %指定第2個圖像文件的擴展名
xx=imread([char1char2char4]); %按指定全路徑讀取第1個圖像文件賦值給xx
yy=imread([char1char3char5]); %按指定全路徑讀取第2個圖像文件賦值給yyxxyy_add=imadd(xx,yy); %圖像相加
xxyy_subt=imsubtract(xx,yy); %圖像相減
xxyy_mult=immultiply(xx,yy); %圖像相乘
xxyy_div=imdivide(xx,yy); %圖像相除
gray_xx=rgb2gray(xx); %第1個圖像生成灰度圖
xx_comp=imcomplement(gray_xx); %灰度圖像反片
binary_yy=im2bw(yy,0.50); %生成二值圖
yy_comp=imcomplement(binary_yy); %二值圖像反片
subplot(2,2,1);imshow(xx);title('原圖像xx');
subplot(2,2,2);imshow(yy);title('原圖像yy');subplot(2,2,3);imshow(xxyy_add);title('圖像相加');
subplot(2,2,4);imshow(xxyy_subt);title('圖像相減');
figure,subplot(2,2,1);imshow(xxyy_mult);title('圖像相乘');
subplot(2,2,2);imshow(xxyy_div);title('圖像相除');
subplot(2,2,3);imshow(xx_comp);title('灰度圖像反片');
subplot(2,2,4);imshow(yy_comp);title('二值圖像反片');利用圖像矩陣直接進行代數運算應注意下述問題。
(1)?MATLAB讀入的圖像矩陣一般是unit8或unit16格式,圖像代數運算不支持這種格式,直接進行圖像矩陣代數運算需利用double函數將其變換為雙精度數據;
(2)圖像顯示函數imshow要求圖像矩陣的元素值在0與1之間,故圖像矩陣需歸一化;
(3)圖像減法會產生負值,而圖像負值是無定義的,圖像矩陣需將負值變為正數;
(4)圖像除法應避開除以0。
程序執行的結果如圖10-5所示。圖10-5圖像代數運算的生成圖像10.2.5圖像幾何變換
圖像的縮放、剪切、平移、旋轉、反轉、延展、映射、內插、幾何變形、幾何校正、圖像配準等操作稱作圖像的幾何變換。
采用imrotate、fliplr、imresize、imcrop等函數編程實現圖像的幾何變換。程序如下:
char1='D:\MyDocuments\'; %指定讀取圖像文件的路徑
char3='snow'; %指定要讀取的圖像文件名
char5='.bmp'; %指定要讀取的圖像文件擴展名
xx=imread([char1char3char5]);%按指定全路徑讀取圖像文件并賦值給變量xx
xx_rotate=imrotate(xx,30); %圖像旋轉30度
xx_fliplr(:,:,1)=fliplr(xx(:,:,1)); %圖像矩陣第一頁左右翻轉
xx_fliplr(:,:,2)=fliplr(xx(:,:,2)); %圖像矩陣第二頁左右翻轉xx_fliplr(:,:,3)=fliplr(xx(:,:,3)); %圖像矩陣第三頁左右翻轉
xx_flipud(:,:,1)=flipud(xx(:,:,1)); %圖像矩陣第一頁上下翻轉
xx_flipud(:,:,2)=flipud(xx(:,:,2)); %圖像矩陣第二頁上下翻轉
xx_flipud(:,:,3)=flipud(xx(:,:,3)); %圖像矩陣第三頁上下翻轉
xx_resize=imresize(xx,0.75); %按比例0.75進行圖像插值縮放
xx_crop=imcrop(xx); %圖像鼠標選擇剪切
續程序:
subplot(3,2,1);subimage(xx);title('原圖像');
subplot(3,2,2);subimage(xx_crop);title('鼠標選擇剪切圖像');
subplot(3,2,3);subimage(xx_fliplr);title('左右翻轉圖像');
subplot(3,2,4);subimage(xx_rotate);title('插值旋轉圖像');
subplot(3,2,5);subimage(xx_flipud);title('上下翻轉圖像');
subplot(3,2,6);subimage(xx_resize);title('插值縮放圖像');
程序執行的結果如圖10-6所示。圖10-6圖像幾何變換的生成圖像10.2.6圖像灰度變換
灰度變換是圖像增強的一種重要手段,使圖像對比度擴展,圖像更加清晰,特征更加明顯。灰度頻數分布圖給出了一幅圖像概貌的描述,可通過修改灰度頻數分布圖來得到圖像增強。
采用imadjust函數編程實現圖像的灰度變換。程序如下:
clc;closeall;clearall;
char1='E:\Users\MyMATLABFiles\';
char2='tomato01';
char4='.jpg';
xx=imread([char1char2char4]);
gray_xx=rgb2gray(xx);
new1_xx=imadjust(xx,[0.35,0.6],[0,1],1);
gray_new1_xx=rgb2gray(new1_xx);new2_xx=imadjust(xx,[0.550.8],[0,1],0.1);
gray_new2_xx=rgb2gray(new2_xx);
subplot(3,2,1),imshow(xx);title('原圖像');
subplot(3,2,2),imhist(gray_xx,100);title('原圖像灰度分布');
subplot(3,2,3),imshow(new1_xx);title('線性灰度變換圖像');
subplot(3,2,4),imhist(gray_new1_xx,100);title('線性變換圖像灰度分布');
subplot(3,2,5),imshow(new2_xx);title('非線性灰度變換圖像');
subplot(3,2,6),imhist(gray_new2_xx,100);title('非線性變換圖像灰度分布');
程序執行的結果如圖10-7所示。圖10-7圖像的灰度線性變換與非線性變換10.2.7DFT離散傅里葉變換
離散傅里葉變換DFT可用于模板匹配,當然還有其它的用途。模板匹配是檢測圖像中某一目標的一種簡單方法,基本做法是:選取原圖像和目標圖像,按原圖像尺寸制作目標模板圖像,利用fftn函數對原圖像和模板圖像進行DFT離散傅里葉變換,然后進行卷積運算以識別相關性目標,利用imadjust函數進行匹配圖像增強,以便于觀察匹配結果。
采用fftn函數編程實現圖像的傅里葉變換、反變換、卷積和模板匹配。程序如下:
clc;closeall;clearall;
char1='D:\MyDocuments\';
char2='Follow';
%char2='man';char4='.jpg';
xx=imread([char1char2char4]);
xx=double(xx)/255; %格式變換并歸一化
[xx_crop0,rect]=imcrop(xx); %在原圖中剪切目標圖像
xx_crop=imrotate(xx_crop0,90); %圖像旋轉為卷積計算做準備
nx_crop=size(xx_crop);nx=size(xx);
yy=zeros(size(xx,1),size(xx,2),size(xx,3));
yy(1:nx_crop(1),1:nx_crop(2),:)=xx_crop;
xx_fft=fftn(xx); %原圖像傅里葉變換
yy_fft=fftn(yy); %模板圖像傅里葉變換%原圖像與模板圖像的快速卷積識別相關性匹配目標
zz=real(ifftn(xx_fft.*yy_fft))/max(max(max(ifftn(xx_fft.*yy_fft))));
zz=imadjust(zz,[0.550.8],[0,1],50); %灰度變換對匹配目標增強
%zz=imcomplement(zz); %匹配結果圖像反片
subplot(2,2,1);imshow(xx);title('原圖像');
subplot(2,2,2);imshow(xx_crop0);title('目標圖像');
subplot(2,2,3);imshow(yy);title('目標模板圖像');
subplot(2,2,4);imshow(zz);title('模板匹配結果');
程序執行的結果如圖10-8所示。圖10-8圖像的模板匹配(較亮處為匹配好的目標位置)10.2.8DCT離散余弦變換
與DFT不同,離散余弦變換DCT是一種實數域上的變換,算法速度比DFT快,其基函數為余弦函數,圖像可表示為以DCT變換為權的基函數的加權組合。DCT用法之一是,先對圖像進行DCT變換,調整DCT值(權),再利用IDCT反變換重建調整DCT值后的圖像。
采用dct2函數和idct2函數編程實現圖像的離散余弦變換和重建。程序如下:
clc;closeall;clearall;
char1='D:\MyDocuments\';
char2='Follow';
char4='.jpg';xx=imread([char1char2char4]);
subplot(2,2,1);imshow(xx);title('原圖像');
gray_xx=rgb2gray(xx);
subplot(2,2,2);imshow(gray_xx);title('原圖像的灰度圖');
subplot(2,2,3);dct_xx=dct2(gray_xx);imshow(log(abs(dct_xx)),[]);%DCT變換
colormap(jet(64)),colorbar;title('DCT變換結果');
dct_xx(abs(dct_xx)<10)=0;%DCT變換絕對值小于10的置0
idct_xx=idct2(dct_xx)/255;%IDCT變換重建圖像
subplot(2,2,4);imshow(idct_xx,[]);title('IDCT變換結果');
程序執行的結果如圖10-9所示。圖10-9離散余弦變換DCT用于圖像恢復10.3.1低通模板運算實現圖像平滑
采用3×3和9×9低通鄰域平均模板對圖像平滑,試檢驗模板尺寸對圖像模糊的影響。程序如下:10.3模板運算與圖像濾波char1='D:\MyDocuments\';char2='Follow';char4='.jpg';
xx=imread([char1char2char4]);
gray_xx=rgb2gray(xx);
gray_xx=imadjust(gray_xx,[0.2,0.7],[0,1],0.6);
I=double(gray_xx)/255;
J=fspecial('average');J1=filter2(J,I); %3*3低通鄰域平均模板
K=fspecial('average',9);K1=filter2(K,I); %9*9低通鄰域平均模板
subplot(2,2,1);imshow(xx);title('原圖像');
subplot(2,2,2);imshow(I);title('原灰度圖像');
subplot(2,2,3);imshow(J1);title('3*3average');
subplot(2,2,4);imshow(K1);title('9*9average');
程序執行的結果如圖10-10所示。圖10-10利用低通鄰域平均模板平滑圖像原圖像原灰度圖像3*3average9*9medium10.3.2低通模板運算實現Gauss白噪聲濾除
采用低通模板對含Gauss白噪聲圖像實施濾波,試檢驗5×5線性鄰域平均模板和3×5中值濾波器非線性模板對噪聲的濾除效果。程序如下:
char1='D:\MyDocuments\';char2='Follow';char4='.jpg';
xx=imread([char1char2char4]);
gray_xx=rgb2gray(xx);
gray_xx=imadjust(gray_xx,[0.2,0.7],[0,1],0.6);
I=double(gray_xx)/255;
J=imnoise(I,'gaussian',0,0.01); %在圖像中添加gaussian噪聲
K=fspecial('average',5);K1=filter2(K,J); %5*5低通平均模板
L=medfilt2(J,[35]); %3*5低通中值模板
figure,subplot(2,2,1);imshow(I);title('原灰度圖像');
subplot(2,2,2);imshow(J);title('addnoise');
subplot(2,2,3);imshow(K1);title('5*5average');
subplot(2,2,4);imshow(L);title('3*5medium');
程序執行的結果如圖10-11所示。圖10-11利用中值濾波和平均濾波去噪原灰度圖像addnoise5*5average3*5medium10.3.3高通模板運算實現圖像邊緣增強
采用sobel和prewitt高通模板實現模糊圖像的濾波和邊緣增強,試檢驗模板的濾波效果。程序如下:
char1='D:\MyDocuments\';char2='Follow';char4='.jpg';
xx=imread([char1char2char4]);
gray_xx=rgb2gray(xx);
gray_xx=imadjust(gray_xx,[0.2,0.7],[0,1],0.6);
I=double(gray_xx)/255;
J=fspecial('average',3);J1=filter2(J,I);
K=fspecial('prewitt');K1=filter2(K,I)*5;
L=fspecial('sobel');L1=filter2(L,I)*5;
subplot(2,2,1);imshow(I);title('原灰度圖像');
subplot(2,2,2);imshow(J1);title('3*3lowpass');
subplot(2,2,3);imshow(K1);title('prewitt');
subplot(2,2,4);imshow(L1);title('sobel');
程序執行的結果如圖10-12所示。圖10-12利用高通濾波使圖像邊緣增強原灰度圖像3*3lowpassprewittsobel10.3.4高通模板運算實現圖像邊緣檢測
利用一階Sobel和二階Laplacian高通模板執行灰度圖像邊緣檢測,試檢驗邊緣檢測的效果。程序如下:
char1='D:\MyDocuments\';char2='Follow';char4='.jpg';
xx=imread([char1char2char4]);
gray_xx=rgb2gray(xx);
gray_xx=imadjust(gray_xx,[0.2,0.7],[0,1],0.6);
I=double(gray_xx)/255;
K=fspecial('laplacian',0.7);
K1=filter2(K,I);
K1=imadjust(K1,[0.1,0.6],[0,1],0.25);
L=fspecial('sobel');
L1=filter2(L,I);
L1=imadjust(L1,[0.1,0.6],[0,1],0.25);
figure,subplot(2,2,1);imshow(xx);title('原圖像');
subplot(2,2,2);imshow(I);title('原灰度圖像');
subplot(2,2,3);imshow(K1);title('laplacian');
subplot(2,2,4);imshow(L1);title('sobel');
程序執行的結果如圖10-13所示。圖10-13利用laplacian和sobel算子濾波使圖像邊緣凸顯原圖像原灰度圖像laplaciansobel10.3.5進一步的試驗
利用fspecial函數選擇不同算子,再利用filter2函數對圖像濾波,設置imadjust函數里的灰度范圍和校正系數值以增強圖像顯示效果。選用不同圖像進行練習。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年征信考試題庫:征信數據質量控制數據完整性分析試題
- 異常管理成本管理辦法
- 鹽城貨車閉環管理辦法
- 監測設備安裝管理辦法
- 2025年安全生產標準化建設現場管理案例分析考試題
- 2025年車工職業技能鑒定試卷:車工力學知識試題
- 2025年中國中水回用行業發展前景預測及投資戰略研究報告
- 鄭州渣土運輸管理辦法
- 成品交運倉儲管理辦法
- 經營數據結算管理辦法
- 2021學堂在線網課《生活英語讀寫》課后作業單元考核答案
- 中國近現代史綱要超星爾雅答案貴州大學-
- 生理心理學(三版)教學課件全套電子教案匯總整本書課件最全教學教程完整版教案(最新)
- KPI績效方案培訓PPT培訓課件
- 職業危害防護設施、器具檢查維護記錄
- 食品全過程防護工作手冊(食品防護計劃)
- Q∕GDW 12162-2021 隔離開關分合閘位置雙確認系統技術規范
- 燃氣入戶安檢培訓PPT.ppt
- 臨概題庫(南醫大)--內科部分
- 古代漢語授課教案(郭錫良版)教案分享
- 裝載機驅動橋培訓
評論
0/150
提交評論