实验二、灰度图像边缘检测
边缘化提取实验报告

一、实验目的1. 理解图像边缘检测的基本原理和过程。
2. 掌握常用的边缘检测算法,如Roberts算子、Sobel算子、Prewitt算子、Laplacian算子和Canny算子。
3. 通过实验验证不同边缘检测算法的效果,并分析其优缺点。
4. 了解特征提取的基本原理和方法,对图像边缘进行特征提取。
二、实验原理图像边缘是图像中灰度值或颜色值发生突变的地方,是图像分割和特征提取的基础。
边缘检测的目的是找到图像中灰度值变化明显的区域,即边缘。
边缘检测算法可以分为两类:基于微分算子的边缘检测算法和基于二值化的边缘检测算法。
1. 基于微分算子的边缘检测算法:- 利用一阶导数或二阶导数检测图像边缘。
- 常见的算子有Roberts算子、Sobel算子、Prewitt算子、Laplacian算子等。
2. 基于二值化的边缘检测算法:- 利用图像的二值化处理,将图像分为前景和背景两部分。
- 常见的算法有Otsu算法、Sauvola算法等。
三、实验内容1. 实验材料:- OpenCV库- Python编程环境2. 实验步骤:(1)读取图像:使用OpenCV库读取待检测的图像。
(2)灰度化:将图像转换为灰度图像,以便进行边缘检测。
(3)边缘检测:- 使用Roberts算子检测边缘。
- 使用Sobel算子检测边缘。
- 使用Prewitt算子检测边缘。
- 使用Laplacian算子检测边缘。
- 使用Canny算子检测边缘。
(4)特征提取:对检测到的边缘进行特征提取,如计算边缘长度、宽度、方向等。
(5)结果展示:将检测到的边缘和提取的特征进行可视化展示。
四、实验结果与分析1. Roberts算子:- 效果:Roberts算子对图像噪声敏感,边缘检测效果较差。
- 分析:Roberts算子对图像局部区域进行检测,容易受到噪声的影响。
2. Sobel算子:- 效果:Sobel算子对图像噪声有一定的抑制能力,边缘检测效果较好。
- 分析:Sobel算子使用高斯滤波器对图像进行平滑处理,然后计算图像的一阶导数。
灰度图像的边缘检测

M=imread(str);采用Roberts算子BW=edge(rgb2gray(M),'roberts');imshow(BW);Sobel算子:bw=edge(rgb2gray(M),'sobel');imshow(bw);边缘检测程序i=imread('1.jpg'); 读入图像1i1=rgb2gray(i); 把rgb图像转换成灰度图像bw1=edge(i1,'log',0.07); 做阈值为0.07的高斯—拉普拉斯(Log)算法figure(3),imshow(i); 显示原图figure(4),imshow(bw1); 显示高斯—拉普拉斯(Log)边缘检测后的图I = imread('cameraman.tif'); % 读入图像imshow(I);title('原图')BW1 = edge(I,'canny'); % 调用canny函数figure,imshow(BW1); % 显示分割后的图像,即梯度图像title('Canny')边缘检测及拼接I=imread('myphoto.jpg'); % 假设要处理的图像是myphoto.jpgheights=size(I,1); % 图像的高widths=size(I,2); % 图像的宽m=8; % 假设纵向分成8幅图n=10; % 假设横向分成10幅图% 考虑到rows和cols不一定能被m和n整除,所以对行数和列数均分后要取整rows=round(linspace(0,heights,m+1)); % 各子图像的起始和终止行标cols=round(linspace(0,widths,n+1)); % 各子图像的起始和终止列标blocks=cell(m,n); % 用一个单元数组容纳各个子图像for k1=1:mfor k2=1:nblocks{k1,k2}=I(rows(k1)+1:rows(k1+1),cols(k2)+1:cols(k2+1),:);subimage=blocks{k1,k2};% 以下是对subimage进行边缘检测% 加入边缘检测的代码% 以上是对subimage进行边缘检测blocks{k1,k2}=subimage;endendprocessed=I; % processed为处理后的图像,用原图像对其初始化% 以下为拼接图像for k1=1:mfor k2=1:nprocessed(rows(k1)+1:rows(k1+1),cols(k2)+1:cols(k2+1),:)=blocks{k1,k2};endendfigure,imshow(processed)% 以上的程序已测试过,对灰度图像和真彩图像都可以运行在用matlab做图像拼接,怎么把两幅图片重叠的部分取出1种情况:横向重叠找到重叠的那一行就行了,然后去除多余部分for ii=1:mif a(ii,:)==b(ii,:)result=a的上半部分+b的下半部分;endend2种情况:纵向重叠找到重叠的那一列就行了,然后去除多余部分。
图像实验二

