OpenCV图像滤波(7)cv::getDerivKernels() 函数的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

函数返回用于计算空间图像导数的滤波系数。

该函数计算并返回用于空间图像导数的滤波系数。当 ksize=FILTER_SCHARR 时,生成 Scharr 3x3 核(参见 Scharr)。否则,生成 Sobel 核(参见 Sobel)。这些滤波器通常传递给 sepFilter2D 或其他函数。

这些系数可以用于计算图像的梯度,这对于边缘检测和其他基于梯度的图像处理任务非常重要。

函数原型

cpp 复制代码
void cv::getDerivKernels	
(
	OutputArray 	kx,
	OutputArray 	ky,
	int 	dx,
	int 	dy,
	int 	ksize,
	bool 	normalize = false,
	int 	ktype = CV_32F 
)		

参数

  • 参数kx 输出矩阵,包含行滤波系数。其类型为 ktype。
  • 参数ky 输出矩阵,包含列滤波系数。其类型为 ktype。
  • 参数dx 关于 x 的导数阶数。
  • 参数dy 关于 y 的导数阶数。
  • 参数ksize 孔径大小。它可以是 FILTER_SCHARR、1、3、5 或 7
  • 参数normalize 标志,指示是否归一化(缩放)滤波系数。理论上,系数应该具有分母 =2 * ksize^2 - dx - dy - 2。如果你打算过滤浮点图像,你可能会使用归一化的内核。但是,如果你计算 8 位图像的导数,将结果存储在 16 位图像中,并希望保留所有的小数位,你可能想要设置 normalize=false。
  • 参数ktype 这是指滤波系数的数据类型。它可以是 CV_32F(32 位浮点数)或 CV_64F(64 位浮点数)。

示例代码

cpp 复制代码
#include <iostream>
#include <opencv2/opencv.hpp>

int main( int argc, char** argv )
{
    // 读取图像
    cv::Mat src = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/erik.jpg", cv::IMREAD_GRAYSCALE );

    if ( src.empty() )
    {
        std::cout << "Error: Image cannot be loaded!" << std::endl;
        return -1;
    }
    cv::Size sz2Sh( 400, 600 );

    cv::resize( src, src, sz2Sh, 0, 0, cv::INTER_LINEAR_EXACT );

    imshow( "原图", src );

    cv::Mat dst;

    cv::Mat kx, ky;
    cv::getDerivKernels( kx, ky, 1, 0, 3, false );
    cv::sepFilter2D( src, dst, src.depth(), kx, ky );
    imshow( "sepFilter2D", dst );

    cv::waitKey( 0 );
    return 0;
}

运行结果

参数是cv::getDerivKernels( kx, ky, 1, 0, 3, false )时:

参数是cv::getDerivKernels( kx, ky, 1, 0, 5, false )时:

相关推荐
CareyWYR7 分钟前
每周AI论文速递(260323-260327)
人工智能
guoji778829 分钟前
安全与对齐的深层博弈:Gemini 3.1 Pro 安全护栏与对抗测试深度拆解
人工智能·安全
实在智能RPA37 分钟前
实在 Agent 和通用大模型有什么不一样?深度拆解 AI Agent 的感知、决策与执行逻辑
人工智能·ai
独隅42 分钟前
PyTorch 模型部署的 Docker 配置与性能调优深入指南
人工智能·pytorch·docker
lihuayong1 小时前
OpenClaw 系统提示词
人工智能·prompt·提示词·openclaw
黑客说1 小时前
AI驱动剧情,解锁无限可能——AI游戏发展解析
人工智能·游戏
踩着两条虫1 小时前
AI驱动的Vue3应用开发平台深入探究(十):物料系统之内置组件库
android·前端·vue.js·人工智能·低代码·系统架构·rxjava
小仙女的小稀罕1 小时前
听不清重要会议录音急疯?这款常见AI工具听脑AI精准转译
开发语言·人工智能·python
reesn1 小时前
qwen3.5 0.8B纠正任务实践
人工智能·语言模型