政务网站开发高师本科化学实验教学体系建设与创新型人才培养 教学成果奖申报网站
- 作者: 五速梦信息网
- 时间: 2026年04月20日 03:44
当前位置: 首页 > news >正文
政务网站开发,高师本科化学实验教学体系建设与创新型人才培养 教学成果奖申报网站,网站如何做微信推广方案设计,免费网站建设创意数字图像处理(19): 边缘检测算子(Roberts算子、Prewitt算子、Sobel算子 和 Laplacian算子) 数字图像处理(20): 边缘检测算子(Canny算子) 1.边缘检测介绍 1.1 边缘检测的基本原理 边缘是图像的基本特征#xff0c;所谓的边缘就是指的图像的局部不连续性。灰度或者结构等信息的…数字图像处理(19): 边缘检测算子(Roberts算子、Prewitt算子、Sobel算子 和 Laplacian算子) 数字图像处理(20): 边缘检测算子(Canny算子) 1.边缘检测介绍 1.1 边缘检测的基本原理 边缘是图像的基本特征所谓的边缘就是指的图像的局部不连续性。灰度或者结构等信息的突变之处称之为边缘。如灰度级的突变、颜色的突变、纹理结构的突变等。边缘是一个区域的结束也是另一个区域的开始利用该特征可以分割图像。 图像的边缘有方向和幅度两种特性边缘通常可以通过一阶导数或二阶导数检测得到。一阶导数是以最大值作为对应边缘的位置而二阶导数则以过零点作为对应边缘的位置。 边缘检测是一种常用的图像分割技术常用的边缘检测算子有Roberts Cross算子、Prewitt算子、Sobel算子、Kirsch算子、Laplacian算子以及Canny算子。 1.2 边缘检测算子分类 1一阶导数的边缘算子 通过模版作为卷积核与图像的每个像素点做卷积运算然后选择合适的阈值来提取图像的边缘。常用的有Roberts算子、Sobel算子和Prewitt算子。 2二阶导数的边缘算子 依据与二阶导数过零点常见的有Laplacian算子此类算子对噪声敏感。 3其他边缘算子 前面两类算子均通过微分来检测图像边缘还有一种就是Canny算子其就是在满足一定约束条件下推到出来的边缘检测最优化算子。 1.3 梯度 1.3.1 图像梯度 为了达到寻找边缘的目的检测灰度变化可用一阶导数或者二阶导数来完成。下面讨论一阶导数。 为了在一副图像 f f f的 ( x , y ) (x,y) (x,y)位置处寻找边缘的强度和方向所选择的工具就是梯度梯度用 ∇ f \nabla f ∇f来表示并用向量来定义定义如下所示 ∇ f g r a d ( f ) [ g x g y ] ∂ f ∂ x ∂ f ∂ x \nabla fgrad(f)\begin{bmatrix}g_x \g_y \end{bmatrix}\begin{bmatrix}\frac{\partial f}{\partial x} \ \ \frac{\partial f}{\partial x} \end{bmatrix}\tag{1} ∇fgrad(f)[gxgy] ∂x∂f∂x∂f (1) 其中梯度 ∇ f \nabla f ∇f为一个向量他表示 f f f在位置 ( x , y ) (x,y) (x,y)处的最大变化率的方向。 梯度的大小用 M ( x , y ) M(x,y) M(x,y)表示则 M ( x , y ) m a g ( ∇ f ) g x 2 y y 2 (2) M(x,y)mag(\nabla f)\sqrt{g_x^2y_y^2}\tag{2} M(x,y)mag(∇f)gx2yy2 (2) 其中 M ( x , y ) M(x,y) M(x,y)表示梯度向量方向变化率的值。 数学梯度的简单推导 对于以函数 f ( x ) f(x) f(x)在点 x x x处的导数近似将函数 f ( x Δ x ) f(x\Delta x) f(xΔx)展开为 x x x的泰勒级数令 Δ x 1 \Delta x1 Δx1且只保留该级数的线性项则函数 f ( x ) f(x) f(x)的梯度 ∇ f \nabla f ∇f计算为 ∇ f ∂ f ∂ x f ′ ( x ) f ( x 1 ) − f ( x ) (3) \nabla f \frac{\partial f}{\partial x}f^{}(x)f(x1)-f(x) \tag{3} ∇f∂x∂ff′(x)f(x1)−f(x)(3) 1.3.2 梯度算子 由上面的数学推导可知要得到一副图像的梯度则要求图像的每一个像素点位置处计算偏导数。我们处理的是数字量因此需要求关于一点的邻域上的偏导数的数字近似因此一副图像 f f f在 ( x , y ) (x,y) (x,y)位置处的 x x x和 y y y方向上的梯度大小 g x g_x gx和 g y g_y gy分别计算为 g x ∂ f ( x , y ) ∂ x f ( x 1 , y ) − f ( x , y ) g y ∂ f ( x , y ) ∂ x f ( x , y 1 ) − f ( x , y ) (4) \begin{array}{c}g_x\frac{\partial f(x,y)}{\partial x}f(x1,y)-f(x,y) \ \g_y\frac{\partial f(x,y)}{\partial x}f(x,y1)-f(x,y)\end{array}\tag{4} gx∂x∂f(x,y)f(x1,y)−f(x,y)gy∂x∂f(x,y)f(x,y1)−f(x,y)(4) 上述公式对所有 x x x和 y y y的有关值可用下图的一维模版对 f ( x , y ) f(x,y) f(x,y)的滤波得到。 用于计算梯度偏导数的滤波器模版通常称之为梯度算子、边缘算子和边缘检测算子等。 对于不同的滤波器模版得到的梯度是不同的这也就衍生出了很多算子如Roberts、Prewitt、Sobel和Laplacian算子等。下面将详细介绍不同的算子。 2 Roberts算子 3 Prewitt算子 4 Sobel算子 4.1 基本原理 Sobel算子是一种用于边缘检测的离散微分算子他结合了高斯平滑和微分求导。该算子用于计算图像明暗程度近似值根据图像边缘旁边明暗程度把该区域内超过某个数的特定点记为边缘。Sobel算子再Prewitt算子的基础上增加了权重的概念认为相邻点的距离远近对当前像素点的影响是不同的距离越近的点影响越大从而实现图像锐化并突出边缘轮廓。 Sobel算子根据像素点上下、左右邻点灰度的加权差在边缘达到极值这一现象检测边缘。对噪音具有平滑作用提供较为准确的边缘信息。因为Soble算子结合了高斯平滑和微分求导分化因此结果会具有较多的抗噪性当对精度要求不高时Sobel算子是一种较为常用的边缘检测算法。 Soble算子的边缘定位更为准确常用于噪声较多、灰度渐变的图像。其算法模板如下面的公式所示其中 d x d_x dx表示水平方向 d y d_y dy表示垂直方向。 d x [ − 1 0 1 − 2 0 2 − 1 0 1 ] d y − 1 − 2 − 1 0 0 0 1 2 1 d_x\begin{bmatrix}-1 0 1 \-2 0 2\ -1 01 \end{bmatrix}\qquad d_y\begin{bmatrix}-1 -2 -1 \0 0 0\ 1 21 \end{bmatrix}\tag{4} dx −1−2−1000121 dy −101−202−101 (4) 例如下面给出Sobel算子的模板在像素点P5处 x x x和 y y y方向上的梯度大小 g x g_x gx和 g y g_y gy分别计算为 g x ∂ f ( x , y ) ∂ x ( P 7 2 P 8 P 9 ) − ( P 1 2 P 2 P 3 ) g y ∂ f ( x , y ) ∂ x ( P 3 2 P 6 P 9 ) − ( P 1 2 P 4 P 7 ) (4) \begin{array}{c}g_x\frac{\partial f(x,y)}{\partial x}(P72P8P9)-(P12P2P3) \ \g_y\frac{\partial f(x,y)}{\partial x}(P32P6P9)-(P12P4P7)\end{array}\tag{4} gx∂x∂f(x,y)(P72P8P9)−(P12P2P3)gy∂x∂f(x,y)(P32P6P9)−(P12P4P7)(4) 图像中的每一个像素的横向以及纵向灰度值通过以下公式结合来计算该点的灰度值大小 G G x 2 G y 2 G\sqrt{G_x^2G_y^2} GGx2Gy2 通常为了提高效率使用不开平方的近似值但是这样做会损失精度迫不得已的时候可以如下这样子 G ∣ G x ∣ ∣ G y ∣ G\mid{G_x}\mid \mid G_y\mid G∣Gx∣∣Gy∣ 如果梯度G大于某一阈值则认为该点 ( x , y ) (x,y) (x,y)为边缘点。 4.2 Sobel边缘检测的FPGA实现 4.3 Sobel边缘检测的MATLAB算法实现与验证 clc; clear all ; GRAY imread(../img/1920X1080_gray.bmp); [row,col] size(GRAY); sobel_result zeros(row,col); sobel_padding zeros(row2,col2);x_mod [-1,0,1;-2,0,2;-1,0,1]; y_mod [-1,-2,-1;0,0,0;1,2,1];for i 1:rowfor j 1:colsobel_padding(i1,j1) GRAY(i,j);end endfor i 1:row2sobel_padding(i,1) sobel_padding(i,2);sobel_padding(i,col2) sobel_padding(i,col1); endfor i 1:col2sobel_padding(1,i) sobel_padding(2,i);sobel_padding(row2,i) sobel_padding(row1,i); endfor i 2:row1for j 2:col1matrix11 sobel_padding(i-1,j-1);matrix12 sobel_padding(i-1,j);matrix13 sobel_padding(i-1,j1);matrix21 sobel_padding(i,j-1);matrix22 sobel_padding(i,j);matrix23 sobel_padding(i,j1);matrix31 sobel_padding(i1,j-1);matrix32 sobel_padding(i1,j);matrix33 sobel_padding(i1,j1);matrix [matrix11,matrix12,matrix13;matrix21,matrix22,matrix23;matrix31,matrix32,matrix33];x_mult matrix.* x_mod;y_mult matrix.* y_mod;gx1 sum(sum(x_mult()));gy1 sum(sum(x_mult()));gx2 gx1*gx1;gy2 gy1*gy1;sobel_result(i-1,j-1) sqrt(gx2gy2);end end subplot(1,2,1) matlab_Y uint8(floor(sobel_result)); imshow(matlab_Y),title(MATLAB Sobel算法图像); subplot(1,2,2) imshow(GRAY),title(原图像);5 Laplacian算子 6 Canny算子 7 小结
- 上一篇: 政务网站建设模块电脑商城
- 下一篇: 政务网站源码昆明驿站网站建设
