1. 一阶差分:

2. 二阶偏导数的推导和近似:

3. 上式以点(i+1,j)为中心,用i代换i+1可得以(i,j)为中心的二阶偏导数则有:

4. 同理:

5. 进而可推导:

6. 这样我们就可以很好的运用其他的一阶偏导的定义,如SIFT特征OpenCV实现版本中的一阶以及二阶偏导:

[cpp] view plaincopyprint?
  1. /*
  2. Computes the partial derivatives in x, y, and scale of a pixel in the DoG
  3. scale space pyramid.
  4. @param dog_pyr DoG scale space pyramid
  5. @param octv pixel's octave in dog_pyr
  6. @param intvl pixel's interval in octv
  7. @param r pixel's image row
  8. @param c pixel's image col
  9. @return Returns the vector of partial derivatives for pixel I
  10. { dI/dx, dI/dy, dI/ds }^T as a CvMat*
  11. */
  12. static CvMat* deriv_3D( IplImage*** dog_pyr, int octv, int intvl, int r, int c )
  13. {
  14. CvMat* dI;
  15. double dx, dy, ds;
  16. dx = ( pixval32f( dog_pyr[octv][intvl], r, c+1 ) -
  17. pixval32f( dog_pyr[octv][intvl], r, c-1 ) ) / 2.0;
  18. dy = ( pixval32f( dog_pyr[octv][intvl], r+1, c ) -
  19. pixval32f( dog_pyr[octv][intvl], r-1, c ) ) / 2.0;
  20. ds = ( pixval32f( dog_pyr[octv][intvl+1], r, c ) -
  21. pixval32f( dog_pyr[octv][intvl-1], r, c ) ) / 2.0;
  22. dI = cvCreateMat( 3, 1, CV_64FC1 );
  23. cvmSet( dI, 0, 0, dx );
  24. cvmSet( dI, 1, 0, dy );
  25. cvmSet( dI, 2, 0, ds );
  26. return dI;
  27. }
  28. /*
  29. Computes the 3D Hessian matrix for a pixel in the DoG scale space pyramid.
  30. @param dog_pyr DoG scale space pyramid
  31. @param octv pixel's octave in dog_pyr
  32. @param intvl pixel's interval in octv
  33. @param r pixel's image row
  34. @param c pixel's image col
  35. @return Returns the Hessian matrix (below) for pixel I as a CvMat*
  36. / Ixx  Ixy  Ixs / <BR>
  37. | Ixy  Iyy  Iys | <BR>
  38. / Ixs  Iys  Iss /
  39. */
  40. static CvMat* hessian_3D( IplImage*** dog_pyr, int octv, int intvl, int r, int c )
  41. {
  42. CvMat* H;
  43. double v, dxx, dyy, dss, dxy, dxs, dys;
  44. v = pixval32f( dog_pyr[octv][intvl], r, c );
  45. dxx = ( pixval32f( dog_pyr[octv][intvl], r, c+1 ) +
  46. pixval32f( dog_pyr[octv][intvl], r, c-1 ) - 2 * v );
  47. dyy = ( pixval32f( dog_pyr[octv][intvl], r+1, c ) +
  48. pixval32f( dog_pyr[octv][intvl], r-1, c ) - 2 * v );
  49. dss = ( pixval32f( dog_pyr[octv][intvl+1], r, c ) +
  50. pixval32f( dog_pyr[octv][intvl-1], r, c ) - 2 * v );
  51. dxy = ( pixval32f( dog_pyr[octv][intvl], r+1, c+1 ) -
  52. pixval32f( dog_pyr[octv][intvl], r+1, c-1 ) -
  53. pixval32f( dog_pyr[octv][intvl], r-1, c+1 ) +
  54. pixval32f( dog_pyr[octv][intvl], r-1, c-1 ) ) / 4.0;
  55. dxs = ( pixval32f( dog_pyr[octv][intvl+1], r, c+1 ) -
  56. pixval32f( dog_pyr[octv][intvl+1], r, c-1 ) -
  57. pixval32f( dog_pyr[octv][intvl-1], r, c+1 ) +
  58. pixval32f( dog_pyr[octv][intvl-1], r, c-1 ) ) / 4.0;
  59. dys = ( pixval32f( dog_pyr[octv][intvl+1], r+1, c ) -
  60. pixval32f( dog_pyr[octv][intvl+1], r-1, c ) -
  61. pixval32f( dog_pyr[octv][intvl-1], r+1, c ) +
  62. pixval32f( dog_pyr[octv][intvl-1], r-1, c ) ) / 4.0;
  63. H = cvCreateMat( 3, 3, CV_64FC1 );
  64. cvmSet( H, 0, 0, dxx );
  65. cvmSet( H, 0, 1, dxy );
  66. cvmSet( H, 0, 2, dxs );
  67. cvmSet( H, 1, 0, dxy );
  68. cvmSet( H, 1, 1, dyy );
  69. cvmSet( H, 1, 2, dys );
  70. cvmSet( H, 2, 0, dxs );
  71. cvmSet( H, 2, 1, dys );
  72. cvmSet( H, 2, 2, dss );
  73. return H;
  74. }

