Matlab图像处理创新实践-实验3【图像锐化】
- Matlab實驗4——GUI程序操作說明
目? ?錄
一、實驗目的
二、實驗內容
三、實驗過程及結果
步驟1、2
步驟3
步驟4
步驟5
步驟6、7
步驟8、9、10
四、分析與思考
附錄:代碼匯總
主文件——ex3.m
函數文件
一、實驗目的
掌握matlab環境下,函數的編寫方法;熟悉并了解圖像處理中空域濾波的概念,通過實際操作掌握濾波器的生成和基本的濾波;理解圖像銳化的實現方法和步驟,理解圖像銳化的基本理論。
二、實驗內容
步驟1:用手機給自己拍一張美照(必須是本人照片);
步驟2:將你的照片放到計算機內;
步驟3:啟動Matlab,并通過imread(); 讀取該照片,然后通過imshow()進行顯示。如果圖片過大,可以通過imresize(A,m)進行縮小,其中A為圖像,m為尺寸變化系數,比如可設為0.2,尺寸為原來的五分之一;
步驟 4:利用rgb2gray()函數將圖像轉換為灰度圖像;
步驟5:利用一種平滑濾波器,F,如9*9的均值濾波器或高斯濾波器,通過new_im = filter2(F, im)對圖像進行濾波;
步驟6:利用double()將原圖像類型轉換為浮點型,然后按照“原圖像 + 原圖像 - 平滑圖像”的模式,進行計算;
步驟7:利用uint8()或mat2gray()將得到的結果圖像,進行類型轉換,并將原圖像和銳化后的圖像一同顯示在窗口中;
步驟8:利用一種邊緣濾波器,FF,如sobel、prewitt等,通過new_im = filter2(FF, im)對圖像進行濾波;
步驟9:利用double()將原圖像類型轉換為浮點型,然后按照“原圖像 + 邊緣圖像”的模式,進行計算;
步驟10:利用uint8()或mat2gray()將得到的結果圖像,進行類型轉換,并將原圖像和銳化后的圖像一同顯示在窗口中;
注意:銳化操作的代碼需形成函數文件(.m后綴),文件名為姓名的漢語拼音,如zhangsan.m,參考原型如下:
function out_im = zhangsan(input_im)
三、實驗過程及結果
【在這里描述下你的實驗操作過程和相應代碼,以及你得到的最終結果,需圖文并茂】
步驟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,如9*9的均值濾波器或高斯濾波器,通過new_im = filter2(F, im)對圖像進行濾波;
Matlab內置圖片:saturn.png步驟6、7
步驟6:利用double()將原圖像類型轉換為浮點型,然后按照“原圖像 + 原圖像 - 平滑圖像”的模式,進行計算;
步驟7:利用uint8()或mat2gray()將得到的結果圖像,進行類型轉換,并將原圖像和銳化后的圖像一同顯示在窗口中;
步驟8、9、10
步驟8:利用一種邊緣濾波器,FF,如sobel、prewitt等,通過new_im = filter2(FF, im)對圖像進行濾波;
步驟9:利用double()將原圖像類型轉換為浮點型,然后按照“原圖像 + 邊緣圖像”的模式,進行計算;
步驟10:利用uint8()或mat2gray()將得到的結果圖像,進行類型轉換,并將原圖像和銳化后的圖像一同顯示在窗口中;
注意:銳化操作的代碼需形成函數文件(.m后綴),文件名為姓名的漢語拼音,如zhangsan.m,參考原型如下:
function out_im = zhangsan(input_im)?
四、分析與思考
【在此描述下你從該實驗中得出的結論,并對實驗結果進行分析,解釋下銳化實現的過程和規律,例如濾波器參數的變化會導致銳化結果發生怎樣的變化,可以查閱資料,該部分占最終成績的50%】
此次實驗,收獲甚多,學會了Matlab中函數的使用。Matlab中函數的使用較為靈活,可以傳遞多個形式參數且形式參數的可使用數據類型比較多。使用函數,應盡可能地令函數功能最小化,一個函數不要實現太多的功能。
銳化圖像的實現過程1:
銳化圖像的實現過程2:
附錄:代碼匯總
主文件——ex3.m
%--------步驟3-------- x = imread('saturn.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.05); % 縮小圖片 figure, imshow(smallx); % figure:生成新的圖片窗口,不覆蓋原窗口% --------步驟4-------- x = imread('saturn.png'); % 讀取圖片:將圖像數據讀取到Matlab環境中 smallx = imresize(x, 0.05); imshow(smallx); gx = rgb2gray(smallx); f1 = fspecial('average', 5); gx1 = filter2(f1, gx); figure, imshow(uint8(gx1));% --------步驟5-------- 利用平滑濾波器,對圖像進行濾波 x = imread('saturn.png'); % 讀取圖片:將圖像數據讀取到Matlab環境中 smallx = imresize(x, 0.05); gx = rgb2gray(smallx);f1 = fspecial('average', [9 9]); % 1、9*9均值濾波器 gx1 = filter2(f1, gx); f2 = fspecial('gaussian', [9 9]); % 2、高斯濾波器 gx2 = filter2(f2, gx); f3 = fspecial('laplacian'); % 3、拉普拉斯濾波器 gx3 = filter2(f3, gx); f4 = fspecial('sobel'); % 4、sobel濾波器 gx4 = filter2(f4, gx); f5 = fspecial('prewitt'); % 5、prewitt濾波器 gx5 = filter2(f5, gx);subplot(2, 3, 1);imshow(smallx);title('縮小至原來的0.05倍'); subplot(2, 3, 2);imshow(uint8(gx1));title('1、9*9均值濾波器'); subplot(2, 3, 3);imshow(uint8(gx2));title('2、9*9高斯濾波器'); 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濾波器');% --------步驟5-------- 利用平滑濾波器,對圖像進行濾波 x = imread('saturn.png'); % 讀取圖片:將圖像數據讀取到Matlab環境中 smallx = imresize(x, 0.05); imshow(smallx); gx = rgb2gray(smallx);f1 = fspecial('average', 5); % 1、均值濾波器 gx1 = filter2(f1, gx); f2 = fspecial('gaussian'); % 2、高斯濾波器 gx2 = filter2(f2, gx); f3 = fspecial('laplacian'); % 3、拉普拉斯濾波器 gx3 = filter2(f3, gx); f4 = fspecial('sobel'); % 4、sobel濾波器 gx4 = filter2(f4, gx); f5 = fspecial('prewitt'); % 5、prewitt濾波器 gx5 = filter2(f5, gx); f6 = fspecial('disk'); % 6、disk濾波器 gx6 = filter2(f6, gx); f7 = fspecial('log'); % 7、log濾波器 gx7 = filter2(f7, gx); f8 = fspecial('motion'); % 8、motion濾波器 gx8 = filter2(f8, gx); subplot(3, 3, 1);imshow(smallx);title('縮小至原來的0.05倍'); subplot(3, 3, 2);imshow(uint8(gx1));title('1、均值濾波器'); subplot(3, 3, 3);imshow(uint8(gx2));title('2、高斯濾波器'); subplot(3, 3, 4);imshow(uint8(gx3));title('3、拉普拉斯濾波器'); subplot(3, 3, 5);imshow(uint8(gx4));title('4、sobel濾波器'); subplot(3, 3, 6);imshow(uint8(gx5));title('5、prewitt濾波器'); subplot(3, 3, 7);imshow(uint8(gx6));title('6、disk濾波器'); subplot(3, 3, 8);imshow(uint8(gx7));title('7、log濾波器'); subplot(3, 3, 9);imshow(uint8(gx8));title('8、motion濾波器');%--------步驟6、7-------- 得到圖像銳化圖:方案1、使用“平滑濾波器” x = imread('saturn.png'); % 讀取圖片:將圖像數據讀取到Matlab環境中 smallx = imresize(x, 0.05); gx = rgb2gray(smallx); sharpx = luweixing(gx, 5);F = fspecial('average', [9 9]); % 1、9*9均值濾波器 y = filter2(F, gx); xy = double(gx) - y; % 進行數據轉換,保證數據類型一致;高頻圖、輪廓、邊緣 subplot(2, 2, 1);imshow(gx);title('灰度圖像'); subplot(2, 2, 2);imshow(uint8(y), []);title('1、利用濾波器,對圖像進行濾波'); subplot(2, 2, 3);imshow(uint8(xy), []);title('2、高頻圖,突出邊緣輪廓'); subplot(2, 2, 4);imshow(uint8(sharpx));title('3、銳化結果圖');%--------步驟8、9、10-------- 得到圖像銳化圖:方案2、原圖+邊緣圖 x = imread('saturn.png'); smallx = imresize(x, 0.05); gx = rgb2gray(smallx); sharpx = luweixing(gx); imshow(uint8(sharpx));F2 = fspecial('prewitt'); y2 = filter2(F2, gx); % 反映邊緣結構情況 sharpx2 = double(gx) + y2; % 原圖像+邊緣圖像subplot(2, 2, 1);imshow(gx);title('灰度圖像'); subplot(2, 2, 2);imshow(uint8(y2), []); title('利用濾波器,對圖像進行濾波'); subplot(2, 2, 3);imshow(uint8(sharpx)); title('銳化方案1、使用“平滑濾波器”'); subplot(2, 2, 4);imshow(uint8(sharpx2));title('銳化方案2、原圖+邊緣圖');函數文件
% 輸入圖像,輸出銳化結果(銳化圖:提高圖像的清晰度) function X = luweixing( im, Size ) % im:灰度圖像作為形參 %UNTITLED5 此處顯示有關此函數的摘要 % 此處顯示詳細說明 F = fspecial('prewitt'); % F = fspecial('prewitt', Size); y = filter2(F, im); xy = double(im) - y; % 進行數據轉換,保證數據類型一致;高頻圖、輪廓、邊緣 X = double(im) + xy; % 原圖+輪廓:清晰度更高 end??
總結
以上是生活随笔為你收集整理的Matlab图像处理创新实践-实验3【图像锐化】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 积极参加各类竞赛——大学生竞赛
- 下一篇: ComeFuture英伽学院——2020