cvCanny函数
Canny算法同简单的基于拉普拉斯算法的不同点之一是在Canny算法中,首先在x和y方向求一阶导数,然后组合为4个方向的导数。这些方向导数达到局部最大值的点就是组成边缘的候选点。Canny算法最重要的一个新特点是其试图将独立边的候选像素拼装成轮廓。轮廓的形成是对这些像素运用滞后性阈值。这意味着有两个阈值,上限和下限。如果一个像素的梯度大于上限阈值,则被认为是边缘像素,如果低于下限阈值,则被抛弃,如果介于二者之间,只有当其与高于上限阈值的像素连接时才会被接受。Canny推荐的上下限阈值比为2:1到3:1之间。
void cvCanny{
const CvArr* img,
CvArr* edge,
double lowThresh,
double highThresh,
int apertureSize=3
};
cvCanny()函数需要输入一幅灰度图像,输出图也一定是灰度的(实际上是布尔图像)。接下来两个参数是下限阈值和上限阈值,最后一个参数是另一个中孔,这个被Sobel算子用到的中孔是cvCanny()在内部使用的。(不太懂这句话的意思,我查阅资料后,觉得应该是Sobel算子内核大小)