【问题标题】:using dsift of the vlfeat library with cv::Mat将 vlfeat 库的 dsift 与 cv::Mat 一起使用
【发布时间】:2013-02-21 04:09:58
【问题描述】:

我目前正在尝试使用 vlfeat-lib 的 dsift 算法。但无论我使用哪些值创建过滤器(样本步长、bin 大小),它都会在执行期间为每一帧返回相同数量的关键点(连续帧不同,来自相机)。关于 C 或 C++ 用法的文档非常薄,我找不到这些语言的任何好的示例。 以下是相关代码:

// create filter
vlf = vl_dsift_new_basic(320, 240, 1, 3);

// transform image in cv::Mat to float vector
std::vector<float> imgvec;
for (int i = 0; i < img.rows; ++i){
  for (int j = 0; j < img.cols; ++j){
    imgvec.push_back(img.at<unsigned char>(i,j) / 255.0f);                                                                                                                                                                                                        
  }
}
// call processing function of vl
vl_dsift_process(vlf, &imgvec[0]);

// echo number of keypoints found
std::cout << vl_dsift_get_keypoint_num(vlf) << std::endl;

【问题讨论】:

    标签: c++ c opencv computer-vision vlfeat


    【解决方案1】:

    它在每帧返回相同数量的关键点 执行

    这对于 dense SIFT 实施是正常的,因为提取的关键点的数量仅取决于输入的几何参数[1],即步长和图像大小。

    documentation

    特征帧(关键点)由采样步骤 (vl_dsift_set_steps) 和采样边界 (vl_dsift_set_bounds) 间接指定。

    [1]:vl_dsift_get_keypoint_num 返回仅由 _vl_dsift_update_buffers 更新的 self-&gt;numFrames,它仅使用几何信息(边界、步长和 bin 大小)。

    【讨论】:

    • 是的。密集筛选基于固定网格提取描述符。这为每个图像提供了相同数量的描述符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    相关资源
    最近更新 更多