bool updateMat(const MatT& new_mat, MatT& my_mat, cv::Mat_<double>& cv_mat, int rows, int cols)
{
  if ((my_mat == new_mat) && (my_mat.size() == cv_mat.rows*cv_mat.cols))
    return false;
  my_mat = new_mat;
  // D may be empty if camera is uncalibrated or distortion model is non-standard
  cv_mat = (my_mat.size() == 0) ? cv::Mat_<double>() : cv::Mat_<double>(rows, cols, &my_mat[0]);
  return true;
}
 void mod_size( MatT& A, unsigned r, unsigned c, unsigned s ) {
     A.resize( r, c, s );
     A.randn( r, c, s );
     for( unsigned i=0; i<r; i++ ) {
         for( unsigned j=0; j<c; j++ ) {
             for( unsigned k=0; k<s; k++ ) {
                 A(i,j,k) = (typename MatT::elem_type)(i*100+j*10+k);
             }
         }
     }
 };
static void PointsToMat(
  const IntrinsicBase * cam,
  const PointFeatures & vec_feats,
  MatT & m)
{
  m.resize(2, vec_feats.size());
  typedef typename MatT::Scalar Scalar; // Output matrix type

  size_t i = 0;
  for( PointFeatures::const_iterator iter = vec_feats.begin();
    iter != vec_feats.end(); ++iter, ++i)
  {
    m.col(i) = cam->get_ud_pixel(Vec2(iter->x(), iter->y()));
  }
}
bool updateMat(const MatT& new_mat, MatT& my_mat, MatU& cv_mat)
{
  if ((my_mat == new_mat) && (my_mat.size() == cv_mat.rows*cv_mat.cols))
    return false;
  my_mat = new_mat;
  // D may be empty if camera is uncalibrated or distortion model is non-standard
  cv_mat = MatU(&my_mat[0]);
  return true;
}
示例#5
0
void benchmarkMultiplyDevice(MatT& A) {
    // If we multiply a vector of 1s we should see our result equal 0 (if our
    // RBF-FD weights are good)
    std::vector<double> x_host(A.size1(), 1);
    viennacl::vector<double> x(A.size1());
    viennacl::copy(x_host.begin(), x_host.end(), x.begin());

    viennacl::vector<double> b(A.size1());
    b = viennacl::linalg::prod(A, x);

#if 0
    std::vector<double> b_host(A.size1(), 1);
    viennacl::copy(b.begin(), b.end(), b_host.begin());
#endif
    //viennacl::ocl::current_context().get_queue().finish();

    std::cout << "l1   Norm: " << viennacl::linalg::norm_1(b) << std::endl;
    std::cout << "l2   Norm: " << viennacl::linalg::norm_2(b) << std::endl;
    std::cout << "linf Norm: " << viennacl::linalg::norm_inf(b) << std::endl;
}
示例#6
0
void benchmarkMultiplyHost(MatT& A) {
    // If we multiply a vector of 1s we should see our result equal 0 (if our
    // RBF-FD weights are good)
    std::vector<double> x(A.size(), 1);
    std::vector<double> b(A.size(), 1);
    b = viennacl::linalg::prod(A, x);

    std::cout << "l1   Norm: " << viennacl::linalg::norm_1(b) << std::endl;
    std::cout << "l2   Norm: " << viennacl::linalg::norm_2(b) << std::endl;
    std::cout << "linf Norm: " << viennacl::linalg::norm_inf(b) << std::endl;
}
void MatchesPointsToMat
(
  const matching::IndMatches & putativeMatches,
  const cameras::IntrinsicBase * cam_I,
  const features::PointFeatures & feature_I,
  const cameras::IntrinsicBase * cam_J,
  const features::PointFeatures & feature_J,
  MatT & x_I, MatT & x_J
)
{
  const size_t n = putativeMatches.size();
  x_I.resize(2, n);
  x_J.resize(2, n);
  typedef typename MatT::Scalar Scalar; // Output matrix type

  for (size_t i=0; i < putativeMatches.size(); ++i)  {
    const features::PointFeature & pt_I = feature_I[putativeMatches[i].i_];
    const features::PointFeature & pt_J = feature_J[putativeMatches[i].j_];
    if (cam_I)
      x_I.col(i) = cam_I->get_ud_pixel(pt_I.coords().cast<double>());
    else
      x_I.col(i) = pt_I.coords().cast<double>();

    if (cam_J)
      x_J.col(i) = cam_J->get_ud_pixel(pt_J.coords().cast<double>());
    else
      x_J.col(i) = pt_J.coords().cast<double>();
  }
}
 void mod_content( MatT& A ) {
     A.randn( A.n_rows, A.n_cols, A.n_slices );
     A.fill(25);
     A(0,0,0)=0;
 };