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

前言:作为一名图像算法攻城狮,那是在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、每个实验均按统一格式编写实验报告。
实验报告内容包括:实验要求,实验项目,典型程序流程图,程序清单,数据结果和分析讨论。

本系列文章列表如下:
数字图像处理matlab上机实验 (一)
数字图像处理matlab上机实验 (二)
数字图像处理matlab上机实验 (三)
数字图像处理matlab上机实验 (四)
数字图像处理matlab上机实验 (五)
数字图像处理matlab上机实验 (六)
数字图像处理matlab上机实验 (七)
数字图像处理matlab上机实验 (八)
数字图像处理matlab上机实验 (九)

猜你喜欢

转载自blog.csdn.net/sinat_34897952/article/details/107116502