Matlab图像处理创新实践-实验2【图像滤波基础(2)】
- Matlab實驗4——GUI程序操作說明
目? ?錄
一、實驗目的
二、實驗內容
三、實驗過程及結果
步驟1、2
步驟3
步驟4
步驟5
步驟6、7
四、分析與思考
附錄:代碼匯總
參考:
fspecial函數用于創建預定義的濾波算子,其語法格式為:
h = fspecial(type)
h = fspecial(type,parameters,sigma)
參數type制定算子類型,parameters指定相應的參數,具體格式為:
type='average',為均值濾波,參數為n,代表模版尺寸,用向量表示,默認值為[3,3]。
type= 'gaussian',為高斯低通濾波器,參數有兩個,n表示模版尺寸,默認值為[3,3],sigma表示濾波器的標準差,單位為像素,默認值為 0.5。
type= 'laplacian',為拉普拉斯算子,參數為alpha,用于控制拉普拉斯算子的形狀,取值范圍為[0,1],默認值為0.2。
type= 'log',為拉普拉斯高斯算子,參數有兩個,n表示模版尺寸,默認值為[3,3],sigma為濾波器的標準差,單位為像素,默認值為0.5
type= 'prewitt',為prewitt算子,用于邊緣增強,無參數。
type= 'sobel',為著名的sobel算子,用于邊緣提取,無參數。?
一、實驗目的
通過簡單實驗完成對一個圖像多種濾波操作,熟悉并了解圖像處理中空域濾波的概念,通過實際操作掌握濾波器的生成和基本的濾波,以完成基本的圖像處理目的。同時,了解幾種常見濾波器的功能和作用。
二、實驗內容
步驟1:用手機給自己拍一張美照(必須是本人照片);
步驟2:將你的照片放到計算機內;
步驟3:啟動Matlab,并通過imread(); 讀取該照片,然后通過imshow()進行顯示。如果圖片過大,可以通過imresize(A,m)進行縮小,其中A為圖像,m為尺寸變化系數,比如可設為0.2,尺寸為原來的五分之一;
步驟 4:利用rgb2gray()函數將圖像轉換為灰度圖像;
步驟5:利用F = fspecial();生成多個常見濾波器,分別為:①均值濾波器、②高斯濾波器、③拉普拉斯濾波器、④sobel和⑤prewitt濾波器;非必要參數均采用默認值。(詳細內容參加后面的參考信息)
步驟6:將這些濾波器通過new_im = filter2(F, im)函數對測試圖像進行濾波操作,并觀察不同濾波器的濾波結果;filter2的輸出結果的數據類型為double,需要進行類型轉換才能夠作為圖像數據顯示,可采用uint8()對其進行類型轉換,例如:y = uint8(x)
步驟7:利用subplot()函數實現將多個濾波結果圖像顯示在同一個窗口中;
注意:所有的運行命令需全部形成腳本文件(.m后綴),文件名為姓名的漢語拼音,如zhangsan.m
三、實驗過程及結果
【在這里描述下你的實驗操作過程和相應代碼,以及你得到的最終結果,需圖文并茂】
步驟1、2
步驟1:用手機給自己拍一張美照(必須是本人照片);
步驟2:將你的照片放到計算機內;
Matlab內置圖片:Peppers.png步驟3
步驟3:啟動Matlab,并通過imread(); 讀取該照片,然后通過imshow()進行顯示。如果圖片過大,可以通過imresize(A,m)進行縮小,其中A為圖像,m為尺寸變化系數,比如可設為0.2,尺寸為原來的五分之一;
步驟4
步驟 4:利用rgb2gray()函數將圖像轉換為灰度圖像;
步驟5
步驟5:利用F = fspecial();生成多個常見濾波器,分別為:①均值濾波器、②高斯濾波器、③拉普拉斯濾波器、④sobel和⑤prewitt濾波器;非必要參數均采用默認值。(詳細內容參加后面的參考信息)
步驟6、7
步驟6:將這些濾波器通過new_im = filter2(F, im)函數對測試圖像進行濾波操作,并觀察不同濾波器的濾波結果;filter2的輸出結果的數據類型為double,需要進行類型轉換才能夠作為圖像數據顯示,可采用uint8()對其進行類型轉換,例如:y = uint8(x)
步驟7:利用subplot()函數實現將多個濾波結果圖像顯示在同一個窗口中。
四、分析與思考
【在此描述下你從該實驗中得出的結論,并對實驗結果進行分析,例如:filter2和imfilter區別,解釋下各個濾波器的功能等等,可以查閱資料,該部分占最終成績的50%】
圖像增強是為了改善圖像的視覺效果,突出圖像中有用的部分(即感興趣的部分)。圖像去噪目的是將退化圖像原有信息進行恢復,使之更貼近實際。
?????? filter2和imfilter區別:imfilter 可進行多bai維圖像(RGB等)進行空間濾波,且可選參數比較多;filter2 只能對二維圖像(灰度圖)進行空間濾波。兩個函數結果類dao型不一樣,只需要在I1=filter2(h,I)后面加上I1=uint8(I1)進行類型轉換,結果就是一樣的。
Matlab采用fspecial函數生成濾波模板,并用filter2函數指定模板對圖像進行濾波。fspecial的常用語法格式為:h = fspecial(type)、h = fspecial(type, parameters)。其中,type用于指定濾波器類型;parameters則是與濾波器有關的具體函數。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖表 1 fspecial函數的濾波器模板定義
| type | parameters | 說明 |
| average | hsize | 矩形均值濾波器。hsize為兩元素向量,用于指定矩形的大小。當為正方形區域時,hsize也可用標量表示。 |
| disk | radius | 生成半徑為radius的圓形濾波器。 |
| gaussian | hsize,sigma | 標準偏差為sigma、大小為hsize的高斯低通濾波器。 |
| laplacian | alpha | 系數為alpha的二維拉普拉斯操作。 |
| log | hsize,sigma | 標準偏差為sigma、大小為hsize的高斯濾波旋轉對稱拉普拉斯算子。 |
| motion | len,theta | 按角度theta移動len個像素的運動濾波器。 |
| prewitt | 無 | 近似計算梯度算子。 |
| sobel | 無 | 考慮了像素點空間位置的近似計算梯度算子。 |
附錄:代碼匯總
%--------步驟3-------- x = imread('peppers.png'); % 讀取圖片:將圖像數據讀取到Matlab環境中 peppers.png:Matlab內置圖片 imshow(x); % 顯示圖片 % 警告: Image is too big to fit on screen; displaying at 8% % > In imuitools\private\initSize at 71 % In imshow at 282 %--------步驟3-------- smallx = imresize(x, 0.5); % 縮小圖片 figure, imshow(smallx); % figure:生成新的圖片窗口,不覆蓋原窗口% --------步驟4-------- x = imread('peppers.png'); % 讀取圖片:將圖像數據讀取到Matlab環境中 smallx = imresize(x, 0.5); imshow(smallx); gx = rgb2gray(smallx); f1 = fspecial('average', 5); gx1 = filter2(f1, gx); figure, imshow(uint8(gx1));% --------步驟5-------- x = imread('peppers.png'); % 讀取圖片:將圖像數據讀取到Matlab環境中 smallx = imresize(x, 0.5); imshow(smallx); gx = rgb2gray(smallx); f1 = fspecial('average', 5); % 1、均值濾波器 f2 = fspecial('gaussian'); % 2、高斯濾波器 f3 = fspecial('laplacian'); % 3、拉普拉斯濾波器 f4 = fspecial('sobel'); % 4、sobel濾波器 f5 = fspecial('prewitt'); % 5、prewitt濾波器 gx1 = filter2(f1, gx); gx2 = filter2(f2, gx); gx3 = filter2(f3, gx); gx4 = filter2(f4, gx); gx5 = filter2(f5, gx); subplot(2, 3, 1);imshow(smallx);title('縮小至原來的0.5倍'); subplot(2, 3, 2);imshow(uint8(gx1));title('1、均值濾波器'); subplot(2, 3, 3);imshow(uint8(gx2));title('2、高斯濾波器'); subplot(2, 3, 4);imshow(uint8(gx3));title('3、拉普拉斯濾波器'); subplot(2, 3, 5);imshow(uint8(gx4));title('4、sobel濾波器'); subplot(2, 3, 6);imshow(uint8(gx5));title('5、prewitt濾波器');%--------步驟6、7-------- x = imread('peppers.png'); % 讀取圖片:將圖像數據讀取到Matlab環境中 smallx = imresize(x, 0.05); imshow(smallx); gx = rgb2gray(smallx);f1 = fspecial('average', 5); % 1、均值濾波器 gx1 = filter2(f1, gx); gx1_1 = filter2(f1, gx1);f2 = fspecial('gaussian'); % 2、高斯濾波器 gx2 = filter2(f2, gx); gx2_1 = filter2(f2, gx2);f3 = fspecial('laplacian'); % 3、拉普拉斯濾波器 gx3 = filter2(f3, gx); gx3_1 = filter2(f3, gx3);f4 = fspecial('sobel'); % 4、sobel濾波器 gx4 = filter2(f4, gx); gx4_1 = filter2(f4, gx4);f5 = fspecial('prewitt'); % 5、prewitt濾波器 gx5 = filter2(f5, gx); gx5_1 = filter2(f5, gx5);f6 = fspecial('disk'); % 6、disk濾波器 gx6 = filter2(f6, gx); gx6_1 = filter2(f6, gx6);f7 = fspecial('log'); % 7、log濾波器 gx7 = filter2(f7, gx); gx7_1 = filter2(f7, gx7);f8 = fspecial('motion'); % 8、motion濾波器 gx8 = filter2(f8, gx); gx8_1 = filter2(f8, gx8);subplot(3, 3, 1);imshow(smallx);title('縮小至原來的0.05倍'); subplot(3, 3, 2);imshow(uint8(gx1_1));title('1、均值濾波器'); subplot(3, 3, 3);imshow(uint8(gx2_1));title('2、高斯濾波器'); subplot(3, 3, 4);imshow(uint8(gx3_1));title('3、拉普拉斯濾波器'); subplot(3, 3, 5);imshow(uint8(gx4_1));title('4、sobel濾波器'); subplot(3, 3, 6);imshow(uint8(gx5_1));title('5、prewitt濾波器'); subplot(3, 3, 7);imshow(uint8(gx6_1));title('6、disk濾波器'); subplot(3, 3, 8);imshow(uint8(gx7_1));title('7、log濾波器'); subplot(3, 3, 9);imshow(uint8(gx8_1));title('8、motion濾波器');🤣多謝觀看、
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Matlab图像处理创新实践-实验2【图像滤波基础(2)】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【CentOS Linux 7】实验1【
- 下一篇: 【2020任燕翔-考研专业院校选择指南】