Class: OpenCV::CvSURFPoint

Inherits:
Object
  • Object
show all
Defined in:
ext/opencv/cvsurfpoint.cpp,
ext/opencv/cvsurfpoint.cpp

Overview

C structure is here.

typedef struct CvSURFPoint {
  CvPoint2D32f pt; // position of the feature within the image
  int laplacian;   // -1, 0 or +1. sign of the laplacian at the point.
                   // can be used to speedup feature comparison
                   // (normally features with laplacians of different
                   // signs can not match)
  int size;        // size of the feature
  float dir;       // orientation of the feature: 0..360 degrees
  float hessian;   // value of the hessian (can be used to
                   // approximately estimate the feature strengths)
} CvSURFPoint;

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#new(pt, laplacian, size, dir, hessian) ⇒ CvSURFPoint

Create a CvSURFPoint

Parameters:

  • pt (CvPoint2D32f)

    Position of the feature within the image

  • laplacian (Integer)

    -1, 0 or +1. sign of the laplacian at the point. Can be used to speedup feature comparison (normally features with laplacians of different signs can not match)

  • size (Integer)

    Size of the feature

  • dir (Number)

    Orientation of the feature: 0..360 degrees

  • hessian (Number)

    Value of the hessian (can be used to approximately estimate the feature strengths)



59
60
61
62
63
64
65
66
67
68
69
70
# File 'ext/opencv/cvsurfpoint.cpp', line 59

VALUE
rb_initialize(VALUE self, VALUE pt, VALUE laplacian, VALUE size, VALUE dir, VALUE hessian)
{
  CvSURFPoint *self_ptr = CVSURFPOINT(self);
  self_ptr->pt = VALUE_TO_CVPOINT2D32F(pt);
  self_ptr->laplacian = NUM2INT(laplacian);
  self_ptr->size = NUM2INT(size);
  self_ptr->dir = (float)NUM2DBL(dir);
  self_ptr->hessian = (float)NUM2DBL(hessian);

  return self;
}

Class Method Details

.flann(objectDesc, imageDesc) ⇒ Object



204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
# File 'ext/opencv/cvsurfpoint.cpp', line 204

VALUE
rb_flann(VALUE klass, VALUE objectDesc, VALUE imageDesc)
{
  const cv::Mat m_object(CVMAT(objectDesc));
  const cv::Mat m_image(CVMAT(imageDesc));
  
  cv::Mat m_indices(m_object.rows, 2, CV_32S);
  cv::Mat m_dists(m_object.rows, 2, CV_32F);
  
  cv::flann::Index flann_index(m_image, cv::flann::KDTreeIndexParams(4));  // using 4 randomized kdtrees
  flann_index.knnSearch(m_object, m_indices, m_dists, 2, cv::flann::SearchParams(64)); // maximum number of leafs checked
  
  VALUE ptpairs = rb_ary_new();
  
  int* indices_ptr = m_indices.ptr<int>(0);
  float* dists_ptr = m_dists.ptr<float>(0);
  for (int i = 0; i < m_indices.rows; ++i) {
      if (dists_ptr[2 * i] < 0.6 * dists_ptr[2 * i + 1]) {
          rb_ary_push(ptpairs, rb_int_new(i));
          rb_ary_push(ptpairs, rb_int_new(indices_ptr[2 * i]));
      }
  }
  
  return ptpairs;
}

Instance Method Details

#dirNumber

Return orientation of the feature: 0..360 degrees

Returns:

  • (Number)

    Orientation of the feature.



154
155
156
157
158
# File 'ext/opencv/cvsurfpoint.cpp', line 154

VALUE
rb_get_dir(VALUE self)
{
  return DBL2NUM((double)(CVSURFPOINT(self)->dir));
}

#dir=(value) ⇒ Object

Set orientation of the feature: 0..360 degrees.

Parameters:

  • Value (Number)

    to set.



166
167
168
169
170
171
# File 'ext/opencv/cvsurfpoint.cpp', line 166

VALUE
rb_set_dir(VALUE self, VALUE value)
{
  CVSURFPOINT(self)->dir = (float)NUM2DBL(value);
  return self;
}

#hessianNumber

Return value of the hessian

Returns:

  • (Number)

    Hessian



179
180
181
182
183
# File 'ext/opencv/cvsurfpoint.cpp', line 179

VALUE
rb_get_hessian(VALUE self)
{
  return DBL2NUM((double)(CVSURFPOINT(self)->hessian));
}

#hessian=(value) ⇒ Object

Set value of the hessian

Parameters:

  • Value (Number)

    to set.



191
192
193
194
195
196
# File 'ext/opencv/cvsurfpoint.cpp', line 191

VALUE
rb_set_hessian(VALUE self, VALUE value)
{
  CVSURFPOINT(self)->hessian = (float)NUM2DBL(value);
  return self;
}

#laplacianInteger

Return sign of the laplacian at the point (-1, 0 or +1)

Returns:

  • (Integer)

    Sign of the laplacian at the point.



103
104
105
106
107
# File 'ext/opencv/cvsurfpoint.cpp', line 103

VALUE
rb_get_laplacian(VALUE self)
{
  return INT2NUM(CVSURFPOINT(self)->laplacian);
}

#laplacian=(value) ⇒ Object

Set sign of the laplacian at the point

Parameters:

  • value (Integer)

    Value to set.



115
116
117
118
119
120
121
# File 'ext/opencv/cvsurfpoint.cpp', line 115

VALUE
rb_set_laplacian(VALUE self, VALUE value)
{
  int val = NUM2INT(value);
  CVSURFPOINT(self)->laplacian = (val > 0) ? 1 : (val < 0) ? -1 : 0;
  return self;
}

#ptCvPoint2D32f

Return position of the feature as CvPoint2D32f.

Returns:



78
79
80
81
82
# File 'ext/opencv/cvsurfpoint.cpp', line 78

VALUE
rb_get_pt(VALUE self)
{
  return REFER_OBJECT(cCvPoint2D32f::rb_class(), &CVSURFPOINT(self)->pt, self);
}

#pt=(value) ⇒ Object

Set position of the feature.

Parameters:



90
91
92
93
94
95
# File 'ext/opencv/cvsurfpoint.cpp', line 90

VALUE
rb_set_pt(VALUE self, VALUE value)
{
  CVSURFPOINT(self)->pt = VALUE_TO_CVPOINT2D32F(value);
  return self;
}

#sizeInteger

Returns size of feature.

Returns:

  • (Integer)

    Size of feature.



129
130
131
132
133
# File 'ext/opencv/cvsurfpoint.cpp', line 129

VALUE
rb_get_size(VALUE self)
{
  return INT2NUM(CVSURFPOINT(self)->size);
}

#size=(value) ⇒ Object

Return size of feature

Parameters:

  • Value (Integer)

    to set.



141
142
143
144
145
146
# File 'ext/opencv/cvsurfpoint.cpp', line 141

VALUE
rb_set_size(VALUE self, VALUE value)
{
  CVSURFPOINT(self)->size = NUM2INT(value);
  return self;
}