下面是opencv用户手册之图像处理部分:梯度.边缘与角点(中文翻译),有错误欢迎指正,原文在:
注意: 【程序编程相关:小然谈编程-2】
http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cv.htm 【推荐阅读:小然谈编程-1】
梯度.边缘与角点 【扩展信息:Creating a Details P】
本章描述图像处理与分析的一些函数.大多数函数是针对二维数组的.所以我们用数组来描述“图像”,而图像不必是 iplimage,还可以是 cvmat´s 或 cvmatnd.翻译:hunnish, 阿须数码
sobel
使用扩展 sobel 算子计算一阶.二阶.三阶或混合图像差分void cvsobel( const cvarr* src, cvarr* dst, int xorder, int yorder, int aperture_size=3 );src 输入图像. dst 输出图像. xorder x 方向上的差分阶数 yorder y 方向上的差分阶数 aperture_size 扩展 sobel 核的大小,必须是 1, 3, 5 或 7. 除了尺寸为 1, 其它情况下, aperture_size ×aperture_size 可分离内核将用来计算差分.对 aperture_size=1的情况, 使用 3x1 或 1x3 内核 (不进行高斯平滑操作).有一个特殊变量 cv_scharr (=-1),对应 3x3 scharr 滤波器,可以给出比 3x3 sobel 滤波更精确的结果.scharr 滤波器系数是: | -3 0 3| |-10 0 10| | -3 0 3| 对 x-方向 以及转置矩阵对 y-方向.
函数 cvsobel 通过对图像用相应的内核进行卷积操作来计算图像差分:
dst(x,y) = dxorder+yodersrc/dxxorder•dyyorder |(x,y)sobel 算子结合 gaussian 平滑与微分,以提高计算结果对噪声的抵抗能力.通常情况,函数调用采用如下参数 (xorder=1, yorder=0, aperture_size=3) 或 (xorder=0, yorder=1, aperture_size=3) 来计算一阶 x- 或 y- 方向的图像差分.第一种情况对应:
|-1 0 1| |-2 0 2| |-1 0 1|核.第二种对应
|-1 -2 -1| | 0 0 0| | 1 2 1| or | 1 2 1| | 0 0 0| |-1 -2 -1|核,它依赖于图像原点的定义 (origin 来自 iplimage 结构的定义).不进行图像尺度变换.所以输出图像通常比输入图像大.... 下一页