电子工程师技术服务社区
- 社区首页
- 下载
- canny.rar
资料描述
简介:canny边缘检测算子是john f. canny于1986年开发出来的一个多级边缘检测算法。
canny算法最重要的一个新特点是其试图将独立边的候选像素拼装成轮廓。轮廓的形成是对这些像素运用滞后性阀值。这意味着有两个阀值,上限和下限。如果一个像素的梯度大于上限阀值,则被认为是边缘像素,如果低于下限阀值,则被抛弃,如果介于二者之间,只有当其与高于上限阀值的像素连接时才会被接受。
canny的目标是找到一个最优的边缘检测算法,最优边缘检测的含义是:
1.好的检测 - 算法能够尽可能多地标识出图像中的实际边缘。
2.好的定位 - 标识出的边缘要与实际图像中的实际边缘尽可能接近。
3.最小响应 - 图像中的边缘只能标识一次,并且可能存在的图像噪声不应标识为边缘。
canny边缘检测主要涉及到以下几个函数:
1.cvcanny
函数原型:
void cvcanny(
const cvarr* img,
cvarr* edges,
double lowthresh,
double highthresh,
int aperturesize = 3
);
第一个参数表示输入的图像,必须是单通道灰度图
第二个参数表示输出的边缘图像,为单通道黑白图
第三个参数表示上限阀值
第四个参数表示下限阀值
第五个参数表示sobel算子大小,默认为3表示一个3x3的矩阵。
2.cvcreatetrackbar
功能:创建滑动条并添加到指定窗口
函数原型:
int cvcreatetrackbar(
const char* trackbar_name,
const char* window_name,
int* value,
intcount,
cvtrackbarcallback on_change
);
函数说明:
第一个参数表示该trackbar的名称。
第二个参数表示trackbar显示窗口的名称。
第三个参数表示滑动块的初始位置。
第四个参数表示滑动块位置的最大值。
第五个参数表示回调函数。当滑块位置有变化时,系统会调用该