OpenCV 笔记一:微分、梯度,Sobel、角点及Sift特征点

题记:发现之前写的代码很多都不知道放在哪里了,时间长了看过的东西,写的代码也就忘了。有一种忙了好一阵子却没什么收获的感觉,因此从今天开始把学习到的东西都整理下来,先CSDN,有成熟的项目代码后在放到Github上。

一、微分、梯度

              数学函数的微分可以有不同术语的定义,但任何定义都必须保证以下几点:

一阶微分:

1、在平坦段(灰度不变的区域),微分值为0

2、在灰度阶梯或斜坡的起始点处微分值非0

3、沿着斜坡面微分值非0

图像是离散的数字量,其值有限,故最大的灰度阶的变化也是有限的,变化发生的最短距离是相邻像素之间。

因此一阶微分可如下定义:

 

 

二阶微分可如下定义:

计算机生成了可选文字:: 丆 0 以 . ) 八 一 I) 27 ( 以

在图像处理中,一阶微分是通过梯度法来实现的。对于函数 在(x,y)上的梯度是通过一个二维列向量来定义的:

计算机生成了可选文字:

向量模值:

计算机生成了可选文字:VI: mag( ) = [ + 卩 一 豇 + 凹 勹

一般,我们把梯度向量的模值简称为梯度。同时在实际操作中,常用绝对值代替平方与开放的运算求解近似梯度的模值。

二、Sobel

 

用来表达微分最常用的操作是Sobel 微分算子,Sobel算子包含任意阶的微分及融合偏导。

该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。分别代表经横向及纵向边缘检测的图像,其公式如下:

\mathbf{G_x} = \begin{bmatrix} -1 & 0 & +1 \\-2 & 0 & +2 \\-1 & 0 & +1 \end{bmatrix} * \mathbf{A}\quad \mbox{and} \quad \mathbf{G_y} = \begin{bmatrix} -1 & -2 & -1 \\0 & 0 & 0 \\+1 & +2 & +1 \end{bmatrix} * \mathbf{A}

 

使用权重2的思想是,通过突出中心点的作用而达到平滑的目的。

来自 <http://zh.wikipedia.org/wiki/%E7%B4%A2%E8%B2%9D%E7%88%BE%E7%AE%97%E5%AD%90>

 

OpenCV中其Sobel函数定义如下:

C++:

void Sobel(InputArraysrc, OutputArray dst, int ddepth,  // 输入输出图像,图像深度应按下图对应

 int dx,   //x方向导数

 int dy,   //y方向导数

 int ksize=3, double scale=1,

double delta=0, intborderType=BORDER_DEFAULT )

 

计算机生成了可选文字:S rC . S rC . S rC . S rC . depth() depth() depth() depth() 一 CV 一 CV 一 CV 一 CV 8U , ddepth 16U / 〔 V 16S , 32F , ddepth 64F , ddepth 1 / 〔 V 一 16S / 〔 V 32F / 〔 V 64F ddepth 1 / 〔 V 1 / 〔 V 1 / 〔 V 一 32 F/CV 64F 32F / 〔 V 一 64F 64F

 

 

Sobel(img, sobel

Img, -1, 1, 0);     //对横向(X)求导数,保留纵向边缘

 

计算机生成了可选文字:g05 引

 

Sobel(img, sobelImg, -1,0,1);     // 对纵向(Y)求导,保留横向边缘

计算机生成了可选文字:以

 

 

三、角点

       图像上如果一个点在两个正交方向上都有明显的倒数,则我们认为此点更倾向于是独一无二的,所以,许多可追踪的特征点都成为角点

       最普遍使用的角点定义是有Harris提出的。定义的基础是图像灰度强度的二阶导数()矩阵。

OpenCV 角点检测函数如下:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值