延边朝鲜族自治州网站建设_网站建设公司_后端工程师_seo优化
2025/12/28 1:18:41
网站建设
项目流程
图像梯度
图像梯度是用于描述图像中像素值变化的方向和强度的概念。它类似于数学中的一阶导数,用于检
测图像中的显著变化区域,这些区域通常对应于图像的边缘。
图像是离散的,无法直接应用连续函数的导数,而是通过差分来近似计算梯度。
边缘区域通常具有较大的梯度值,而平滑区域的梯度值较小。通过比较相邻像素的差值,可以有效
地识别出图像中的边缘。
如果该列的右侧像素值与左侧像素值的差值较大,那么这表示该列处于边界位置。
对于平滑区域,由于左右两侧的像素值差异不大,因此差值接近于零,表示这些区域不包含边界。
类似地,在垂直方向上,也可以通过比较上下像素值的差异来识别图像的边缘。
边缘提取
滤波是应用卷积来实现的,卷积的关键就是 卷积核 。
void filter2D ( InputArray src ,
OutputArray dst ,
int ddepth ,
InputArray kernel ,
Point anchor = Point ( - 1 , - 1 ),
double delta = 0 ,
int borderType = BORDER_DEFAULT
);
src :输入图像,通常是一个二维的矩阵(如灰度图或彩色图)。
dst :输出图像,其数据类型由参数 ddepth 决定。
ddepth :表示目标图像的所需深度。常见的值 -1 :表示输出图像的深度与输入图像相同。
kernel :卷积核(或相当于相关核),是一个自定义的矩阵。
其他采用默认值。
Sobel 算子
Sobel 算子通过两个方向上的卷积核来计算图像的梯度: 水平方向 和 垂直方向 。
void Sobel ( InputArray src ,
OutputArray dst,
int ddepth ,
int dx ,
int dy ,
int ksize = 3 ,
double scale = 1 ,
double delta = 0 ,
int borderType = BORDER_DEFAULT
);
src :输入图像,支持单通道或多通道图像。
dst :输出图像,存储 Sobel 滤波器处理后的结果。
ddepth :指定输出图像的深度,通常设为 - 1 表示与输入图像深度相同。
dx, dy :指定求导的方向。 dx=1, dy=0 计算水平方向的导数, dx=0, dy=1 计算垂直方向的导数。
ksize :指定 Sobel 算子的大小,通常选择 3 、 5 或 7 。
scale :可选缩放系数,用于调整 导数值 的范围。默认值为 1 ,表示不缩放。
在 OpenCV 中,使用函数 convertScaleAbs() 对参数取绝对值。
void convertScaleAbs ( InputArray src ,
OutputArray dst ,
double alpha = 1 ,
double beta = 0
);
dst :处理后的图像的 输出结果。
src :输入的原始图像。
alpha :比例系数,默认值为 1
beta :亮度值的调节,默认值为 0
Laplacian 算子
Laplacian( 拉普拉斯 ) 算子是一种二阶导数算 子 ,其具有 旋转不变性 ,可以满足不同方向的图像边缘锐化 ( 边缘检测 ) 的要求。
Laplacian 算子类似二阶 Sobel 导数,需要计算两个方向的梯度值。
void Laplacian (
InputArray src ,
OutputArray dst ,
int ddepth ,
int ksize = 1 ,
double scale = 1 ,
double delta = 0 ,
int borderType = BORDER_DEFAULT
);
ddepth :表示目标图像的所需深度。
ksize :默认情况下, ksize 为 1 。当 ksize 的值为 1 时 ,Laplacian 算子计算时采用的 3x3 的核。