/* Computes the partial derivatives in x, y, and scale of a pixel in the DoG scale space pyramid.@param dog_pyr DoG scale space pyramid @param octv pixel's octave in dog_pyr @param intvl pixel's interval in octv @param r pixel's image row @param c pixel's image col@return Returns the vector of partial derivatives for pixel I{ dI/dx, dI/dy, dI/ds }^T as a CvMat* */ static CvMat* deriv_3D( IplImage*** dog_pyr, int octv, int intvl, int r, int c ) {CvMat* dI;double dx, dy, ds;dx = ( pixval32f( dog_pyr[octv][intvl], r, c+1 ) -pixval32f( dog_pyr[octv][intvl], r, c-1 ) ) / 2.0;dy = ( pixval32f( dog_pyr[octv][intvl], r+1, c ) -pixval32f( dog_pyr[octv][intvl], r-1, c ) ) / 2.0;ds = ( pixval32f( dog_pyr[octv][intvl+1], r, c ) -pixval32f( dog_pyr[octv][intvl-1], r, c ) ) / 2.0;dI = cvCreateMat( 3, 1, CV_64FC1 );cvmSet( dI, 0, 0, dx );cvmSet( dI, 1, 0, dy );cvmSet( dI, 2, 0, ds );return dI; }/* Computes the 3D Hessian matrix for a pixel in the DoG scale space pyramid.@param dog_pyr DoG scale space pyramid @param octv pixel's octave in dog_pyr @param intvl pixel's interval in octv @param r pixel's image row @param c pixel's image col@return Returns the Hessian matrix (below) for pixel I as a CvMat*/ Ixx Ixy Ixs / <BR>| Ixy Iyy Iys | <BR>/ Ixs Iys Iss / */ static CvMat* hessian_3D( IplImage*** dog_pyr, int octv, int intvl, int r, int c ) {CvMat* H;double v, dxx, dyy, dss, dxy, dxs, dys;v = pixval32f( dog_pyr[octv][intvl], r, c );dxx = ( pixval32f( dog_pyr[octv][intvl], r, c+1 ) + pixval32f( dog_pyr[octv][intvl], r, c-1 ) - 2 * v );dyy = ( pixval32f( dog_pyr[octv][intvl], r+1, c ) +pixval32f( dog_pyr[octv][intvl], r-1, c ) - 2 * v );dss = ( pixval32f( dog_pyr[octv][intvl+1], r, c ) +pixval32f( dog_pyr[octv][intvl-1], r, c ) - 2 * v );dxy = ( pixval32f( dog_pyr[octv][intvl], r+1, c+1 ) -pixval32f( dog_pyr[octv][intvl], r+1, c-1 ) -pixval32f( dog_pyr[octv][intvl], r-1, c+1 ) +pixval32f( dog_pyr[octv][intvl], r-1, c-1 ) ) / 4.0;dxs = ( pixval32f( dog_pyr[octv][intvl+1], r, c+1 ) -pixval32f( dog_pyr[octv][intvl+1], r, c-1 ) -pixval32f( dog_pyr[octv][intvl-1], r, c+1 ) +pixval32f( dog_pyr[octv][intvl-1], r, c-1 ) ) / 4.0;dys = ( pixval32f( dog_pyr[octv][intvl+1], r+1, c ) -pixval32f( dog_pyr[octv][intvl+1], r-1, c ) -pixval32f( dog_pyr[octv][intvl-1], r+1, c ) +pixval32f( dog_pyr[octv][intvl-1], r-1, c ) ) / 4.0;H = cvCreateMat( 3, 3, CV_64FC1 );cvmSet( H, 0, 0, dxx );cvmSet( H, 0, 1, dxy );cvmSet( H, 0, 2, dxs );cvmSet( H, 1, 0, dxy );cvmSet( H, 1, 1, dyy );cvmSet( H, 1, 2, dys );cvmSet( H, 2, 0, dxs );cvmSet( H, 2, 1, dys );cvmSet( H, 2, 2, dss );return H; }