实验二边缘检测与图像分割一·实验目的1、学习边缘检测2、学习灰度阀值分割二.实验内容1、分别用sobel、Laplacian-Gaussian方法对一副灰度图像进行边缘提取。
2、给出对比结果。
3、对一幅灰度图像进行灰度分割处理。
三.实验步骤1、对灰度图像进行边缘提取i=imread(‘eight.tif’);figure;subplot(2,2,1);imshow(i);title(‘原始图像’);subplot(2,2,3);imshow(i);title(‘原始图像’);i1=edge(i,‘sobel’);subplot(2,2,2);imshow(i1);title(‘sober方法提取的边缘’);i2=edge(i,‘log’);subplot(2,2,4);imshow(i2);title(‘Laplacian-Gaussian方法提取的边缘’);比较提取边缘的效果可以看出,sober算子是是一种微分算子,对边缘的定位较正确,但是会漏去一些边缘细节,而Laplacian-Gaussian算子是一种二阶边缘检测方法,它是通过寻找图像灰度值中二阶过零点来检测边缘并将边缘提取出来,边缘的细节比较丰富。
通过比较可以看出Laplacian-Gaussian算子比sober算子边缘更完整,效果更好。
2.对灰度图像进行灰度分割处理i=imread(‘eight.tif’);subplot(1,2,1);imhist(i);title(‘原始图像直方图’);thread=130/255;subplot(1,2,2);i3=im2bw(i,thread);imshow(i3);title(‘分割结果’);根据原图像的直方图,发现背景和目标的分割值大约在130左右,并将灰度图像转为二值图像,分割效果比较理想。
3.边缘检测分别用sobel和laplacian算子来进行,程序如下:I=imread(‘girl.bmp’);subplot(1,3,1);imshow(I);title(‘original pic’);K=fspecial(‘laplacian’,0.7);K1=filter2(K,I)/100;subplot(1,3,2);imshow(K1);title(‘laplacian’);L=fspecial(‘soble’);L1=filter2(L,I)/200;subplot(1,3,3);imshow(L1);title(‘sibel’);。
实验二 图像分割与边缘检测

