CornerEigenValsAndVecs函数

来源:互联网 发布:广东奥飞数据 编辑:程序博客网 时间:2024/06/14 04:35

1、CornerEigenValsAndVecs函数

计算图像块的特征值和特征向量,用于角点检测

2、

CornerEigenValsAndVecs函数调用形式

void cvCornerEigenValsAndVecs( const CvArr* image, CvArr* eigenvv,                               int block_size, int aperture_size=3 );
image
输入图像.
eigenvv
保存结果的数组。必须比输入图像宽 6 倍。
block_size
邻域大小 (见讨论).
aperture_size
Sobel 算子的核尺寸(见 cvSobel).

对每个象素,函数 cvCornerEigenValsAndVecs 考虑 block_size × block_size 大小的邻域 S(p),然后在邻域上计算图像差分的相关矩阵:

M=\begin{bmatrix} \sum_{S(p)}(\frac {dI}{dx})^2  & \sum_{S(p)}(\frac{dI}{dx} \cdot \frac{dI}{dy})^{2} \\ \sum_{S(p)}(\frac{dI}{dx} \cdot \frac{dI}{dy})^{2} & \sum_{S(p)}(\frac {dI}{dy})^2 \end{bmatrix}


然后它计算矩阵的特征值和特征向量,并且按如下方式(λ1, λ2, x1, y1, x2, y2)存储这些值到输出图像中,其中

λ1, λ2 - M 的特征值,没有排序
(x1, y1) - 特征向量,对 λ1
(x2, y2) - 特征向量,对 λ2


opencv 代码:

<span style="font-size:18px;">#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/core/core.hpp>#include<opencv2/highgui/highgui.hpp>#include<iostream>using namespace cv;using namespace std;int main(){Mat src;src= imread("D:6.jpg");Mat dst(src.size(),CV_32FC(6));cvtColor(src, src, CV_RGB2GRAY);cornerEigenValsAndVecs(src, dst, 3, 3, BORDER_DEFAULT);cout << dst.at<Vec6f>(100, 100)[1] << endl;return 0;}</span>


0 0
原创粉丝点击