本文整理汇总了C++中FloatImage::size方法的典型用法代码示例。如果您正苦于以下问题:C++ FloatImage::size方法的具体用法?C++ FloatImage::size怎么用?C++ FloatImage::size使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FloatImage
的用法示例。
在下文中一共展示了FloatImage::size方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FloatImage
template <typename PointInT, typename IntensityT> void
pcl::tracking::PyramidalKLTTracker<PointInT, IntensityT>::derivatives (const FloatImage& src, FloatImage& grad_x, FloatImage& grad_y) const
{
// std::cout << ">>> derivatives" << std::endl;
////////////////////////////////////////////////////////
// Use Shcarr operator to compute derivatives. //
// Vertical kernel +3 +10 +3 = [1 0 -1]T * [3 10 3] //
// 0 0 0 //
// -3 -10 -3 //
// Horizontal kernel +3 0 -3 = [3 10 3]T * [1 0 -1] //
// +10 0 -10 //
// +3 0 -3 //
////////////////////////////////////////////////////////
if (grad_x.size () != src.size () || grad_x.width != src.width || grad_x.height != src.height)
grad_x = FloatImage (src.width, src.height);
if (grad_y.size () != src.size () || grad_y.width != src.width || grad_y.height != src.height)
grad_y = FloatImage (src.width, src.height);
int height = src.height, width = src.width;
float *row0 = new float [src.width + 2];
float *row1 = new float [src.width + 2];
float *trow0 = row0; ++trow0;
float *trow1 = row1; ++trow1;
const float* src_ptr = &(src.points[0]);
for (int y = 0; y < height; y++)
{
const float* srow0 = src_ptr + (y > 0 ? y-1 : height > 1 ? 1 : 0) * width;
const float* srow1 = src_ptr + y * width;
const float* srow2 = src_ptr + (y < height-1 ? y+1 : height > 1 ? height-2 : 0) * width;
float* grad_x_row = &(grad_x.points[y * width]);
float* grad_y_row = &(grad_y.points[y * width]);
// do vertical convolution
for (int x = 0; x < width; x++)
{
trow0[x] = (srow0[x] + srow2[x])*3 + srow1[x]*10;
trow1[x] = srow2[x] - srow0[x];
}
// make border
int x0 = width > 1 ? 1 : 0, x1 = width > 1 ? width-2 : 0;
trow0[-1] = trow0[x0]; trow0[width] = trow0[x1];
trow1[-1] = trow1[x0]; trow1[width] = trow1[x1];
// do horizontal convolution and store results
for (int x = 0; x < width; x++)
{
grad_x_row[x] = trow0[x+1] - trow0[x-1];
grad_y_row[x] = (trow1[x+1] + trow1[x-1])*3 + trow1[x]*10;
}
}
}