在拉普拉斯图像上追踪过零点曲线需要很大的耐心,但你可以用一个简化的算法来检测过零点的大致位置。这种算法首先对拉普拉斯图像阈值化(采用的阈值为 0),得到正数和负数之间的分割区域,这两个区域之间的边界就是过零点。所以,我们可以用形态学运算来提取这些轮廓,也就是用拉普拉斯图像减去膨胀后的图像。下面的方法实现了这个算法,生成了一个过零点的二值图像:
// 获得过零点的二值图像
// 拉普拉斯图像的类型必须是 CV_32F
cv::Mat getZeroCrossings(cv::Mat laplace) {
// 阈值为 0
// 负数用黑色
// 正数用白色
cv::Mat signImage;
cv::threshold