opencv角点检测

什么叫角点呢?

   “如果某一点在任意方向的一个微小变化都会造成图像灰度很大的变化,那么这个点就是角点”,我们可以把角落看成是角点的现实体现,对于墙角来说,墙角是所有平面的开始点,只要这个点变化,就会引起所有从这个点出发的平面的变化,这就是角点。

下面是几个角点的具体描述

1、一阶导数,也就是图像灰度的梯度的局部最大所对应的像素点

2、两条以及两条以上边缘的交点

3、图像中梯度值和梯度方向的变化速率都很高的点

4、如果角点处的一阶导数最大,二阶导数为0,则这个角点表示物体边缘变化不连续的点

 

```

void cornerHarris(InputArray src,OutputArray dst, int blockSize, int ksize, double k, intborderType=BORDER_DEFAULT )

```

· 第一个参数,InputArray类型的src,输入图像,即源图像,填Mat类的对象即可,且需为单通道8位或者浮点型图像。

· 第二个参数,OutputArray类型的dst,函数调用后的运算结果存在这里,即这个参数用于存放Harris角点检测的输出结果,和源图片有一样的尺寸和类型。

· 第三个参数,int类型的blockSize,表示邻域的大小,更多的详细信息在cornerEigenValsAndVecs()中有讲到。

· 第四个参数,int类型的ksize,表示Sobel()算子的孔径大小。

· 第五个参数,double类型的k,Harris参数。

· 第六个参数,int类型的borderType,图像像素的边界模式,注意它有默认值BORDER_DEFAULT。更详细的解释,参考borderInterpolate( )函数。

 

 

函数Threshold( ) 对单通道数组应用固定阈值操作。该函数的典型应用是对灰度图像进行阈值操作得到二值图像。(另外,compare( )函数也可以达到此目的) 或者是去掉噪声,例如过滤很小或很大象素值的图像点。

```

double threshold(InputArray src,OutputArray dst, double thresh, double maxval, int type)

```

· 第一个参数,InputArray类型的src,输入数组,填单通道 , 8或32位浮点类型的Mat即可。

· 第二个参数,OutputArray类型的dst,函数调用后的运算结果存在这里,即这个参数用于存放输出结果,且和第一个参数中的Mat变量有一样的尺寸和类型。

· 第三个参数,double类型的thresh,阈值的具体值。

· 第四个参数,double类型的maxval,当第五个参数阈值类型type取 CV_THRESH_BINARY 或CV_THRESH_BINARY_INV 阈值类型时的最大值.

· 第五个参数,int类型的type,阈值类型,。threshold( )函数支持的对图像取阈值的方法由其确定

 

 

 

    

 

 

你可能感兴趣的:(C++,图像处理)