实验二图像分割与边缘检测一.实验目的及要求1.利用MATLAB研究图像分割与边缘检测的常用算法原理;2.掌握MATLAB图像域值分割与边缘检测函数的使用方法;3.了解边缘检测的算法和用途,比较Sobel、Prewitt、Canny等算子边缘检测的差异。
二、实验内容(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。
熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。
1.图像阈值分割clear all, close all;I = imread('rice.tif');figure (1),imshow(I)figure(2); imhist(I)T=120/255;Ibw1 = im2bw(I,T); %选择阈值T=120/255对图像二值化;figure(3);subplot(1,2,1), imshow(Ibw1);T=graythresh(I); %采用Otsu方法计算最优阈值T对图像二值化;L = uint8(T*255)Ibw2 = im2bw(I,T);subplot(1,2,2), imshow(Ibw2);help im2bw;help graythresh;(令T取不同值,重做上述试验,观察试验结果)以下是程序执行结果:Comand窗口:L =125IM2BW Convert image to binary image by thresholding.IM2BW produces binary images from indexed, intensity, or RGBimages. To do this, it converts the input image to grayscaleformat (if it is not already an intensity image), and thenconverts this grayscale image to binary by thresholding. Theoutput binary image BW has values of 0 (black) for all pixelsin the input image with luminance less than LEVEL and 1(white) for all other pixels. (Note that you specify LEVEL inthe range [0,1], regardless of the class of the input image.)BW = IM2BW(I,LEVEL) converts the intensity image I to blackand white.BW = IM2BW(X,MAP,LEVEL) converts the indexed image X withcolormap MAP to black and white.BW = IM2BW(RGB,LEVEL) converts the RGB image RGB to black andwhite.Note that the function GRAYTHRESH can be used to compute LEVELautomatically.Class Support-------------The input image can be of class uint8, uint16, or double.The output image BW is of class uint8.Example-------load treesBW = im2bw(X,map,0.4);imshow(X,map), figure, imshow(BW)See also GRAYTHRESH, IND2GRAY, RGB2GRAY.GRAYTHRESH Compute global image threshold using Otsu's method.LEVEL = GRAYTHRESH(I) computes a global threshold (LEVEL) that can be used to convert an intensity image to a binary image with IM2BW. LEVELis a normalized intensity value that lies in the range [0, 1].GRAYTHRESH uses Otsu's method, which chooses the threshold to minimize the intraclass variance of the thresholded black and white pixels.Class Support-------------The input image I can be of class uint8, uint16, or double. LEVELis a double scalar.Example-------I = imread('blood1.tif');level = graythresh(I);BW = im2bw(I,level);imshow(BW)See also IM2BW.下面是T取不同值时的所得的结果:T=60时:原图像原图像的灰度直方图T=60时分割的结果Otsu方法分割的结果T=120时:原图像原图像的灰度直方图T=120时分割的结果Otsu方法分割的结果T=200时:原图像原图像的灰度直方图T=120时分割的结果Otsu方法分割的结果对以上实验结果分析如下:由matalab命令窗口显示的内容可知,不同的阈值分割的结果并不一样。
图像边缘检测原理及方法

1、差分边缘检测 在处理数字图像的离散域时,可用图像的一阶差分直接代替图像函数的导 数。 二维离散图像函数在 x 方向的一阶差分定义为: f ( x 1, y ) f ( x, y ) , 在y 方 向的一阶差分定义为: f ( x, y 1) f ( x, y ) [4]。 差分边缘检测通过求图像灰度迅速变化处的一阶导数算子的极值来检测奇 异点。某一点的值则代表该点的“边缘强度”,通过对这些值设定阈值进一步得到 边缘图像。同时,差分边缘检测要求差分方向与边缘方向垂直,此时需对图像不 同方向进行差分运算。边缘检测一般分为垂直边缘、水平边缘、对角线边缘, 各 [5] 自方向模版如图 2-1 所示 。
二、图像边缘检测方法
边缘检测算子是利用图像边缘的突变性质来检测边缘的。 主要分为两种类型 :一种是以一阶导数为基础的边缘检测算子,通过计算图像的梯度值来检测图 像边缘,如:差分边缘检测、Roberts 算子、Sobel 算子、Prewitt 算子;一种是 以二阶导数为基础的边缘检测算子,通过寻求二阶导数中的过零点来检测边缘, 如:Laplacian 算子、LOG 算子、Canny 算子。
2 f ( x, y )
2 f ( x, y ) 2 f ( x, y ) x 2 y 2
(2-10)
使用差分方程对x 和y 方向上的二阶偏导数近似如下。
2 f Gx ( f (i, j 1) f (i, j )) f (i, j 1) f (i, j ) x 2 x x x x f (i, j 2) 2 f (i, j 1) f (i, j )
s x { f ( x 1, y 1) 2 f ( x 1, y ) f ( x 1, y 1)} { f ( x 1, y 1) 2 f ( x 1, y ) f ( x 1, y 1)} s y { f ( x 1, y 1) 2 f ( x, y 1) f ( x 1, y 1)} { f ( x 1, y 1) 2 f ( x, y 1) f ( x 1, y 1)}
图像的边缘检测实验报告

图像的边缘检测实验报告
《图像的边缘检测实验报告》
图像的边缘检测是计算机视觉领域中的重要技术之一,它可以帮助我们识别图
像中物体的边缘和轮廓,从而实现图像分割、特征提取和目标识别等应用。
在
本次实验中,我们将对几种常用的边缘检测算法进行比较和分析,以评估它们
在不同场景下的性能和适用性。
首先,我们使用了Sobel算子进行边缘检测。
Sobel算子是一种基于梯度的边缘检测方法,它通过对图像进行卷积操作来寻找像素值变化最大的地方,从而找
到图像中的边缘。
实验结果显示,Sobel算子在一些简单场景下表现良好,但
在复杂背景和噪声干扰较大的情况下效果不佳。
接着,我们尝试了Canny边缘检测算法。
Canny算法是一种多阶段的边缘检测
方法,它通过对图像进行高斯滤波、计算梯度、非极大值抑制和双阈值处理等
步骤来检测图像中的边缘。
实验结果显示,Canny算法在复杂场景下表现出色,能够有效地抑制噪声并找到图像中的真实边缘。
最后,我们还尝试了Laplacian算子和Prewitt算子等其他边缘检测算法,并对
它们的性能进行了比较和分析。
实验结果显示,不同的边缘检测算法在不同场
景下表现出各自的优势和劣势,需要根据具体的应用需求来选择合适的算法。
总的来说,本次实验对图像的边缘检测算法进行了全面的比较和分析,为我们
进一步深入理解和应用这些算法提供了重要的参考和指导。
希望通过这些实验
结果,我们能够更好地利用边缘检测技术来解决实际的图像处理问题,为计算
机视觉领域的发展做出更大的贡献。
关于图形图像处理实训报告总结【九篇】

关于图形图像处理实训报告总结【九篇】实训报告总结:图形图像处理实训图形图像处理实训是计算机科学与技术专业的基础课程之一。
通过本次实训课程,我深入了解了图形图像处理的基本概念、方法和技术,并通过实际操作来提升了自己的实践能力。
下面是对本次实训的九篇报告总结:1. 实验一:图像读取与显示本次实验主要是学习如何读取和显示图像,以及使用Matplotlib库进行图像展示。
通过实验,我掌握了图像读取和显示的基本方法,并学会了基本的图像处理操作。
2. 实验二:图像的灰度变换实验二主要是学习图像的灰度变换,包括线性变换和非线性变换。
我学会了如何使用不同的灰度变换函数来调整图像的亮度和对比度,进一步提升图像的质量。
3. 实验三:图像的空间域滤波本次实验主要是学习图像的空间域滤波技术,包括均值滤波、中值滤波和高斯滤波等。
通过实验,我掌握了不同滤波方法的原理和实现方式,并学会了如何选择合适的滤波方法来降噪和模糊图像。
4. 实验四:图像的频域滤波实验四主要是学习图像的频域滤波技术,包括傅里叶变换和频域滤波等。
通过实验,我了解了傅里叶变换的原理和应用,并学会了如何使用频域滤波来实现图像的锐化和平滑。
5. 实验五:图像的形态学处理本次实验主要是学习图像的形态学处理技术,包括腐蚀、膨胀、开运算和闭运算等。
通过实验,我学会了如何使用形态学操作来改变图像的形状和结构,进一步改善图像的质量。
6. 实验六:图像的边缘检测实验六主要是学习图像的边缘检测技术,包括Sobel算子、Laplacian算子和Canny算子等。
通过实验,我了解了不同边缘检测方法的原理和应用,并学会了如何使用边缘检测来提取图像的轮廓和特征。
7. 实验七:图像的分割与聚类本次实验主要是学习图像的分割与聚类技术,包括阈值分割、区域生长和K均值聚类等。
通过实验,我掌握了不同分割与聚类方法的原理和应用,并学会了如何使用分割与聚类来识别和分析图像中的目标和区域。
8. 实验八:图像的特征提取与描述子实验八主要是学习图像的特征提取和描述子技术,包括尺度不变特征变换(SIFT)和方向梯度直方图(HOG)等。
图像的边缘检测(实验报告)

数字信号处理实验图像的边缘检测图像的边缘检测一,原理本实验主要是对图像的边缘进行提取,通过对边缘的分析来分析图像的特征。
首先,了解一些术语的定义:边缘点:图像中具有坐标[i,j]且处在强度显著变化的位置上的点。
边缘段:对应于边缘点坐标[i,j]及其方位 ,边缘的方位可能是梯度角。
边缘检测器:从图像中提取边缘(边缘点和边缘段)集合的算法。
轮廓:边缘列表,或者是一条表示边缘列表的拟合曲线。
边缘连接:从无序边缘表形成有序边缘表的过程,习惯上,边缘表的表示采用顺时针方向来排序。
边缘跟踪:一个用来确定轮廓的图像(指滤波后的图像)搜索过程。
边缘就是图像中包含的对象的边界所对应的位置。
物体的边缘以图像局部特性的不连续性的形式出现的,例如,灰度值的突变,颜色的突变,纹理结构的突变等。
从本质上说,边缘就意味着一个区域的终结和另外一个区域的开始。
图像边缘信息在图像分析和人的视觉中十分重要,是图像识别中提取图像特征的一个重要属性。
边缘检测(edge detection)在图像处理和对象识别领域中都是一个重要的基本问题。
由于边缘的灰度不连续性,可以使用求导数的方法检测到。
最早的边缘检测方法都是基于像素的数值导数的运算。
本实验主要是对图像依次进行Sobel算子,Prewitt算子,Roberts算子,Laplace算子和Canny算子运算,比较处理结果。
边缘检测有三个共性准则,1,好的检测结果,或者说对边缘的误测率尽可能低,就是在图像边缘出现的地方检测结果中不应该没有;另一方面不要出现虚假的边缘。
2,对边缘的定位要准确,也就是我们标记出的边缘位置要和图像上真正边缘的中心位置充分接近。
3,对同一边缘要有尽可能低的响应次数,也就是检测响应最好是单像素的。
二,对图像进行各种算子运算本实验中主要是对图像依次进行Sobel算子,Prewitt算子,Roberts算子,Laplace算子和Canny 算子运算。
由于MATLAB对彩色图像不能进行分析。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二、灰度图像边缘检测
一、实验目的
1.掌握各种边缘检测算子的概念及原理。
2.掌握各种边缘检测算子的算法。
3.掌握各种边缘检测算子matlab实现的编制方法。
4.启发学生依据边缘特征进行图像分析与识别,提高学生图像处理与分析能力和实际动手能力。
二、实验原理
基于算子模板的卷积过程,比如有一张8x8的图片,像素矩阵如下:
又有一个3x3的算子模板矩阵如下:
整个模板卷积过程就是用模板覆盖在像素矩阵上,重新计算像素值并移
动的过程。
如下图即为模板盖住左上角的示例。
计算方式为模板单元格的值与被模板覆盖的图像子矩阵的值分别相乘并和并把结果放在模板中央单元格所对应的图像矩阵单元格中。
上图模板中央对应单元格的值应为:
12*0+23*(-1)+52*0+12*(-1)+0*4+0*(-1)+56*0+45*(-1)+47*0=-80。
各算子模板如下:
1. Roberts 算子
10010110⎡⎤⎡⎤⎢⎥⎢⎥--⎣⎦⎣⎦ 2. 拉普拉斯边缘算子
010111141181010111⎡⎤⎡⎤⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦
3. Kirsch 边缘算子
33535555555330530530350333533333333304590135----⎡⎤⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥-----⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-----------⎣⎦⎣⎦⎣⎦⎣⎦
︒︒︒︒ 533333333333503503303305533553555355180225270315-----------⎡⎤⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥-----⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥----⎣⎦⎣⎦⎣⎦⎣⎦
︒
︒
︒
︒
4. 高斯-拉普拉斯算子
-2-4-4-4-2-4080-4-48248-4-4080-4-2-4-4-4
-2⎡⎤
⎢⎥⎢
⎥⎢⎥⎢
⎥⎢⎥⎢⎥⎣⎦
5. Prewitt 边缘算子
101111101000101111----⎡⎤
⎡⎤
⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦
⎣⎦
6. Sobel 算子
三、实验仪器和设备
PC 机1台,原始灰度图像文件,matlab 编程软件
四、预习要求
1.复习matlab编程软件的使用方法;
2.复习数字图像处理的一些相关知识;
3.复习数字图像边缘检测的基本原理;
4.学习在matlab中如何进行图像的边缘检测。
五、实验内容
1.编程实现以下六种图像边缘检测算子。
(1)Roberts边缘算子;(2)Sobel边缘算子
(3)Prewitt边缘算子;(4)拉普拉斯边缘算子
(5)Kirsch边缘算子;(6)高斯-拉普拉斯边缘算子
2.根据检测结果,分析与比较各种边缘检测算法的主要区别。
答:用各种边缘检测算子对一幅图像进行边缘检测,其结果如图2所示。
从检测的结果来看,Roberts边缘算子提取边缘的结果边缘较粗,边缘定位不很准确,Sobel边缘算子,Prewitt边缘算子对边缘的定位就准确了一些,Kirsch边缘算子比Sobel边缘算子,Prewitt边缘算子和拉普拉斯边缘算子定位更准确而采用高斯-拉普拉斯边缘算子进行边缘提取的结果要明显优于前4 种算子,特别是边缘比较完整,位置比较准确。
六、实验代码及结果
clear all
I=imread('D:\jiaojie20130814001.jpg');
I1=im2double(I);
I2=rgb2gray(I1);
[thr, sorh, keepapp]=ddencmp('den','wv',I2);
I3=wdencmp('gbl',I2,'sym4',2,thr,sorh,keepapp); I4=medfilt2(I3,[9 9]);
I5=imresize(I4,0.2,'bicubic');
BW1=edge(I5,'sobel');
BW2=edge(I5,'roberts');
BW3=edge(I5,'log');
BW4=edge(I5,'prewitt');
BW5=edge(I5,'sobel');
BW6=edge(I5,'l');
h=fspecial('gaussian',5);
subplot(2,4,1);
imshow(I1);
title('原图');
subplot(2,4,2);
imshow(I2);
title('灰度图');
subplot(2,4,3);
imshow(BW1);
title('Sobel边缘算子');
subplot(2,4,4);
imshow(BW2);
title('Roberts边缘算子');
subplot(2,4,5);
imshow(BW3);
title('高斯-拉普拉斯边缘算子'); subplot(2,4,6);
imshow(BW4);
title('Prewitt边缘算子'); subplot(2,4,7);
imshow(BW5);
title('kirsch边缘算子'); subplot(2,4,8);
imshow(BW6);
title('拉普拉斯边缘算子');
实验结果。