图像处理中的一阶偏导和二阶偏导相关推荐

  1. 【高等数学】函数连续、可导、可微,洛必达法则使用条件、一阶可导、一阶连续可导、二阶可导、二阶连续可导

    目录 一.一元函数连续.可导.可微之间的关系 二.洛必达的使用条件 三.洛必达使用要注意的地方 1.等式右边极限存在 2.每导一步注意检查是否满足0/0,或∞/∞ 3.求导时注意函数怎么求导更简化 四 ...

  2. 参数方程求二阶偏导_偏微分方程

    常微分方程(ODE) 的时候我们更多是关于时间的导数.偏微分方程(partial differential equation) 则不仅仅是与时间相关,加上了与空间位置相关的一些信息. 解 当 ODE ...

  3. 高数 | 一阶可导 一阶连续可导 二阶可导 二阶连续可导 为什么函数二阶可导却不能用两次洛必达法则?

    导数的定义可以换一个说法:视f(x)为f(x)的零阶导数,若零阶导数在某点的近旁有定义,且其一阶导数在该点的值存在,那么称零阶导数在该点处一阶可导. 一阶导数是这样,二阶导数同理,n阶导数亦然. 分析 ...

  4. 一阶导与二阶导的关系_数学分析|第九章 定积分关于二阶导函数正负和定积分结合证明不等式问题总结...

    当公式或文字展 示不完全时,记得向左←滑动哦! 摘要: 当题目中给出二阶导函数正负时,可以得到函数和导函数存在某种不等式关系,此时需要两边进行积分,积分时一定要注意积分变量的选取.[公众号:岩宝数学考 ...

  5. 二阶偏导相等的一个充分条件

    困扰我这么多年的问题终于解决了:为什么爷爷的爸爸和爸爸的爷爷是同一个人,而奶奶的妈妈和妈妈的奶奶却不是同一个人? 答案:二阶偏导次序不影响结果的前提是导数在区间连续. [虽然以前看过,但是没有保存] ...

  6. 二元复合函数求二阶偏导

    二元复合函数求二阶偏导 设z=F(x+f(2x−y),y),其中F,f二阶连续偏导数,求∂2z∂y2.设z = F(x+f(2x-y),y),其中F,f二阶连续偏导数,求\frac{\partial ...

  7. 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)

    图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny) 不同图像灰度不同,边界处一般会有明显边缘,利用此特征可以分割图像.需要说明的是: ...

  8. 【C++】图像处理中的微分算子原理与实现

    图像处理中的微分算子原理与实现 一阶微分边缘算子:经典算子比如:Roberts(罗伯特).Prewitt(普鲁伊特).Sobel(索贝尔),Canny(坎尼)等. 二阶微分边缘算子:Laplacian ...

  9. 图像处理中的傅里叶变换

    傅立叶变换在图像处理中有非常重要的作用.因为不仅傅立叶分析涉及图像处理很多方面,傅立 叶改进算法,比如离散余弦变换,gabor与小波在图像处理中也有重要的分量.傅立叶变换在图像处理的重要作用: 1.图 ...

  10. 图像处理中几个基本的处理方法c#代码实现

    图像是人类获取和交换信息的主要来源,因此,图像处理的应用领域必然涉及到人类生活和工作的方方面面.随着人类活动范围的不断扩大,图像处理的应用领域也将随之不断扩大.(1)航天和航空技术方面的应用 数字图像 ...

最新文章

  1. 运动控制器编程_快速入门 | 篇二十一:运动控制器ZHMI组态编程简介一
  2. php和python哪个工资高-学python和php哪个前景好
  3. 足坛绝代双骄全面数据对比,梅西30岁以后不如C罗?
  4. OpenCV实现图像对齐ECC算法(附完整代码)
  5. Cython进阶--用Cython封装Callback函数
  6. 谈谈实习期间应该注意的几点问题,助你早日拿到转正offer
  7. 天黑时间跟经度还是纬度有关_经纬度和时间有什么关系
  8. 阿里云贾扬清发布大数据+AI产品体系“阿里灵杰” | 云栖大会
  9. preparedstatement mysql 数据_使用PreparedStatement对象操作数据库
  10. POJ 3207 解题报告
  11. 万字总结:金融市场基础知识
  12. 还不了解外贸流程?这一篇就够了(小声bb)
  13. 代码设计时应遵循哪些原则
  14. mysql双主复制模式_mysql复制模式第二部分-----双主模式
  15. [Unity][C#]Regex正则表达式判断字符串
  16. Proxmox kvm关机失败
  17. 西电、成电的风雨往事
  18. c语言程序延时10s,单片机C语言程序设计:10s 的秒表
  19. [开源] OpWeb 框架 --快速高效的实时交互框架(更新至 0.0.4.0)
  20. ShaderLearning_1_理论渲染管线和GPU渲染管线

热门文章

  1. Linux命令英文全称
  2. eclipse新建JSP页面报错:Multiple annotations found at this line解决方法
  3. Python爬虫:盖楼抽奖还手动?自动的她不香吗?
  4. 网页直播源码IM即时通讯协议
  5. vue 使用箭头函数会报错
  6. Python模拟数据生成器全代码
  7. EBS Form开发中LOV实现实例
  8. Python爬取煎蛋网图片
  9. Dynamic Programming 什么意思
  10. 闲鱼怎么用快手做引流,快手怎么找痛点引流