数字图像处理matlab上机实验 (九)

    技术2024-09-29  51

    前言:作为一名图像算法攻城狮,那是在2014年大三下学期,一本深绿色的《数字图像处理》(冈萨雷斯的英文版)出现在自己课桌前。偶然间打开的一扇意外之门,就这样结下了一段不解之缘,那些日子不断上网搜代码的自己,那个刚上机不到二十分钟就把作业提交的自己,早已随往日的岁月飘扬而去。三年的烟酒僧,两年的酱油工,而今只觉脑子越来越不够用,这次决心回炉重造,希望能够通过固本培基,打开思路,话不多说,开始上课! ----2020-7-7


    实验9 图像边缘检测

    一、实验目的 通过本实验使学生掌握图像边缘检测的基本方法,加深对图像分割的理解。 二、实验原理 本实验是基于数字图像处理课程中的图像分割理论来设计的。 本实验的准备知识:第三章空域图像增强,第十章图像分割中关于图像锐化和边缘检测的方法。重点如下: 1、 图像锐化的意义,其中的关键算子有: a) Prewitt算子 b) Sobel算子 c) LoG算子 2、 图像分割的意义,其中的关键算子:prewitt算子,sobel算子 3、 图像边缘检测技术

    三、实验内容 (一) 图像锐化 读取lena_gray.tif图像, (1)使用 prewitt 算子对图像进行锐化,同屏显示原图像和锐化后图像,并解释结果。

    clc [I,map]=imread('F:\Images\lena_gray.tif'); [H,W]=size(I); M=double(I); J=M; for i=2:H-1 for j=2:W-1 J(i,j)=abs(M(i-1,j+1)-M(i-1,j-1)+M(i,j+1)-M(i,j-1)+M(i+1,j+1)-M(i+1,j-1))+abs(M(i+1,j-1)-M(i-1,j-1)+M(i+1,j)-M(i-1,j)+M(i+1,j+1)-M(i-1,j+1)); end end subplot(1,2,1);imshow(I);title('原图'); subplot(1,2,2);imshow(uint8(J));title('Prewitt处理后');

    (2)使用 sobel 算子对图像进行锐化,同屏显示原图像和锐化后图像,并解释结果。

    clc [I,map]=imread('F:\Images\lena_gray.tif'); [H,W]=size(I); M=double(I); J=M; for i=2:H-1 for j=2:W-1 J(i,j)=abs(M(i-1,j+1)-M(i-1,j-1)+2*M(i,j+1)-2*M(i,j-1)+M(i+1,j+1)-M(i+1,j-1))+abs(M(i-1,j-1)-M(i+1,j-1)+2*M(i-1,j)-2*M(i+1,j)+M(i-1,j+1)-M(i+1,j+1)); end end subplot(1,2,1);imshow(I);title('原图'); subplot(1,2,2);imshow(uint8(J));title('Sobel 处理后');

    (3)使用 LoG 算子对图像进行锐化,同屏显示原图像和锐化后图像,并解释结果。

    clc [I,map]=imread('F:\Images\lena_gray.tif'); [H,W]=size(I); M=double(I); J=M; for i=2:H-1 for j=2:W-1 J(i,j)=4*M(i,j)-[M(i+1,j)+M(i-1,j)+M(i,j+1)+M(i,j-1)]; end end subplot(1,2,1);imshow(I);title('原图'); subplot(1,2,2);imshow(uint8(J));title('锐化处理后的图');

    (4)对比上述锐化结果,说明三个算子的优缺点。

    (二) 图像边缘检测 读取house.tif图像, (1)设计合适的算子,检测图像中的横向边缘,同屏显示原图像和边缘图像,并解释结果。

    clc [f,map]=imread('F:\Images\house.tif'); subplot(121) imshow(f) title('图像') [ gb,t2]=edge(f,'sobel','horizontal');%使用edge函数对图像f提取水平的边缘 subplot(122) imshow(gb) title('图像的水平边缘')

    (2)设计合适的算子,检测图像中的纵向边缘,同屏显示原图像和边缘图像,并解释结果。

    clc [f,map]=imread('F:\Images\house.tif'); subplot(121) imshow(f) title('图像') [gv,t1]=edge(f,'sobel','vertical');%使用edge函数对图像f提取垂直的边缘 subplot(122) imshow(gv) title('图像的垂直边缘')

    (3)将上述两幅边缘图像叠加,试解释结果的意义。

    (三) 图像分割 读取rice.tif图像, (1)使用 prewitt 算子对图像进行分割,同屏显示原图像和分割后图像,并解释结果。

    clc [f,map]=imread('F:\Images\rice.tif'); subplot(121) imshow(f) title('图像') f1=edge(f,'prewitt'); subplot(122) imshow(f1) title('图像处理后')

    (2)使用 sobel 算子对图像进行分割,同屏显示原图像和分割后图像,并解释结果。

    clc [f,map]=imread('F:\Images\rice.tif'); subplot(121) imshow(f) title('图像') f1=edge(f, 'sobel'); subplot(122) imshow(f1) title('图像处理后')

    四、实验方法与步骤 1、顺序完成上述实验内容 2、按照实验内容要求,分析编程,将程序和实验结果整理成word文档,分析结果,编写实验报告。

    五、实验报告要求 1、本实验由学生单人独立完成。 2、每个实验均按统一格式编写实验报告。 实验报告内容包括:实验要求,实验项目,典型程序流程图,程序清单,数据结果和分析讨论。

    Processed: 0.016, SQL: 9