1 /*M///////////////////////////////////////////////////////////////////////////////////////
3 // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
5 // By downloading, copying, installing or using the software you agree to this license.
6 // If you do not agree to this license, do not download, install,
7 // copy or use the software.
11 // For Open Source Computer Vision Library
13 // Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
14 // Copyright (C) 2009, Willow Garage Inc., all rights reserved.
15 // Third party copyrights are property of their respective owners.
17 // Redistribution and use in source and binary forms, with or without modification,
18 // are permitted provided that the following conditions are met:
20 // * Redistribution's of source code must retain the above copyright notice,
21 // this list of conditions and the following disclaimer.
23 // * Redistribution's in binary form must reproduce the above copyright notice,
24 // this list of conditions and the following disclaimer in the documentation
25 // and/or other materials provided with the distribution.
27 // * The name of the copyright holders may not be used to endorse or promote products
28 // derived from this software without specific prior written permission.
30 // This software is provided by the copyright holders and contributors "as is" and
31 // any express or implied warranties, including, but not limited to, the implied
32 // warranties of merchantability and fitness for a particular purpose are disclaimed.
33 // In no event shall the Intel Corporation or contributors be liable for any direct,
34 // indirect, incidental, special, exemplary, or consequential damages
35 // (including, but not limited to, procurement of substitute goods or services;
36 // loss of use, data, or profits; or business interruption) however caused
37 // and on any theory of liability, whether in contract, strict liability,
38 // or tort (including negligence or otherwise) arising in any way out of
39 // the use of this software, even if advised of the possibility of such damage.
45 /****************************************************************************************\
46 The code below is implementation of HOG (Histogram-of-Oriented Gradients)
47 descriptor and object detection, introduced by Navneet Dalal and Bill Triggs.
49 The computed feature vectors are compatible with the
50 INRIA Object Detection and Localization Toolkit
51 (http://pascal.inrialpes.fr/soft/olt/)
52 \****************************************************************************************/
57 size_t HOGDescriptor::getDescriptorSize() const
59 CV_Assert(blockSize.width % cellSize.width == 0 &&
60 blockSize.height % cellSize.height == 0);
61 CV_Assert((winSize.width - blockSize.width) % blockStride.width == 0 &&
62 (winSize.height - blockSize.height) % blockStride.height == 0 );
64 (blockSize.width/cellSize.width)*
65 (blockSize.height/cellSize.height)*
66 ((winSize.width - blockSize.width)/blockStride.width + 1)*
67 ((winSize.height - blockSize.height)/blockStride.height + 1);
70 double HOGDescriptor::getWinSigma() const
72 return winSigma >= 0 ? winSigma : (blockSize.width + blockSize.height)/8.;
75 bool HOGDescriptor::checkDetectorSize() const
77 size_t detectorSize = svmDetector.size(), descriptorSize = getDescriptorSize();
78 return detectorSize == 0 ||
79 detectorSize == descriptorSize ||
80 detectorSize == descriptorSize + 1;
83 void HOGDescriptor::setSVMDetector(const vector<float>& _svmDetector)
85 svmDetector = _svmDetector;
86 CV_Assert( checkDetectorSize() );
89 bool HOGDescriptor::load(const String& filename, const String& objname)
91 FileStorage fs(filename, FileStorage::READ);
92 FileNode obj = !objname.empty() ? fs[objname] : fs.getFirstTopLevelNode();
95 FileNodeIterator it = obj["winSize"].begin();
96 it >> winSize.width >> winSize.height;
97 it = obj["blockSize"].begin();
98 it >> blockSize.width >> blockSize.height;
99 it = obj["blockStride"].begin();
100 it >> blockStride.width >> blockStride.height;
101 it = obj["cellSize"].begin();
102 it >> cellSize.width >> cellSize.height;
103 obj["nbins"] >> nbins;
104 obj["derivAperture"] >> derivAperture;
105 obj["winSigma"] >> winSigma;
106 obj["histogramNormType"] >> histogramNormType;
107 obj["L2HysThreshold"] >> L2HysThreshold;
108 obj["gammaCorrection"] >> gammaCorrection;
110 FileNode vecNode = obj["SVMDetector"];
111 if( vecNode.isSeq() )
113 vecNode >> svmDetector;
114 CV_Assert(checkDetectorSize());
119 void HOGDescriptor::save(const String& filename, const String& objName) const
121 FileStorage fs(filename, FileStorage::WRITE);
122 fs << (!objName.empty() ? objName : FileStorage::getDefaultObjectName(filename)) << "{";
124 fs << "winSize" << winSize
125 << "blockSize" << blockSize
126 << "blockStride" << blockStride
127 << "cellSize" << cellSize
129 << "derivAperture" << derivAperture
130 << "winSigma" << getWinSigma()
131 << "histogramNormType" << histogramNormType
132 << "L2HysThreshold" << L2HysThreshold
133 << "gammaCorrection" << gammaCorrection;
134 if( !svmDetector.empty() )
135 fs << "SVMDetector" << "[:" << svmDetector << "]";
139 void HOGDescriptor::computeGradient(const Mat& img, Mat& grad, Mat& qangle,
140 Size paddingTL, Size paddingBR) const
142 CV_Assert( img.type() == CV_8U || img.type() == CV_8UC3 );
144 Size gradsize(img.cols + paddingTL.width + paddingBR.width,
145 img.rows + paddingTL.height + paddingBR.height);
146 grad.create(gradsize, CV_32FC2); // <magnitude*(1-alpha), magnitude*alpha>
147 qangle.create(gradsize, CV_8UC2); // [0..nbins-1] - quantized gradient orientation
150 img.locateROI(wholeSize, roiofs);
153 int cn = img.channels();
155 Mat_<float> _lut(1, 256);
156 const float* lut = &_lut(0,0);
158 if( gammaCorrection )
159 for( i = 0; i < 256; i++ )
160 _lut(0,i) = std::sqrt((float)i);
162 for( i = 0; i < 256; i++ )
163 _lut(0,i) = (float)i;
165 AutoBuffer<int> mapbuf(gradsize.width + gradsize.height + 4);
166 int* xmap = (int*)mapbuf + 1;
167 int* ymap = xmap + gradsize.width + 2;
169 const int borderType = (int)BORDER_REFLECT_101;
171 for( x = -1; x < gradsize.width + 1; x++ )
172 xmap[x] = borderInterpolate(x - paddingTL.width + roiofs.x,
173 wholeSize.width, borderType);
174 for( y = -1; y < gradsize.height + 1; y++ )
175 ymap[y] = borderInterpolate(y - paddingTL.height + roiofs.y,
176 wholeSize.height, borderType);
178 // x- & y- derivatives for the whole row
179 int width = gradsize.width;
180 AutoBuffer<float> _dbuf(width*4);
182 Mat Dx(1, width, CV_32F, dbuf);
183 Mat Dy(1, width, CV_32F, dbuf + width);
184 Mat Mag(1, width, CV_32F, dbuf + width*2);
185 Mat Angle(1, width, CV_32F, dbuf + width*3);
188 float angleScale = (float)(_nbins/CV_PI);
190 for( y = 0; y < gradsize.height; y++ )
192 const uchar* imgPtr = img.data + img.step*ymap[y];
193 const uchar* prevPtr = img.data + img.step*ymap[y-1];
194 const uchar* nextPtr = img.data + img.step*ymap[y+1];
195 float* gradPtr = (float*)grad.ptr(y);
196 uchar* qanglePtr = (uchar*)qangle.ptr(y);
200 for( x = 0; x < width; x++ )
203 dbuf[x] = (float)(lut[imgPtr[xmap[x+1]]] - lut[imgPtr[xmap[x-1]]]);
204 dbuf[width + x] = (float)(lut[nextPtr[x1]] - lut[prevPtr[x1]]);
209 for( x = 0; x < width; x++ )
212 const uchar* p2 = imgPtr + xmap[x+1]*3;
213 const uchar* p0 = imgPtr + xmap[x-1]*3;
214 float dx0, dy0, dx, dy, mag0, mag;
216 dx0 = lut[p2[2]] - lut[p0[2]];
217 dy0 = lut[nextPtr[x1+2]] - lut[prevPtr[x1+2]];
218 mag0 = dx0*dx0 + dy0*dy0;
220 dx = lut[p2[1]] - lut[p0[1]];
221 dy = lut[nextPtr[x1+1]] - lut[prevPtr[x1+1]];
231 dx = lut[p2[0]] - lut[p0[0]];
232 dy = lut[nextPtr[x1]] - lut[prevPtr[x1]];
247 cartToPolar( Dx, Dy, Mag, Angle, false );
249 for( x = 0; x < width; x++ )
251 float mag = dbuf[x+width*2], angle = dbuf[x+width*3]*angleScale - 0.5f;
252 int hidx = cvFloor(angle);
256 else if( hidx >= _nbins )
258 assert( (unsigned)hidx < (unsigned)_nbins );
260 qanglePtr[x*2] = (uchar)hidx;
262 hidx &= hidx < _nbins ? -1 : 0;
263 qanglePtr[x*2+1] = (uchar)hidx;
264 gradPtr[x*2] = mag*(1.f - angle);
265 gradPtr[x*2+1] = mag*angle;
275 BlockData() : histOfs(0), imgOffset() {}
282 size_t gradOfs, qangleOfs;
284 float histWeights[4];
289 HOGCache(const HOGDescriptor* descriptor,
290 const Mat& img, Size paddingTL, Size paddingBR,
291 bool useCache, Size cacheStride);
292 virtual ~HOGCache() {};
293 virtual void init(const HOGDescriptor* descriptor,
294 const Mat& img, Size paddingTL, Size paddingBR,
295 bool useCache, Size cacheStride);
297 Size windowsInImage(Size imageSize, Size winStride) const;
298 Rect getWindow(Size imageSize, Size winStride, int idx) const;
300 const float* getBlock(Point pt, float* buf);
301 virtual void normalizeBlockHistogram(float* histogram) const;
303 vector<PixData> pixData;
304 vector<BlockData> blockData;
307 vector<int> ymaxCached;
308 Size winSize, cacheStride;
309 Size nblocks, ncells;
310 int blockHistogramSize;
311 int count1, count2, count4;
313 Mat_<float> blockCache;
314 Mat_<uchar> blockCacheFlags;
317 const HOGDescriptor* descriptor;
324 blockHistogramSize = count1 = count2 = count4 = 0;
328 HOGCache::HOGCache(const HOGDescriptor* _descriptor,
329 const Mat& _img, Size _paddingTL, Size _paddingBR,
330 bool _useCache, Size _cacheStride)
332 init(_descriptor, _img, _paddingTL, _paddingBR, _useCache, _cacheStride);
335 void HOGCache::init(const HOGDescriptor* _descriptor,
336 const Mat& _img, Size _paddingTL, Size _paddingBR,
337 bool _useCache, Size _cacheStride)
339 descriptor = _descriptor;
340 cacheStride = _cacheStride;
341 useCache = _useCache;
343 descriptor->computeGradient(_img, grad, qangle, _paddingTL, _paddingBR);
344 imgoffset = _paddingTL;
346 winSize = descriptor->winSize;
347 Size blockSize = descriptor->blockSize;
348 Size blockStride = descriptor->blockStride;
349 Size cellSize = descriptor->cellSize;
350 Size winSize = descriptor->winSize;
351 int i, j, nbins = descriptor->nbins;
352 int rawBlockSize = blockSize.width*blockSize.height;
354 nblocks = Size((winSize.width - blockSize.width)/blockStride.width + 1,
355 (winSize.height - blockSize.height)/blockStride.height + 1);
356 ncells = Size(blockSize.width/cellSize.width, blockSize.height/cellSize.height);
357 blockHistogramSize = ncells.width*ncells.height*nbins;
361 Size cacheSize((grad.cols - blockSize.width)/cacheStride.width+1,
362 (winSize.height/cacheStride.height)+1);
363 blockCache.create(cacheSize.height, cacheSize.width*blockHistogramSize);
364 blockCacheFlags.create(cacheSize);
365 size_t i, cacheRows = blockCache.rows;
366 ymaxCached.resize(cacheRows);
367 for( i = 0; i < cacheRows; i++ )
371 Mat_<float> weights(blockSize);
372 float sigma = (float)descriptor->getWinSigma();
373 float scale = 1.f/(sigma*sigma*2);
375 for(i = 0; i < blockSize.height; i++)
376 for(j = 0; j < blockSize.width; j++)
378 float di = i - blockSize.height*0.5f;
379 float dj = j - blockSize.width*0.5f;
380 weights(i,j) = std::exp(-(di*di + dj*dj)*scale);
383 blockData.resize(nblocks.width*nblocks.height);
384 pixData.resize(rawBlockSize*3);
386 // Initialize 2 lookup tables, pixData & blockData.
389 // The detection algorithm runs in 4 nested loops (at each pyramid layer):
390 // loop over the windows within the input image
391 // loop over the blocks within each window
392 // loop over the cells within each block
393 // loop over the pixels in each cell
395 // As each of the loops runs over a 2-dimensional array,
396 // we could get 8(!) nested loops in total, which is very-very slow.
398 // To speed the things up, we do the following:
399 // 1. loop over windows is unrolled in the HOGDescriptor::{compute|detect} methods;
400 // inside we compute the current search window using getWindow() method.
401 // Yes, it involves some overhead (function call + couple of divisions),
402 // but it's tiny in fact.
403 // 2. loop over the blocks is also unrolled. Inside we use pre-computed blockData[j]
404 // to set up gradient and histogram pointers.
405 // 3. loops over cells and pixels in each cell are merged
406 // (since there is no overlap between cells, each pixel in the block is processed once)
407 // and also unrolled. Inside we use PixData[k] to access the gradient values and
408 // update the histogram
410 count1 = count2 = count4 = 0;
411 for( j = 0; j < blockSize.width; j++ )
412 for( i = 0; i < blockSize.height; i++ )
415 float cellX = (j+0.5f)/cellSize.width - 0.5f;
416 float cellY = (i+0.5f)/cellSize.height - 0.5f;
417 int icellX0 = cvFloor(cellX);
418 int icellY0 = cvFloor(cellY);
419 int icellX1 = icellX0 + 1, icellY1 = icellY0 + 1;
423 if( (unsigned)icellX0 < (unsigned)ncells.width &&
424 (unsigned)icellX1 < (unsigned)ncells.width )
426 if( (unsigned)icellY0 < (unsigned)ncells.height &&
427 (unsigned)icellY1 < (unsigned)ncells.height )
429 data = &pixData[rawBlockSize*2 + (count4++)];
430 data->histOfs[0] = (icellX0*ncells.height + icellY0)*nbins;
431 data->histWeights[0] = (1.f - cellX)*(1.f - cellY);
432 data->histOfs[1] = (icellX1*ncells.height + icellY0)*nbins;
433 data->histWeights[1] = cellX*(1.f - cellY);
434 data->histOfs[2] = (icellX0*ncells.height + icellY1)*nbins;
435 data->histWeights[2] = (1.f - cellX)*cellY;
436 data->histOfs[3] = (icellX1*ncells.height + icellY1)*nbins;
437 data->histWeights[3] = cellX*cellY;
441 data = &pixData[rawBlockSize + (count2++)];
442 if( (unsigned)icellY0 < (unsigned)ncells.height )
447 data->histOfs[0] = (icellX0*ncells.height + icellY1)*nbins;
448 data->histWeights[0] = (1.f - cellX)*cellY;
449 data->histOfs[1] = (icellX1*ncells.height + icellY1)*nbins;
450 data->histWeights[1] = cellX*cellY;
451 data->histOfs[2] = data->histOfs[3] = 0;
452 data->histWeights[2] = data->histWeights[3] = 0;
457 if( (unsigned)icellX0 < (unsigned)ncells.width )
463 if( (unsigned)icellY0 < (unsigned)ncells.height &&
464 (unsigned)icellY1 < (unsigned)ncells.height )
466 data = &pixData[rawBlockSize + (count2++)];
467 data->histOfs[0] = (icellX1*ncells.height + icellY0)*nbins;
468 data->histWeights[0] = cellX*(1.f - cellY);
469 data->histOfs[1] = (icellX1*ncells.height + icellY1)*nbins;
470 data->histWeights[1] = cellX*cellY;
471 data->histOfs[2] = data->histOfs[3] = 0;
472 data->histWeights[2] = data->histWeights[3] = 0;
476 data = &pixData[count1++];
477 if( (unsigned)icellY0 < (unsigned)ncells.height )
482 data->histOfs[0] = (icellX1*ncells.height + icellY1)*nbins;
483 data->histWeights[0] = cellX*cellY;
484 data->histOfs[1] = data->histOfs[2] = data->histOfs[3] = 0;
485 data->histWeights[1] = data->histWeights[2] = data->histWeights[3] = 0;
488 data->gradOfs = (grad.cols*i + j)*2;
489 data->qangleOfs = (qangle.cols*i + j)*2;
490 data->gradWeight = weights(i,j);
493 assert( count1 + count2 + count4 == rawBlockSize );
494 // defragment pixData
495 for( j = 0; j < count2; j++ )
496 pixData[j + count1] = pixData[j + rawBlockSize];
497 for( j = 0; j < count4; j++ )
498 pixData[j + count1 + count2] = pixData[j + rawBlockSize*2];
502 // initialize blockData
503 for( j = 0; j < nblocks.width; j++ )
504 for( i = 0; i < nblocks.height; i++ )
506 BlockData& data = blockData[j*nblocks.height + i];
507 data.histOfs = (j*nblocks.height + i)*blockHistogramSize;
508 data.imgOffset = Point(j*blockStride.width,i*blockStride.height);
513 const float* HOGCache::getBlock(Point pt, float* buf)
515 float* blockHist = buf;
516 assert(descriptor != 0);
518 Size blockSize = descriptor->blockSize;
521 CV_Assert( (unsigned)pt.x <= (unsigned)(grad.cols - blockSize.width) &&
522 (unsigned)pt.y <= (unsigned)(grad.rows - blockSize.height) );
526 CV_Assert( pt.x % cacheStride.width == 0 &&
527 pt.y % cacheStride.height == 0 );
528 Point cacheIdx(pt.x/cacheStride.width,
529 (pt.y/cacheStride.height) % blockCache.rows);
530 if( pt.y != ymaxCached[cacheIdx.y] )
532 Mat_<uchar> cacheRow = blockCacheFlags.row(cacheIdx.y);
534 ymaxCached[cacheIdx.y] = pt.y;
537 blockHist = &blockCache[cacheIdx.y][cacheIdx.x*blockHistogramSize];
538 uchar& computedFlag = blockCacheFlags(cacheIdx.y, cacheIdx.x);
539 if( computedFlag != 0 )
541 computedFlag = (uchar)1; // set it at once, before actual computing
544 int k, C1 = count1, C2 = count2, C4 = count4;
545 const float* gradPtr = (const float*)(grad.data + grad.step*pt.y) + pt.x*2;
546 const uchar* qanglePtr = qangle.data + qangle.step*pt.y + pt.x*2;
548 CV_Assert( blockHist != 0 );
550 for( k = 0; k < blockHistogramSize; k++ )
553 const PixData* _pixData = &pixData[0];
555 for( k = 0; k < C1; k++ )
557 const PixData& pk = _pixData[k];
558 const float* a = gradPtr + pk.gradOfs;
559 float w = pk.gradWeight*pk.histWeights[0];
560 const uchar* h = qanglePtr + pk.qangleOfs;
561 int h0 = h[0], h1 = h[1];
562 float* hist = blockHist + pk.histOfs[0];
563 float t0 = hist[h0] + a[0]*w;
564 float t1 = hist[h1] + a[1]*w;
565 hist[h0] = t0; hist[h1] = t1;
570 const PixData& pk = _pixData[k];
571 const float* a = gradPtr + pk.gradOfs;
572 float w, t0, t1, a0 = a[0], a1 = a[1];
573 const uchar* h = qanglePtr + pk.qangleOfs;
574 int h0 = h[0], h1 = h[1];
576 float* hist = blockHist + pk.histOfs[0];
577 w = pk.gradWeight*pk.histWeights[0];
578 t0 = hist[h0] + a0*w;
579 t1 = hist[h1] + a1*w;
580 hist[h0] = t0; hist[h1] = t1;
582 hist = blockHist + pk.histOfs[1];
583 w = pk.gradWeight*pk.histWeights[1];
584 t0 = hist[h0] + a0*w;
585 t1 = hist[h1] + a1*w;
586 hist[h0] = t0; hist[h1] = t1;
591 const PixData& pk = _pixData[k];
592 const float* a = gradPtr + pk.gradOfs;
593 float w, t0, t1, a0 = a[0], a1 = a[1];
594 const uchar* h = qanglePtr + pk.qangleOfs;
595 int h0 = h[0], h1 = h[1];
597 float* hist = blockHist + pk.histOfs[0];
598 w = pk.gradWeight*pk.histWeights[0];
599 t0 = hist[h0] + a0*w;
600 t1 = hist[h1] + a1*w;
601 hist[h0] = t0; hist[h1] = t1;
603 hist = blockHist + pk.histOfs[1];
604 w = pk.gradWeight*pk.histWeights[1];
605 t0 = hist[h0] + a0*w;
606 t1 = hist[h1] + a1*w;
607 hist[h0] = t0; hist[h1] = t1;
609 hist = blockHist + pk.histOfs[2];
610 w = pk.gradWeight*pk.histWeights[2];
611 t0 = hist[h0] + a0*w;
612 t1 = hist[h1] + a1*w;
613 hist[h0] = t0; hist[h1] = t1;
615 hist = blockHist + pk.histOfs[3];
616 w = pk.gradWeight*pk.histWeights[3];
617 t0 = hist[h0] + a0*w;
618 t1 = hist[h1] + a1*w;
619 hist[h0] = t0; hist[h1] = t1;
622 normalizeBlockHistogram(blockHist);
628 void HOGCache::normalizeBlockHistogram(float* _hist) const
630 float* hist = &_hist[0];
631 size_t i, sz = blockHistogramSize;
634 for( i = 0; i < sz; i++ )
635 sum += hist[i]*hist[i];
636 float scale = 1.f/(std::sqrt(sum)+sz*0.1f), thresh = (float)descriptor->L2HysThreshold;
637 for( i = 0, sum = 0; i < sz; i++ )
639 hist[i] = std::min(hist[i]*scale, thresh);
640 sum += hist[i]*hist[i];
642 scale = 1.f/(std::sqrt(sum)+1e-3f);
643 for( i = 0; i < sz; i++ )
648 Size HOGCache::windowsInImage(Size imageSize, Size winStride) const
650 return Size((imageSize.width - winSize.width)/winStride.width + 1,
651 (imageSize.height - winSize.height)/winStride.height + 1);
654 Rect HOGCache::getWindow(Size imageSize, Size winStride, int idx) const
656 int nwindowsX = (imageSize.width - winSize.width)/winStride.width + 1;
657 int y = idx / nwindowsX;
658 int x = idx - nwindowsX*y;
659 return Rect( x*winStride.width, y*winStride.height, winSize.width, winSize.height );
663 void HOGDescriptor::compute(const Mat& img, vector<float>& descriptors,
664 Size winStride, Size padding,
665 const vector<Point>& locations) const
667 if( winStride == Size() )
668 winStride = cellSize;
669 Size cacheStride(gcd(winStride.width, blockStride.width),
670 gcd(winStride.height, blockStride.height));
671 size_t nwindows = locations.size();
672 padding.width = (int)alignSize(std::max(padding.width, 0), cacheStride.width);
673 padding.height = (int)alignSize(std::max(padding.height, 0), cacheStride.height);
674 Size paddedImgSize(img.cols + padding.width*2, img.rows + padding.height*2);
676 HOGCache cache(this, img, padding, padding, nwindows == 0, cacheStride);
679 nwindows = cache.windowsInImage(paddedImgSize, winStride).area();
681 const HOGCache::BlockData* blockData = &cache.blockData[0];
683 int nblocks = cache.nblocks.area();
684 int blockHistogramSize = cache.blockHistogramSize;
685 size_t dsize = getDescriptorSize();
686 descriptors.resize(dsize*nwindows);
688 for( size_t i = 0; i < nwindows; i++ )
690 float* descriptor = &descriptors[i*dsize];
693 if( !locations.empty() )
696 if( pt0.x < -padding.width || pt0.x > img.cols + padding.width - winSize.width ||
697 pt0.y < -padding.height || pt0.y > img.rows + padding.height - winSize.height )
702 pt0 = cache.getWindow(paddedImgSize, winStride, (int)i).tl() - Point(padding);
703 CV_Assert(pt0.x % cacheStride.width == 0 && pt0.y % cacheStride.height == 0);
706 for( int j = 0; j < nblocks; j++ )
708 const HOGCache::BlockData& bj = blockData[j];
709 Point pt = pt0 + bj.imgOffset;
711 float* dst = descriptor + bj.histOfs;
712 const float* src = cache.getBlock(pt, dst);
714 for( int k = 0; k < blockHistogramSize; k++ )
721 void HOGDescriptor::detect(const Mat& img,
722 vector<Point>& hits, double hitThreshold,
723 Size winStride, Size padding, const vector<Point>& locations) const
726 if( svmDetector.empty() )
729 if( winStride == Size() )
730 winStride = cellSize;
731 Size cacheStride(gcd(winStride.width, blockStride.width),
732 gcd(winStride.height, blockStride.height));
733 size_t nwindows = locations.size();
734 padding.width = (int)alignSize(std::max(padding.width, 0), cacheStride.width);
735 padding.height = (int)alignSize(std::max(padding.height, 0), cacheStride.height);
736 Size paddedImgSize(img.cols + padding.width*2, img.rows + padding.height*2);
738 HOGCache cache(this, img, padding, padding, nwindows == 0, cacheStride);
741 nwindows = cache.windowsInImage(paddedImgSize, winStride).area();
743 const HOGCache::BlockData* blockData = &cache.blockData[0];
745 int nblocks = cache.nblocks.area();
746 int blockHistogramSize = cache.blockHistogramSize;
747 size_t dsize = getDescriptorSize();
749 double rho = svmDetector.size() > dsize ? svmDetector[dsize] : 0;
750 vector<float> blockHist(blockHistogramSize);
752 for( size_t i = 0; i < nwindows; i++ )
755 if( !locations.empty() )
758 if( pt0.x < -padding.width || pt0.x > img.cols + padding.width - winSize.width ||
759 pt0.y < -padding.height || pt0.y > img.rows + padding.height - winSize.height )
764 pt0 = cache.getWindow(paddedImgSize, winStride, (int)i).tl() - Point(padding);
765 CV_Assert(pt0.x % cacheStride.width == 0 && pt0.y % cacheStride.height == 0);
768 const float* svmVec = &svmDetector[0];
770 for( j = 0; j < nblocks; j++, svmVec += blockHistogramSize )
772 const HOGCache::BlockData& bj = blockData[j];
773 Point pt = pt0 + bj.imgOffset;
775 const float* vec = cache.getBlock(pt, &blockHist[0]);
776 for( k = 0; k <= blockHistogramSize - 4; k += 4 )
777 s += vec[k]*svmVec[k] + vec[k+1]*svmVec[k+1] +
778 vec[k+2]*svmVec[k+2] + vec[k+3]*svmVec[k+3];
779 for( ; k < blockHistogramSize; k++ )
780 s += vec[k]*svmVec[k];
782 if( s >= hitThreshold )
790 vector<Rect> rectangles;
791 vector<Point> locations;
795 void HOGDescriptor::detectMultiScale(
796 const Mat& img, vector<Rect>& foundLocations,
797 double hitThreshold, Size winStride, Size padding,
798 double scale0, int groupThreshold) const
801 foundLocations.clear();
803 const int maxLevels = 64;
805 int t, nthreads = getNumThreads();
806 vector<HOGThreadData> threadData(nthreads);
808 for( t = 0; t < nthreads; t++ )
809 threadData[t].smallerImgBuf.create(img.size(), img.type());
811 vector<double> levelScale(maxLevels);
812 for( levels = 0; levels < maxLevels; levels++ )
814 levelScale[levels] = scale;
815 if( cvRound(img.cols/scale) < winSize.width ||
816 cvRound(img.rows/scale) < winSize.height ||
821 levels = std::max(levels, 1);
822 levelScale.resize(levels);
826 #pragma omp parallel for num_threads(nthreads) schedule(dynamic)
828 for( i = 0; i < levels; i++ )
830 HOGThreadData& tdata = threadData[getThreadNum()];
831 double scale = levelScale[i];
832 Size sz(cvRound(img.cols/scale), cvRound(img.rows/scale));
833 Mat smallerImg(sz, img.type(), tdata.smallerImgBuf.data);
834 if( sz == img.size() )
835 smallerImg = Mat(sz, img.type(), img.data, img.step);
837 resize(img, smallerImg, sz);
838 detect(smallerImg, tdata.locations, hitThreshold, winStride, padding);
839 Size scaledWinSize = Size(cvRound(winSize.width*scale), cvRound(winSize.height*scale));
840 for( size_t j = 0; j < tdata.locations.size(); j++ )
841 tdata.rectangles.push_back(Rect(
842 cvRound(tdata.locations[j].x*scale),
843 cvRound(tdata.locations[j].y*scale),
844 scaledWinSize.width, scaledWinSize.height));
848 for( t = 0; t < nthreads; t++ )
850 HOGThreadData& tdata = threadData[t];
851 std::copy(tdata.rectangles.begin(), tdata.rectangles.end(),
852 std::back_inserter(foundLocations));
855 groupRectangles(foundLocations, groupThreshold, 0.2);
858 vector<float> HOGDescriptor::getDefaultPeopleDetector()
860 static const float detector[] = {
861 0.05359386f, -0.14721455f, -0.05532170f, 0.05077307f,
862 0.11547081f, -0.04268804f, 0.04635834f, -0.05468199f, 0.08232084f,
863 0.10424068f, -0.02294518f, 0.01108519f, 0.01378693f, 0.11193510f,
864 0.01268418f, 0.08528346f, -0.06309239f, 0.13054633f, 0.08100729f,
865 -0.05209739f, -0.04315529f, 0.09341384f, 0.11035026f, -0.07596218f,
866 -0.05517511f, -0.04465296f, 0.02947334f, 0.04555536f,
867 -3.55954492e-003f, 0.07818956f, 0.07730991f, 0.07890715f, 0.06222893f,
868 0.09001380f, -0.03574381f, 0.03414327f, 0.05677258f, -0.04773581f,
869 0.03746637f, -0.03521175f, 0.06955440f, -0.03849038f, 0.01052293f,
870 0.01736112f, 0.10867710f, 0.08748853f, 3.29739624e-003f, 0.10907028f,
871 0.07913758f, 0.10393070f, 0.02091867f, 0.11594022f, 0.13182420f,
872 0.09879354f, 0.05362710f, -0.06745391f, -7.01260753e-003f,
873 5.24702156e-003f, 0.03236255f, 0.01407916f, 0.02207983f, 0.02537322f,
874 0.04547948f, 0.07200756f, 0.03129894f, -0.06274468f, 0.02107014f,
875 0.06035208f, 0.08636236f, 4.53164103e-003f, 0.02193363f, 0.02309801f,
876 0.05568166f, -0.02645093f, 0.04448695f, 0.02837519f, 0.08975694f,
877 0.04461516f, 0.08975355f, 0.07514391f, 0.02306982f, 0.10410084f,
878 0.06368385f, 0.05943464f, 4.58420580e-003f, 0.05220337f, 0.06675851f,
879 0.08358569f, 0.06712101f, 0.06559004f, -0.03930482f, -9.15936660e-003f,
880 -0.05897915f, 0.02816453f, 0.05032348f, 0.06780671f, 0.03377650f,
881 -6.09417039e-004f, -0.01795146f, -0.03083684f, -0.01302475f,
882 -0.02972313f, 7.88706727e-003f, -0.03525961f, -2.50397739e-003f,
883 0.05245084f, 0.11791293f, -0.02167498f, 0.05299332f, 0.06640524f,
884 0.05190265f, -8.27316567e-003f, 0.03033127f, 0.05842173f,
885 -4.01050318e-003f, -6.25105947e-003f, 0.05862958f, -0.02465461f,
886 0.05546781f, -0.08228195f, -0.07234028f, 0.04640540f, -0.01308254f,
887 -0.02506191f, 0.03100746f, -0.04665651f, -0.04591486f, 0.02949927f,
888 0.06035462f, 0.02244646f, -0.01698639f, 0.01040041f, 0.01131170f,
889 0.05419579f, -0.02130277f, -0.04321722f, -0.03665198f, 0.01126490f,
890 -0.02606488f, -0.02228328f, -0.02255680f, -0.03427236f,
891 -7.75165204e-003f, -0.06195229f, 8.21638294e-003f, 0.09535975f,
892 -0.03709979f, -0.06942501f, 0.14579427f, -0.05448192f, -0.02055904f,
893 0.05747357f, 0.02781788f, -0.07077577f, -0.05178314f, -0.10429011f,
894 -0.11235505f, 0.07529039f, -0.07559302f, -0.08786739f, 0.02983843f,
895 0.02667585f, 0.01382199f, -0.01797496f, -0.03141199f, -0.02098101f,
896 0.09029204f, 0.04955018f, 0.13718739f, 0.11379953f, 1.80019124e-003f,
897 -0.04577610f, -1.11108483e-003f, -0.09470536f, -0.11596080f,
898 0.04489342f, 0.01784211f, 3.06850672e-003f, 0.10781866f,
899 3.36498418e-003f, -0.10842580f, -0.07436839f, -0.10535070f,
900 -0.01866805f, 0.16057891f, -5.07316366e-003f, -0.04295658f,
901 -5.90488780e-003f, 8.82003549e-003f, -0.01492646f, -0.05029279f,
902 -0.12875880f, 8.78831954e-004f, -0.01297184f, -0.07592774f,
903 -0.02668831f, -6.93787413e-004f, 0.02406698f, -0.01773298f,
904 -0.03855745f, -0.05877856f, 0.03259695f, 0.12826584f, 0.06292590f,
905 -4.10733931e-003f, 0.10996531f, 0.01332991f, 0.02088735f, 0.04037504f,
906 -0.05210760f, 0.07760046f, 0.06399347f, -0.05751930f, -0.10053057f,
907 0.07505023f, -0.02139782f, 0.01796176f, 2.34400877e-003f, -0.04208319f,
908 0.07355055f, 0.05093350f, -0.02996780f, -0.02219072f, 0.03355330f,
909 0.04418742f, -0.05580705f, -0.05037573f, -0.04548179f, 0.01379514f,
910 0.02150671f, -0.02194211f, -0.13682702f, 0.05464972f, 0.01608082f,
911 0.05309116f, 0.04701022f, 1.33690401e-003f, 0.07575664f, 0.09625306f,
912 8.92647635e-003f, -0.02819123f, 0.10866830f, -0.03439325f,
913 -0.07092371f, -0.06004780f, -0.02712298f, -7.07467366e-003f,
914 -0.01637020f, 0.01336790f, -0.10313606f, 0.04906582f, -0.05732445f,
915 -0.02731079f, 0.01042235f, -0.08340668f, 0.03686501f, 0.06108340f,
916 0.01322748f, -0.07809529f, 0.03774724f, -0.03413248f, -0.06096525f,
917 -0.04212124f, -0.07982176f, -1.25973229e-003f, -0.03045501f,
918 -0.01236493f, -0.06312395f, 0.04789570f, -0.04602066f, 0.08576570f,
919 0.02521080f, 0.02988098f, 0.10314583f, 0.07060035f, 0.04520544f,
920 -0.04426654f, 0.13146530f, 0.08386490f, 0.02164590f, -2.12280243e-003f,
921 -0.03686353f, -0.02074944f, -0.03829959f, -0.01530596f, 0.02689708f,
922 0.11867401f, -0.06043470f, -0.02785023f, -0.04775074f, 0.04878745f,
923 0.06350956f, 0.03494788f, 0.01467400f, 1.17890188e-003f, 0.04379614f,
924 2.03681854e-003f, -0.03958609f, -0.01072688f, 6.43705716e-003f,
925 0.02996500f, -0.03418507f, -0.01960307f, -0.01219154f,
926 -4.37000440e-003f, -0.02549453f, 0.02646318f, -0.01632513f,
927 6.46516960e-003f, -0.01929734f, 4.78711911e-003f, 0.04962371f,
928 0.03809111f, 0.07265724f, 0.05758125f, -0.03741554f, 0.01648608f,
929 -8.45285598e-003f, 0.03996826f, -0.08185477f, 0.02638875f,
930 -0.04026615f, -0.02744674f, -0.04071517f, 1.05096330e-003f,
931 -0.04741232f, -0.06733172f, 8.70434940e-003f, -0.02192543f,
932 1.35350740e-003f, -0.03056974f, -0.02975521f, -0.02887780f,
933 -0.01210713f, -0.04828526f, -0.09066251f, -0.09969629f, -0.03665164f,
934 -8.88111943e-004f, -0.06826669f, -0.01866150f, -0.03627640f,
935 -0.01408288f, 0.01874239f, -0.02075835f, 0.09145175f, -0.03547291f,
936 0.05396780f, 0.04198981f, 0.01301925f, -0.03384354f, -0.12201976f,
937 0.06830920f, -0.03715654f, 9.55848210e-003f, 5.05685573e-003f,
938 0.05659294f, 3.90764466e-003f, 0.02808490f, -0.05518097f, -0.03711621f,
939 -0.02835565f, -0.04420464f, -0.01031947f, 0.01883466f,
940 -8.49525444e-003f, -0.09419250f, -0.01269387f, -0.02133371f,
941 -0.10190815f, -0.07844430f, 2.43644323e-003f, -4.09610150e-003f,
942 0.01202551f, -0.06452291f, -0.10593818f, -0.02464746f, -0.02199699f,
943 -0.07401930f, 0.07285886f, 8.87513801e-004f, 9.97662079e-003f,
944 8.46779719e-003f, 0.03730333f, -0.02905126f, 0.03573337f, -0.04393689f,
945 -0.12014472f, 0.03176554f, -2.76015815e-003f, 0.10824566f, 0.05090732f,
946 -3.30179278e-003f, -0.05123822f, 5.04784798e-003f, -0.05664124f,
947 -5.99415926e-003f, -0.05341901f, -0.01221393f, 0.01291318f,
948 9.91760660e-003f, -7.56987557e-003f, -0.06193124f, -2.24549137e-003f,
949 0.01987562f, -0.02018840f, -0.06975540f, -0.06601523f, -0.03349112f,
950 -0.08910118f, -0.03371435f, -0.07406893f, -0.02248047f, -0.06159951f,
951 2.77751544e-003f, -0.05723337f, -0.04792468f, 0.07518548f,
952 2.77279224e-003f, 0.04211938f, 0.03100502f, 0.05278448f, 0.03954679f,
953 -0.03006846f, -0.03851741f, -0.02792403f, -0.02875333f, 0.01531280f,
954 0.02186953f, -0.01989829f, 2.50679464e-003f, -0.10258728f,
955 -0.04785743f, -0.02887216f, 3.85063468e-003f, 0.01112236f,
956 8.29218887e-003f, -0.04822981f, -0.04503597f, -0.03713100f,
957 -0.06988008f, -0.11002295f, -2.69209221e-003f, 1.85383670e-003f,
958 -0.05921049f, -0.06105053f, -0.08458050f, -0.04527602f,
959 8.90329306e-004f, -0.05875023f, -2.68602883e-003f, -0.01591195f,
960 0.03631859f, 0.05493166f, 0.07300330f, 5.53333294e-003f, 0.06400407f,
961 0.01847740f, -5.76280477e-003f, -0.03210877f, 4.25160583e-003f,
962 0.01166520f, -1.44864211e-003f, 0.02253744f, -0.03367080f, 0.06983195f,
963 -4.22323542e-003f, -8.89401045e-003f, -0.07943393f, 0.05199728f,
964 0.06065201f, 0.04133492f, 1.44032843e-003f, -0.09585235f, -0.03964731f,
965 0.04232114f, 0.01750465f, -0.04487902f, -7.59733608e-003f, 0.02011171f,
966 0.04673622f, 0.09011173f, -0.07869188f, -0.04682482f, -0.05080139f,
967 -3.99383716e-003f, -0.05346331f, 0.01085723f, -0.03599333f,
968 -0.07097908f, 0.03551549f, 0.02680387f, 0.03471529f, 0.01790393f,
969 0.05471273f, 9.62048303e-003f, -0.03180215f, 0.05864431f, 0.02330614f,
970 0.01633144f, -0.05616681f, -0.10245429f, -0.08302189f, 0.07291322f,
971 -0.01972590f, -0.02619633f, -0.02485327f, -0.04627592f,
972 1.48853404e-003f, 0.05514185f, -0.01270860f, -0.01948900f, 0.06373586f,
973 0.05002292f, -0.03009798f, 8.76216311e-003f, -0.02474238f,
974 -0.05504891f, 1.74034527e-003f, -0.03333667f, 0.01524987f, 0.11663762f,
975 -1.32344989e-003f, -0.06608453f, 0.05687166f, -6.89525274e-004f,
976 -0.04402352f, 0.09450210f, -0.04222684f, -0.05360983f, 0.01779531f,
977 0.02561388f, -0.11075410f, -8.77790991e-003f, -0.01099504f,
978 -0.10380266f, 0.03103457f, -0.02105741f, -0.07371717f, 0.05146710f,
979 0.10581432f, -0.08617968f, -0.02892107f, 0.01092199f, 0.14551543f,
980 -2.24320893e-003f, -0.05818033f, -0.07390742f, 0.05701261f,
981 0.12937020f, -0.04986651f, 0.10182415f, 0.05028650f, 0.12515625f,
982 0.09175041f, 0.06404983f, 0.01523394f, 0.09460562f, 0.06106631f,
983 -0.14266998f, -0.02926703f, 0.02762171f, 0.02164151f,
984 -9.58488265e-004f, -0.04231362f, -0.09866509f, 0.04322244f,
985 0.05872034f, -0.04838847f, 0.06319253f, 0.02443798f, -0.03606876f,
986 9.38737206e-003f, 0.04289991f, -0.01027411f, 0.08156885f, 0.08751175f,
987 -0.13191354f, 8.16054735e-003f, -0.01452161f, 0.02952677f, 0.03615945f,
988 -2.09128903e-003f, 0.02246693f, 0.09623287f, 0.09412123f, -0.02924758f,
989 -0.07815186f, -0.02203079f, -2.02566991e-003f, 0.01094733f,
990 -0.01442332f, 0.02838561f, 0.11882371f, 7.28798332e-003f, -0.10345965f,
991 0.07561217f, -0.02049661f, 4.44177445e-003f, 0.01609347f, -0.04893158f,
992 -0.08758243f, -7.67420698e-003f, 0.08862378f, 0.06098121f, 0.06565887f,
993 7.32981879e-003f, 0.03558407f, -0.03874352f, -0.02490055f,
994 -0.06771075f, 0.09939223f, -0.01066077f, 0.01382995f, -0.07289080f,
995 7.47184316e-003f, 0.10621431f, -0.02878659f, 0.02383525f, -0.03274646f,
996 0.02137008f, 0.03837290f, 0.02450992f, -0.04296818f, -0.02895143f,
997 0.05327370f, 0.01499020f, 0.04998732f, 0.12938657f, 0.09391870f,
998 0.04292390f, -0.03359194f, -0.06809492f, 0.01125796f, 0.17290455f,
999 -0.03430733f, -0.06255233f, -0.01813114f, 0.11726857f, -0.06127599f,
1000 -0.08677909f, -0.03429872f, 0.04684938f, 0.08161420f, 0.03538774f,
1001 0.01833884f, 0.11321855f, 0.03261845f, -0.04826299f, 0.01752407f,
1002 -0.01796414f, -0.10464549f, -3.30041884e-003f, 2.29343961e-004f,
1003 0.01457292f, -0.02132982f, -0.02602923f, -9.87351313e-003f,
1004 0.04273872f, -0.02103316f, -0.07994065f, 0.02614958f, -0.02111666f,
1005 -0.06964913f, -0.13453490f, -0.06861878f, -6.09341264e-003f,
1006 0.08251446f, 0.15612499f, 2.46531400e-003f, 8.88424646e-003f,
1007 -0.04152999f, 0.02054853f, 0.05277953f, -0.03087788f, 0.02817579f,
1008 0.13939077f, 0.07641046f, -0.03627627f, -0.03015098f, -0.04041540f,
1009 -0.01360690f, -0.06227205f, -0.02738223f, 0.13577610f, 0.15235767f,
1010 -0.05392922f, -0.11175954f, 0.02157129f, 0.01146481f, -0.05264937f,
1011 -0.06595174f, -0.02749175f, 0.11812254f, 0.17404149f, -0.06137035f,
1012 -0.11003478f, -0.01351621f, -0.01745916f, -0.08577441f, -0.04469909f,
1013 -0.06106115f, 0.10559758f, 0.20806813f, -0.09174948f, 7.09621934e-004f,
1014 0.03579374f, 0.07215115f, 0.02221742f, 0.01827742f, -7.90785067e-003f,
1015 0.01489554f, 0.14519960f, -0.06425831f, 0.02990399f, -1.80181325e-003f,
1016 -0.01401528f, -0.04171134f, -3.70530109e-003f, -0.09090481f,
1017 0.09520713f, 0.08845516f, -0.02651753f, -0.03016730f, 0.02562448f,
1018 0.03563816f, -0.03817881f, 0.01433385f, 0.02256983f, 0.02872120f,
1019 0.01001934f, -0.06332260f, 0.04338406f, 0.07001807f, -0.04705722f,
1020 -0.07318907f, 0.02630457f, 0.03106382f, 0.06648342f, 0.10913180f,
1021 -0.01630815f, 0.02910308f, 0.02895109f, 0.08040254f, 0.06969310f,
1022 0.06797734f, 6.08639978e-003f, 4.16588830e-003f, 0.08926726f,
1023 -0.03123648f, 0.02700146f, 0.01168734f, -0.01631594f, 4.61015804e-003f,
1024 8.51359498e-003f, -0.03544224f, 0.03571994f, 4.29766066e-003f,
1025 -0.01970077f, -8.79793242e-003f, 0.09607988f, 0.01544222f,
1026 -0.03923707f, 0.07308586f, 0.06061262f, 1.31683104e-004f,
1027 -7.98222050e-003f, 0.02399261f, -0.06084389f, -0.02743429f,
1028 -0.05475523f, -0.04131311f, 0.03559756f, 0.03055342f, 0.02981433f,
1029 0.14860515f, 0.01766787f, 0.02945257f, 0.04898238f, 0.01026922f,
1030 0.02811658f, 0.08267091f, 0.02732154f, -0.01237693f, 0.11760156f,
1031 0.03802063f, -0.03309754f, 5.24957618e-003f, -0.02460510f, 0.02691451f,
1032 0.05399988f, -0.10133506f, 0.06385437f, -0.01818005f, 0.02259503f,
1033 0.03573135f, 0.01042848f, -0.04153402f, -0.04043029f, 0.01643575f,
1034 0.08326677f, 4.61383024e-004f, -0.05308095f, -0.08536223f,
1035 -1.61011645e-003f, -0.02163720f, -0.01783352f, 0.03859637f,
1036 0.08498885f, -0.01725216f, 0.08625131f, 0.10995087f, 0.09177644f,
1037 0.08498347f, 0.07646490f, 0.05580502f, 0.02693516f, 0.09996913f,
1038 0.09070327f, 0.06667200f, 0.05873008f, -0.02247842f, 0.07772321f,
1039 0.12408436f, 0.12629253f, -8.41997913e-004f, 0.01477783f, 0.09165990f,
1040 -2.98401713e-003f, -0.06466447f, -0.07057302f, 2.09516948e-004f,
1041 0.02210209f, -0.02158809f, -0.08602506f, -0.02284836f,
1042 4.01876355e-003f, 9.56660323e-003f, -0.02073978f, -0.04635138f,
1043 -7.59423291e-003f, -0.01377393f, -0.04559359f, -0.13284740f,
1044 -0.08671406f, -0.03654395f, 0.01142869f, 0.03287891f, -0.04392983f,
1045 0.06142959f, 0.17710890f, 0.10385257f, 0.01329137f, 0.10067633f,
1046 0.12450829f, -0.04476709f, 0.09049144f, 0.04589312f, 0.11167907f,
1047 0.08587538f, 0.04767583f, 1.67188141e-003f, 0.02359802f, -0.03808852f,
1048 0.03126272f, -0.01919029f, -0.05698918f, -0.02365112f, -0.06519032f,
1049 -0.05599358f, -0.07097308f, -0.03301812f, -0.04719102f, -0.02566297f,
1050 0.01324074f, -0.09230672f, -0.05518232f, -0.04712864f, -0.03380903f,
1051 -0.06719479f, 0.01183908f, -0.09326738f, 0.01642865f, 0.03789867f,
1052 -6.61567831e-003f, 0.07796386f, 0.07246574f, 0.04706347f, -0.02523437f,
1053 -0.01696830f, -0.08068866f, 0.06030888f, 0.10527060f, -0.06611756f,
1054 0.02977346f, 0.02621830f, 0.01913855f, -0.08479366f, -0.06322418f,
1055 -0.13570616f, -0.07644490f, 9.31900274e-003f, -0.08095149f,
1056 -0.10197903f, -0.05204025f, 0.01413151f, -0.07800411f, -0.01885122f,
1057 -0.07509381f, -0.10136326f, -0.05212355f, -0.09944065f,
1058 -1.33606605e-003f, -0.06342617f, -0.04178550f, -0.12373723f,
1059 -0.02832736f, -0.06057501f, 0.05830070f, 0.07604282f, -0.06462587f,
1060 8.02447461e-003f, 0.11580125f, 0.12332212f, 0.01978462f,
1061 -2.72378162e-003f, 0.05850752f, -0.04674481f, 0.05148062f,
1062 -2.62542837e-003f, 0.11253355f, 0.09893716f, 0.09785093f, -0.04659257f,
1063 -0.01102429f, -0.07002308f, 0.03088913f, -0.02565549f, -0.07671449f,
1064 3.17443861e-003f, -0.10783514f, -0.02314270f, -0.11089555f,
1065 -0.01024768f, 0.03116021f, -0.04964825f, 0.02281825f, 5.50005678e-003f,
1066 -0.08427856f, -0.14685495f, -0.07719755f, -0.13342668f, -0.04525511f,
1067 -0.09914210f, 0.02588859f, 0.03469279f, 0.04664020f, 0.11688190f,
1068 0.09647275f, 0.10857815f, -0.01448726f, 0.04299758f, -0.06763151f,
1069 1.33257592e-003f, 0.14331576f, 0.07574340f, 0.09166205f, 0.05674926f,
1070 0.11325553f, -0.01106494f, 0.02062161f, -0.11484840f, -0.07492137f,
1071 -0.02864293f, -0.01275638f, -0.06946032f, -0.10101652f, -0.04113498f,
1072 -0.02214783f, -0.01273942f, -0.07480393f, -0.10556041f, -0.07622112f,
1073 -0.09988393f, -0.11453961f, -0.12073903f, -0.09412795f, -0.07146588f,
1074 -0.04054537f, -0.06127083f, 0.04221122f, 0.07688113f, 0.04099256f,
1075 0.12663734f, 0.14683802f, 0.21761774f, 0.12525328f, 0.18431792f,
1076 -1.66402373e-003f, 2.37777247e-003f, 0.01445475f, 0.03509416f,
1077 0.02654697f, 0.01716739f, 0.05374011f, 0.02944174f, 0.11323927f,
1078 -0.01485456f, -0.01611330f, -1.85554172e-003f, -0.01708549f,
1079 -0.05435753f, -0.05302101f, 0.05260378f, -0.03582945f,
1080 -3.42867890e-004f, 1.36076682e-003f, -0.04436073f, -0.04228432f,
1081 0.03281291f, -0.05480836f, -0.10197772f, -0.07206279f, -0.10741059f,
1082 -0.02366946f, 0.10278475f, -2.74783419e-003f, -0.03242477f,
1083 0.02308955f, 0.02835869f, 0.10348799f, 0.19580358f, 0.10252027f,
1084 0.08039929f, 0.05525554f, -0.13250865f, -0.14395352f, 3.13586881e-003f,
1085 -0.03387071f, 8.94669443e-003f, 0.05406157f, -4.97324532e-003f,
1086 -0.01189114f, 2.82919413e-004f, -0.03901557f, -0.04898705f,
1087 0.02164520f, -0.01382906f, -0.01850416f, 0.01869347f, -0.02450060f,
1088 0.02291678f, 0.08196463f, 0.03309153f, -0.10629974f, 0.02473924f,
1089 0.05344394f, -0.02404823f, -0.03243643f, -5.55244600e-003f,
1090 -0.08009996f, 0.02811539f, 0.04235742f, 0.01859004f, 0.04902123f,
1091 -0.01438252f, -0.01526853f, 0.02044195f, -0.05008660f, 0.04244113f,
1092 0.07611816f, 0.04950470f, -0.06020549f, -4.26026015e-003f, 0.13133512f,
1093 -0.01438738f, -0.01958807f, -0.04044152f, -0.12425045f,
1094 2.84353318e-003f, -0.05042776f, -0.09121484f, 7.34345755e-003f,
1095 0.09388847f, 0.11800314f, 4.72295098e-003f, 4.44378285e-003f,
1096 -0.07984917f, -0.03613737f, 0.04490915f, -0.02246483f, 0.04681071f,
1097 0.05240871f, 0.02157206f, -0.04603431f, -0.01197929f, -0.02748779f,
1098 0.13621049f, 0.08812155f, -0.07802048f, 4.86458559e-003f, -0.01598836f,
1099 0.01024450f, -0.03463517f, -0.02304239f, -0.08692665f, 0.06655128f,
1100 0.05785803f, -0.12640759f, 0.02307472f, 0.07337402f, 0.07525434f,
1101 0.04943763f, -0.02241034f, -0.09978238f, 0.14487994f, -0.06570521f,
1102 -0.07855482f, 0.02830222f, -5.29603509e-004f, -0.04669895f,
1103 -0.11822784f, -0.12246452f, -0.15365660f, -0.02969127f, 0.08078201f,
1104 0.13512598f, 0.11505685f, 0.04740673f, 0.01376022f, -0.05852978f,
1105 -0.01537809f, -0.05541119f, 0.02491065f, -0.02870786f, 0.02760978f,
1106 0.23836176f, 0.22347429f, 0.10306466f, -0.06919070f, -0.10132039f,
1107 -0.20198342f, -0.05040560f, 0.27163076f, 0.36987007f, 0.34540465f,
1108 0.29095781f, 0.05649706f, 0.04125737f, 0.07505883f, -0.02737836f,
1109 -8.43431335e-003f, 0.07368195f, 0.01653876f, -0.09402955f,
1110 -0.09574359f, 0.01474337f, -0.07128561f, -0.03460737f, 0.11438941f,
1111 0.13752601f, -0.06385452f, -0.06310338f, 8.19548313e-003f, 0.11622470f,
1112 5.05133113e-003f, -0.07602754f, 0.06695660f, 0.25723928f, 0.09037900f,
1113 0.28826267f, 0.13165380f, -0.05312614f, -0.02137198f, -0.03442232f,
1114 -0.06255679f, 0.03899667f, 0.18391028f, 0.26016650f, 0.03374462f,
1115 0.01860465f, 0.19077586f, 0.18160543f, 3.43634398e-003f, -0.03036782f,
1116 0.19683038f, 0.35378191f, 0.24968483f, -0.03222649f, 0.28972381f,
1117 0.43091634f, 0.30778357f, 0.02335266f, -0.09877399f, -6.85245218e-003f,
1118 0.08945240f, -0.08150686f, 0.02792493f, 0.24806842f, 0.17338486f,
1119 0.06231801f, -0.10432383f, -0.16653322f, -0.13197899f, -0.08531576f,
1120 -0.19271527f, -0.13536365f, 0.22240199f, 0.39219588f, 0.26597717f,
1121 -0.01231649f, 0.01016179f, 0.13379875f, 0.12018334f, -0.04852953f,
1122 -0.07915270f, 0.07036012f, 3.87723115e-003f, -0.06126805f,
1123 -0.15015170f, -0.11406515f, -0.08556531f, -0.07429333f, -0.16115491f,
1124 0.13214062f, 0.25691369f, 0.05697750f, 0.06861912f, -6.02903729e-003f,
1125 -7.94562511e-003f, 0.04799571f, 0.06695165f, -0.01926842f, 0.06206308f,
1126 0.13450983f, -0.06381495f, -2.98370165e-003f, -0.03482971f,
1127 7.53991678e-003f, 0.03895611f, 0.11464261f, 0.01669971f,
1128 8.27818643e-003f, -7.49160210e-003f, -0.11712562f, -0.10650621f,
1129 -0.10353880f, -0.04994106f, -7.65618810e-004f, 0.03023767f,
1130 -0.04759270f, -0.07302686f, -0.05825012f, -0.13156348f, -0.10639747f,
1131 -0.19393684f, -0.09973683f, -0.07918908f, 4.63177625e-004f,
1132 -6.61382044e-004f, 0.15853868f, 0.08561199f, -0.07660093f,
1133 -0.08015265f, -0.06164073f, 0.01882577f, -7.29908410e-004f,
1134 0.06840892f, 0.03843764f, 0.20274927f, 0.22028814f, -5.26101235e-003f,
1135 0.01452435f, -0.06331623f, 0.02865064f, 0.05673740f, 0.12171564f,
1136 0.03837196f, 0.03555467f, -0.02662914f, -0.10280123f, -0.06526285f,
1137 -0.11066351f, -0.08988424f, -0.10103678f, 8.10526591e-003f,
1138 5.95238712e-003f, 0.02617721f, -0.01705742f, -0.10897956f,
1139 -0.08004991f, -0.11271993f, -0.06185647f, -0.06103712f, 0.01597041f,
1140 -0.05923606f, 0.09410726f, 0.22858568f, 0.03263380f, 0.06772990f,
1141 -0.09003516f, 0.01017870f, 0.01931688f, 0.08628357f, -0.01430009f,
1142 0.10954945f, 0.16612452f, -0.02434544f, -0.03310068f, -0.04236627f,
1143 0.01212392f, -6.15046406e-003f, 0.06954194f, 0.03015283f, 0.01787957f,
1144 0.02781667f, -0.05561153f, -8.96244217e-003f, -0.04971489f,
1145 0.07510284f, 0.01775282f, 0.05889897f, -0.07981427f, 0.03647643f,
1146 -3.73833324e-003f, -0.08894575f, -0.06429435f, -0.08068276f,
1147 0.03567704f, -0.07131936f, -7.21910037e-003f, -0.09566668f,
1148 0.17886090f, 0.14911725f, 0.02070032f, -0.05017120f, -0.04992622f,
1149 0.01570143f, -0.09906903f, 0.06456193f, 0.15329507f, 0.18820767f,
1150 0.11689861f, -0.01178513f, -0.02225163f, -0.01905318f, 0.10271224f,
1151 -7.27029052e-003f, 0.11664233f, 0.14796902f, 0.07771893f, 0.02400013f,
1152 -0.05361797f, -0.01972888f, 0.01376177f, 0.06740040f, -0.06525395f,
1153 0.05726178f, -0.02404981f, -0.14018567f, -0.02074987f, -0.04621970f,
1154 -0.04688627f, -0.01842059f, 0.07722727f, -0.04852883f, 0.01529004f,
1155 -0.19639495f, 0.10817073f, 0.03795860f, -0.09435206f, -0.07984378f,
1156 -0.03383440f, 0.11081333f, 0.02237366f, 0.12703256f, 0.21613893f,
1157 0.02918790f, 4.66472283e-003f, -0.10274266f, -0.04854131f,
1158 -3.46305710e-003f, 0.08652268f, 0.02251546f, 0.09636052f, 0.17180754f,
1159 -0.09272388f, 4.59174305e-004f, -0.11723048f, -0.12210111f,
1160 -0.15547538f, 0.07218186f, -0.05297846f, 0.03779940f, 0.05150875f,
1161 -0.03802310f, 0.03870645f, -0.15250699f, -0.08696499f, -0.02021560f,
1162 0.04118926f, -0.15177974f, 0.01577647f, 0.10249301f, 7.50041893e-003f,
1163 0.01721806f, -0.06828983f, -0.02397596f, -0.06598977f, -0.04317593f,
1164 -0.08064980f, 6.66632550e-003f, 0.03333484f, 0.07093620f, 0.08231064f,
1165 -0.06577903f, -0.06698844f, -0.06984019f, -0.06508023f, -0.14145090f,
1166 -0.02393239f, 0.06485303f, 8.83263443e-003f, 0.09251080f, -0.07557579f,
1167 -0.05067699f, -0.09798748f, -0.06703258f, -0.14056294f, 0.03245994f,
1168 0.12554143f, 0.01761621f, 0.12980327f, -0.04081950f, -0.11906909f,
1169 -0.14813015f, -0.08376863f, -0.12200681f, 0.04988137f, 0.05424247f,
1170 -3.90952639e-003f, 0.03255733f, -0.12717837f, -0.07461493f,
1171 -0.05703964f, -0.01736189f, -0.08026433f, -0.05433894f, -0.01719359f,
1172 0.02886275f, 0.01772653f, -0.09163518f, 3.57789593e-003f, -0.10129993f,
1173 -0.02653764f, -0.08131415f, -0.03847986f, -7.62157550e-004f,
1174 0.06486648f, 0.19675669f, -0.04919156f, -0.07059129f, -0.04857785f,
1175 -0.01042383f, -0.08328653f, 0.03660302f, -0.03696846f, 0.04969259f,
1176 0.08241162f, -0.12514858f, -0.06122676f, -0.03750202f,
1177 6.52989605e-003f, -0.10247213f, 0.02568346f, 4.51781414e-003f,
1178 -0.03734229f, -0.01131264f, -0.05412074f, 8.89345480e-004f,
1179 -0.12388977f, -0.05959237f, -0.12418608f, -0.06151643f, -0.07310260f,
1180 0.02441575f, 0.07023528f, -0.07548289f, -7.57147965e-004f,
1181 -0.09061348f, -0.08112976f, -0.06920306f, 9.54394229e-003f,
1182 -0.01219902f, 1.21273217e-003f, -8.88989680e-003f, -0.08309301f,
1183 -0.04552661f, -0.10739882f, -0.05691034f, -0.13928030f, 0.09027749f,
1184 0.15123098f, 0.03175976f, 0.17763577f, 3.29913251e-004f, 0.05151888f,
1185 -0.09844074f, -0.09475287f, -0.08571247f, 0.16241577f, 0.19336018f,
1186 8.57454538e-003f, 0.11474732f, -0.01493934f, 0.03352379f, -0.08966240f,
1187 -0.02322310f, 0.02663568f, 0.05448750f, -0.03536883f, -0.07210463f,
1188 -0.06807277f, -0.03121621f, -0.05932408f, -0.17282860f, -0.15873498f,
1189 -0.04956378f, 0.01603377f, -0.12385946f, 0.13878587f, 0.21468069f,
1190 0.13510075f, 0.20992437f, 0.08845878f, 0.08104013f, 0.03754176f,
1191 0.12173114f, 0.11103114f, 0.10643122f, 0.13941477f, 0.11640384f,
1192 0.14786847f, 0.01218238f, 0.01160753f, 0.03547940f, 0.08794311f,
1193 -0.01695384f, -0.07692261f, -0.08236158f, 6.79194089e-003f,
1194 -0.02458403f, 0.13022894f, 0.10953187f, 0.09857773f, 0.04735930f,
1195 -0.04353498f, -0.15173385f, -0.17904443f, -0.10450364f, -0.13418166f,
1196 -0.06633098f, -0.03170381f, -0.06839000f, -0.11350126f, -0.06983913f,
1197 0.19083543f, 0.17604128f, 0.07730632f, 0.10022651f, 0.36428109f,
1198 0.28291923f, 0.12688625f, 0.15942036f, 0.14064661f, -0.11201853f,
1199 -0.13969108f, -0.09088077f, -0.14107047f, 0.05117374f,
1200 -2.63348082e-003f, -0.10794610f, -0.09715455f, -0.05284977f,
1201 0.01565668f, 0.05031200f, 0.07021113f, -0.02963028f, 0.01766960f,
1202 0.08333644f, -0.03211382f, 4.90096770e-003f, 0.05186674f, -0.05045737f,
1203 -0.09624767f, -0.02525997f, 0.06916669f, 0.01213916f, 0.05333899f,
1204 -0.03443280f, -0.10055527f, -0.06291115f, 5.42851724e-003f,
1205 -6.30360236e-003f, 0.02270257f, -0.01769792f, 0.03273688f, 0.07746078f,
1206 7.77099328e-003f, 0.05041346f, 0.01648103f, -0.02321534f, -0.09930186f,
1207 -0.02293853f, 0.02034990f, -0.08324204f, 0.08510064f, -0.03732836f,
1208 -0.06465405f, -0.06086946f, 0.13680504f, -0.11469388f, -0.03896406f,
1209 -0.07142810f, 2.67581246e-003f, -0.03639632f, -0.09849060f,
1210 -0.11014334f, 0.17489147f, 0.17610909f, -0.16091567f, -0.07248894f,
1211 0.01567141f, 0.23742996f, 0.07552249f, -0.06270349f, -0.07303379f,
1212 0.25442186f, 0.16903116f, -0.08168741f, -0.05913896f, -0.03954096f,
1213 6.81776879e-003f, -0.05615319f, -0.07303037f, -0.12176382f,
1214 0.12385108f, 0.22084464f, -0.05543206f, -0.03310431f, 0.05731593f,
1215 0.19481890f, 0.04016430f, -0.06480758f, -0.12353460f, 0.18733442f,
1216 -0.09631214f, -0.11192076f, 0.12404587f, 0.15671748f, 0.19256128f,
1217 0.10895617f, 0.03391477f, -0.13032004f, -0.05626907f, -0.09025607f,
1218 0.23485197f, 0.27812332f, 0.26725492f, 0.07255980f, 0.16565137f,
1219 0.22388470f, 0.07441066f, -0.21003133f, -0.08075339f, -0.15031935f,
1220 0.07023834f, 0.10872041f, 0.18156518f, 0.20037253f, 0.13571967f,
1221 -0.11915682f, -0.11131983f, -0.18878011f, 0.06074620f, 0.20578890f,
1222 0.12413109f, 0.03930207f, 0.29176015f, 0.29502738f, 0.27856228f,
1223 -0.01803601f, 0.16646385f, 0.19268319f, 0.01900682f, 0.06026287f,
1224 2.35868432e-003f, 0.01558199f, 0.02707230f, 0.11383014f, 0.12103992f,
1225 0.03907350f, 0.04637353f, 0.09020995f, 0.11919726f, -3.63007211e-003f,
1226 0.02220155f, 0.10336831f, 0.17351882f, 0.12259731f, 0.18983354f,
1227 0.15736865f, 0.01160725f, -0.01690723f, -9.69582412e-004f, 0.07213813f,
1228 0.01161613f, 0.17864859f, 0.24486147f, 0.18208991f, 0.20177495f,
1229 0.05972528f, -8.93934630e-003f, -0.02316955f, 0.14436610f, 0.14114498f,
1230 0.05520950f, 0.06353590f, -0.19124921f, 0.10174713f, 0.29414919f,
1231 0.26448128f, 0.09344960f, 0.15284036f, 0.19797507f, 0.11369792f,
1232 -0.12722753f, -0.21396367f, -0.02008235f, -0.06566695f, -0.01662150f,
1233 -0.03937003f, 0.04778343f, 0.05017274f, -0.02299062f, -0.20208496f,
1234 -0.06395898f, 0.13721776f, 0.22544557f, 0.14888357f, 0.08687132f,
1235 0.27088094f, 0.32206613f, 0.09782200f, -0.18523243f, -0.17232181f,
1236 -0.01041531f, 0.04008654f, 0.04199702f, -0.08081299f, -0.03755421f,
1237 -0.04809646f, -0.05222081f, -0.21709201f, -0.06622940f, 0.02945281f,
1238 -0.04600435f, -0.05256077f, -0.08432942f, 0.02848100f, 0.03490564f,
1239 8.28621630e-003f, -0.11051246f, -0.11210597f, -0.01998289f,
1240 -0.05369405f, -0.08869293f, -0.18799506f, -0.05436598f, -0.05011634f,
1241 -0.05419716f, -0.06151857f, -0.10827805f, 0.04346735f, 0.04016083f,
1242 0.01520820f, -0.12173316f, -0.04880285f, -0.01101406f, 0.03250847f,
1243 -0.06009551f, -0.03082932f, -0.02295134f, -0.06856834f, -0.08775249f,
1244 -0.23793389f, -0.09174541f, -0.05538322f, -0.04321031f, -0.11874759f,
1245 -0.04221844f, -0.06070468f, 0.01194489f, 0.02608565f, -0.03892140f,
1246 -0.01643151f, -0.02602034f, -0.01305472f, 0.03920100f, -0.06514261f,
1247 0.01126918f, -6.27710763e-003f, -0.02720047f, -0.11133634f,
1248 0.03300330f, 0.02398472f, 0.04079665f, -0.10564448f, 0.05966159f,
1249 0.01195221f, -0.03179441f, -0.01692590f, -0.06177841f, 0.01841576f,
1250 -5.51078189e-003f, -0.06821765f, -0.03191888f, -0.09545476f,
1251 0.03030550f, -0.04896152f, -0.02914624f, -0.13283344f, -0.04783419f,
1252 6.07836898e-003f, -0.01449538f, -0.13358212f, -0.09687774f,
1253 -0.02813793f, 0.01213498f, 0.06650011f, -0.02039067f, 0.13356198f,
1254 0.05986415f, -9.12760664e-003f, -0.18780160f, -0.11992817f,
1255 -0.06342237f, 0.01229534f, 0.07143231f, 0.10713009f, 0.11085765f,
1256 0.06569190f, -0.02956399f, -0.16288325f, -0.13993549f, -0.01292515f,
1257 0.03833013f, 0.09130384f, -0.05086257f, 0.05617329f, -0.03896667f,
1258 -0.06282311f, -0.11490010f, -0.14264110f, -0.04530499f, 0.01598189f,
1259 0.09167797f, 0.08663294f, 0.04885277f, -0.05741219f, -0.07565769f,
1260 -0.17136464f, -0.02619422f, -0.02477579f, 0.02679587f, 0.11621952f,
1261 0.08788391f, 0.15520640f, 0.04709549f, 0.04504483f, -0.10214074f,
1262 -0.12293372f, -0.04820546f, -0.05484834f, 0.05473754f, 0.07346445f,
1263 0.05577277f, -0.08209965f, 0.03462975f, -0.20962234f, -0.09324598f,
1264 3.79481679e-003f, 0.03617633f, 0.16742408f, 0.07058107f, 0.10204960f,
1265 -0.06795346f, 3.22807301e-003f, -0.12589309f, -0.17496960f,
1266 0.02078314f, -0.07694324f, 0.12184640f, 0.08997164f, 0.04793497f,
1267 -0.11383379f, -0.08046359f, -0.25716835f, -0.08080962f,
1268 6.80711539e-003f, -0.02930280f, -3.04938294e-003f, -0.11106286f,
1269 -0.04628860f, -0.07821649f, 7.70127494e-003f, -0.10247706f,
1270 1.21042714e-003f, 0.20573859f, -0.03241005f, 8.42972286e-003f,
1271 0.01946464f, -0.01197973f, -0.14579976f, 0.04233614f,
1272 -4.14096704e-003f, -0.06866436f, -0.02431862f, -0.13529138f,
1273 1.25891645e-003f, -0.11425111f, -0.04303651f, -0.01694815f,
1274 0.05720210f, -0.16040207f, 0.02772896f, 0.05498345f, -0.15010567f,
1275 0.01450866f, 0.02350303f, -0.04301004f, -0.04951802f, 0.21702233f,
1276 -0.03159155f, -0.01963303f, 0.18232647f, -0.03263875f,
1277 -2.88476888e-003f, 0.01587562f, -1.94303901e-003f, -0.07789494f,
1278 0.04674156f, -6.25576358e-003f, 0.08925962f, 0.21353747f, 0.01254677f,
1279 -0.06999976f, -0.05931328f, -0.01884327f, -0.04306272f, 0.11794136f,
1280 0.03842728f, -0.03907030f, 0.05636114f, -0.09766009f, -0.02104000f,
1281 8.72711372e-003f, -0.02736877f, -0.05112274f, 0.16996814f, 0.02955785f,
1282 0.02094014f, 0.08414304f, -0.03335762f, -0.03617457f, -0.05808248f,
1283 -0.08872101f, 0.02927705f, 0.27077839f, 0.06075108f, 0.07478261f,
1284 0.15282831f, -0.03908454f, -0.05101782f, -9.51998029e-003f,
1285 -0.03272416f, -0.08735625f, 0.07633440f, -0.07185312f, 0.13841286f,
1286 0.07812646f, -0.12901451f, -0.05488589f, -0.05644578f, -0.03290703f,
1287 -0.11184757f, 0.03751570f, -0.05978153f, -0.09155276f, 0.05657315f,
1288 -0.04328186f, -0.03047933f, -0.01413135f, -0.10181040f, -0.01384013f,
1289 0.20132534f, -0.01536873f, -0.07641169f, 0.05906778f, -0.07833145f,
1290 -0.01523801f, -0.07502609f, -0.09461885f, -0.15013233f, 0.16050665f,
1291 0.09021381f, 0.08473236f, 0.03386267f, -0.09147339f, -0.09170618f,
1292 -0.08498498f, -0.05119187f, -0.10431040f, 0.01041618f, -0.03064913f,
1293 0.09340212f, 0.06448522f, -0.03881054f, -0.04985436f, -0.14794017f,
1294 -0.05200112f, -0.02144495f, 0.04000821f, 0.12420804f, -0.01851651f,
1295 -0.04116732f, -0.11951703f, -0.04879033f, -0.08722515f, -0.08454733f,
1296 -0.10549165f, 0.11251976f, 0.10766345f, 0.19201984f, 0.06128913f,
1297 -0.02734615f, -0.08834923f, -0.16999826f, -0.03548348f,
1298 -5.36092324e-003f, 0.08297954f, 0.07226378f, 0.04194529f, 0.04668673f,
1299 8.73902347e-003f, 0.06980139f, 0.05652480f, 0.05879445f, 0.02477076f,
1300 0.02451423f, 0.12433673f, 0.05600227f, 0.06886370f, 0.03863076f,
1301 0.07459056f, 0.02264139f, 0.01495469f, 0.06344220f, 0.06945208f,
1302 0.02931899f, 0.11719371f, 0.04527427f, 0.03248192f, 2.08271481e-003f,
1303 0.02044626f, 0.11403449f, 0.04303892f, 0.06444661f, 0.04959024f,
1304 0.08174094f, 0.09240247f, 0.04894639f, 0.02252937f, -0.01652530f,
1305 0.07587013f, 0.06064249f, 0.13954395f, 0.02772832f, 0.07093039f,
1306 0.08501238f, 0.01701301f, 0.09055722f, 0.33421436f, 0.20163782f,
1307 0.09821030f, 0.07951369f, 0.08695120f, -0.12757730f, -0.13865978f,
1308 -0.06610068f, -0.10985506f, 0.03406816f, -0.01116336f, -0.07281768f,
1309 -0.13525715f, -0.12844718f, 0.08956250f, 0.09171610f, 0.10092317f,
1310 0.23385370f, 0.34489515f, 0.09901748f, 0.02002922f, 0.12335990f,
1311 0.07606190f, -0.14899330f, -0.15634622f, -0.06494618f, -0.01760547f,
1312 0.03404277f, -0.13208845f, -0.12101169f, -0.18294574f, -0.16560709f,
1313 0.02183887f, -0.02752613f, 0.01813638f, 0.02000757f, 0.01319924f,
1314 0.08030242f, 0.01220535f, 2.98233377e-003f, -0.01307070f, 0.05970297f,
1315 -0.05345284f, -0.03381982f, -9.87543724e-003f, -0.06869387f,
1316 0.03956730f, -0.03108176f, -0.05732809f, 0.02172386f, 0.04159765f,
1317 2.62783933e-003f, 0.04813229f, 0.09358983f, -8.18389002e-003f,
1318 0.01724574f, -0.02547474f, -0.04967288f, -0.02390376f, 0.06640504f,
1319 -0.06306566f, 0.01137518f, 0.05589378f, -0.08237787f, 0.02455001f,
1320 -0.03059422f, -0.08953978f, 0.06851497f, 0.07190268f, -0.07610799f,
1321 7.87237938e-003f, -7.85830803e-003f, 0.06006952f, -0.01126728f,
1322 -2.85743061e-003f, -0.04772895f, 0.01884944f, 0.15005857f,
1323 -0.06268821f, -0.01989072f, 0.01138399f, 0.08760451f, 0.03879007f,
1324 -9.66926850e-003f, -0.08012961f, 0.06414555f, -0.01362950f,
1325 -0.09135523f, 0.01755159f, 0.04459474f, 0.09650917f, 0.05219948f,
1326 -2.19440833e-003f, -0.07037939f, -0.01599054f, 0.13103317f,
1327 -0.02492603f, -0.01032540f, -0.02903307f, 0.04489160f, 0.05148086f,
1328 0.01858173f, -0.02919228f, 0.08299296f, -0.04590359f, -0.15745632f,
1329 -0.09068198f, -0.02972453f, 0.12985018f, 0.22320485f, 0.24261914f,
1330 0.03642650f, -0.05506422f, 2.67413049e-003f, -0.03834032f, 0.06449424f,
1331 0.03834866f, 0.03816991f, 0.25039271f, 0.34212017f, 0.32433882f,
1332 0.18824573f, -0.08599839f, -0.17599408f, -0.15317015f, -0.09913155f,
1333 -0.02856072f, -0.05304699f, -1.06437842e-003f, -0.06641813f,
1334 -0.07509298f, 0.01463361f, -0.07551918f, -0.04510373f,
1335 -8.44620075e-003f, 0.01772176f, 0.04068235f, 0.20295307f, 0.15719447f,
1336 0.05712103f, 0.26296997f, 0.14657754f, 0.01547317f, -0.05052776f,
1337 -0.03881342f, -0.01437883f, -0.04930177f, 0.11719568f, 0.24098417f,
1338 0.26468599f, 0.31698579f, 0.10103608f, -0.01096375f, -0.01367013f,
1339 0.17104232f, 0.20065314f, 2.67622480e-003f, -0.01190034f, 0.18301608f,
1340 0.09459770f, -0.06357619f, -0.06473801f, 0.01377906f, -0.10032775f,
1341 -0.06388740f, 3.80393048e-003f, 0.06206078f, 0.10349120f, 0.26804337f,
1342 8.17918684e-003f, -0.02314351f, 9.34422202e-003f, 0.09198381f,
1343 0.03681326f, -8.77339672e-003f, -0.09662418f, -0.02715708f,
1344 0.13503517f, 0.08962728f, -6.57071499e-003f, -0.03201199f, 0.28510824f,
1345 0.32095715f, 0.18512695f, -0.14230858f, -0.14048551f, -0.07181299f,
1346 -0.08575408f, -0.08661680f, -0.17416079f, 7.54326640e-004f,
1347 0.05601677f, 0.13585392f, -0.04960437f, -0.07708392f, 0.10676333f,
1348 -0.04407546f, -0.07209078f, 0.03663663f, 0.28949317f, 0.41127121f,
1349 0.27431169f, -0.06900328f, -0.21474190f, -0.15578632f, -0.19555484f,
1350 -0.15209621f, -0.11269179f, 0.07416003f, 0.18991330f, 0.26858172f,
1351 0.01952259f, 0.01017922f, 0.02159843f, -4.95165400e-003f, -0.04368168f,
1352 -0.12721671f, -0.06673957f, -0.11275250f, 0.04413409f, 0.05578312f,
1353 0.03896771f, 0.03566417f, -0.05871816f, -0.07388090f, -0.17965563f,
1354 -0.08570268f, -0.15273231f, -0.06022318f, -0.06999847f,
1355 -6.81510568e-003f, 0.06294262f, -6.54901436e-004f, -0.01128654f,
1356 -0.02289657f, 0.04849290f, 0.04140804f, 0.23681939f, 0.14545733f,
1357 0.01989965f, 0.12032662f, 3.87463090e-003f, -6.02597650e-003f,
1358 -0.05919775f, -0.03067224f, -0.07787777f, 0.10834727f, 0.02153730f,
1359 0.02765649f, 0.03975543f, -0.12182906f, -0.04900113f, -0.09940100f,
1360 -0.06453611f, -0.13757215f, -0.03721382f, 0.02827376f, -0.04351249f,
1361 0.01907038f, -0.10284120f, -0.05671160f, -0.10760647f, -0.09624009f,
1362 -0.09565596f, -0.01303654f, 0.03080539f, 0.01416511f, 0.05846142f,
1363 -5.42971538e-003f, 0.06221476f, -0.03320325f, -0.06791797f,
1364 -0.05791342f, 0.12851369f, 0.14990346f, 0.03634374f, 0.14262885f,
1365 0.04330391f, 0.05032569f, -0.05631914f, 0.01606137f, 0.04387223f,
1366 0.22344995f, 0.15722635f, -0.04693628f, 0.03006579f, -2.52882647e-003f,
1367 0.05717621f, -0.07529724f, -0.02848588f, -0.06868757f,
1368 -4.51729307e-003f, 0.06466042f, -0.05935378f, -0.04704857f,
1369 -0.07363959f, 0.04843248f, -0.13421375f, -0.09789340f, -0.10255270f,
1370 0.03509852f, 0.04751543f, -0.03822323f, 0.09740467f, 0.04762916f,
1371 0.03940146f, -0.08283259f, 0.09552965f, 0.05038739f, 0.21258622f,
1372 0.09646992f, 0.03241193f, 0.05167701f, 0.04614570f, 0.04330090f,
1373 -0.02671840f, -0.06259909f, -0.02301898f, 0.18829170f, 0.10522786f,
1374 0.04313190f, 0.01670948f, -0.08421925f, 0.05911417f, -0.10582602f,
1375 -0.04855484f, -0.08373898f, 0.07775915f, 0.03723533f, -0.12047344f,
1376 4.86345543e-003f, -0.10520902f, 0.06571782f, -0.07528137f,
1377 -0.03245651f, -0.09869066f, -0.02917477f, -0.18293270f, 0.14810945f,
1378 9.24033765e-003f, -0.04354914f, 0.02266885f, -0.11872729f,
1379 -0.04016589f, 0.02830229f, 0.22539048f, 0.20565644f, 0.16701797f,
1380 0.09019924f, 0.01300652f, 0.09760600f, -0.03675831f, -0.01935448f,
1381 -0.06894835f, 0.08077277f, 0.19047537f, 0.11312226f, 0.04106043f,
1382 -0.11187182f, 0.04312806f, -0.18548580f, -0.11287174f, -0.08794551f,
1383 0.02078281f, -0.15295486f, 0.11806386f, -0.01103218f, -0.15971117f,
1384 0.02153538f, -0.05232147f, -0.10835317f, -0.13910367f, 0.05920752f,
1385 -0.10122602f, 0.20174250f, 0.09105796f, -0.01881348f, 0.09559010f,
1386 -0.03725745f, -0.09442931f, -0.09763174f, 0.05854454f, 0.08287182f,
1387 0.12919849f, 0.08594352f, -2.49806582e-003f, 0.02398440f,
1388 5.67950122e-003f, -0.06296340f, -0.12993270f, 0.03855852f, 0.05186560f,
1389 0.10839908f, -0.03380463f, -0.12654832f, -0.05399339f, -0.07456800f,
1390 -0.04736232f, -0.10164231f, 0.07496139f, 0.08125214f, 0.07656177f,
1391 -0.04999603f, -0.12823077f, -0.07692395f, -0.11317524f, -0.09118655f,
1392 -0.05695669f, 0.10477209f, 0.07468581f, 0.01630048f, -8.00961629e-003f,
1393 -0.06582128f, -0.04019095f, -0.04682907f, -0.01907842f, -0.10997720f,
1394 0.04911406f, 0.02931030f, 0.04197735f, -0.05773980f, -0.09670641f,
1395 -0.03594951f, -0.03402121f, -0.07149299f, -0.10566200f, 0.10601286f,
1396 0.06340689f, -0.01518632f, -5.96402306e-003f, -0.07628012f,
1397 -3.52779147e-003f, -0.02683854f, -0.10265494f, -0.02680815f,
1398 0.16338381f, 0.03103515f, 0.02296976f, 0.01624348f, -0.10831620f,
1399 -0.02314233f, -0.04789969f, -0.05530700f, -0.06461314f, 0.10494506f,
1400 0.04642856f, -0.07592955f, -0.06197905f, -0.09042154f, -0.01445521f,
1401 -0.04297818f, -0.11262015f, -0.11430512f, 0.03174541f, -0.03677487f,
1402 -0.02963996f, -0.06610169f, -0.13292049f, -0.07059067f, -0.08444111f,
1403 -0.02640536f, -0.07136250f, 0.04559967f, 0.01459980f, 0.17989251f,
1404 0.04435328f, -0.12464730f, -0.02871115f, -0.10752209f, -0.03393742f,
1405 -0.03791408f, 0.02548251f, 0.01956050f, 0.19245651f, 0.13963254f,
1406 -0.05904696f, -0.07424626f, -0.10411884f, 1.54176133e-003f,
1407 0.01797429f, 0.13025844f, 0.04547642f, -0.05710349f, -0.10697161f,
1408 -0.13489437f, -0.06515755f, -0.06406886f, -4.08572936e-003f,
1409 -0.01336483f, 0.04368737f, -0.11259720f, -0.05701635f, -0.06469971f,
1410 -0.08346602f, -0.04166770f, -0.05795543f, -0.08247511f, -0.05742628f,
1411 0.08452254f, -0.03350224f, 0.13980860f, 0.13252275f, 0.07589617f,
1412 0.07539988f, 0.12155797f, 0.19087289f, 0.15050751f, 0.21250245f,
1413 0.14206800f, 0.01298489f, 0.07450245f, 0.06559097f, 0.01700557f,
1414 0.04512971f, 0.16950700f, 0.10261577f, 0.16389982f, 0.05505059f,
1415 -0.03453077f, 0.08622462f, 0.07935954f, 0.03976260f, 0.02036091f,
1416 3.95744899e-003f, 0.03267065f, 0.15235919f, 0.01297494f, -0.08109194f,
1417 0.01407558f, 4.40693414e-003f, -0.15157418f, -0.11390478f,
1418 -0.07487597f, -7.81322457e-003f, -0.02749545f, -0.10181408f,
1419 0.13755716f, 0.14007211f, 0.13482562f, 0.27517235f, 0.34251109f,
1420 0.07639657f, 0.07268607f, 0.19823882f, 0.16135791f, -0.04186463f,
1421 -0.12784107f, -0.09846287f, 0.03169041f, 0.10974082f, -0.15051922f,
1422 -0.08916726f, -0.07138767f, -0.04153349f, 6.25418453e-003f,
1423 0.01266654f, 0.10533249f, 0.12749144f, 0.15148053f, 0.01498513f,
1424 0.06305949f, -0.01247123f, -0.08778401f, -0.08551880f, -0.11955146f,
1425 -0.08493572f, -0.02901620f, -0.02394859f, -0.13427313f, -0.11053200f,
1426 -0.14413260f, -0.15203285f, 0.03972760f, -3.72127310e-004f,
1427 -0.04200919f, 0.06105104f, 0.01904975f, -0.01106191f,
1428 -7.27445772e-003f, -0.01520341f, 1.10228511e-003f, -0.04949187f,
1429 -0.08013099f, 5.72071038e-003f, 0.08415454f, -0.06523152f, 0.03664081f,
1430 -0.02673042f, -0.12066154f, -0.03702074f, 0.06006580f, 0.01628682f,
1431 -6.17772620e-003f, 0.08192339f, -3.41629819e-003f, 0.02870512f,
1432 0.05807141f, 0.04959986f, 0.04618251f, -0.04901629f, -0.10579574f,
1433 0.02274442f, 0.12070961f, 2.23597488e-003f, 0.09831765f, -0.03019848f,
1434 -0.11181970f, -0.04961075f, 0.02498928f, -0.03714991f, -0.01619653f,
1435 0.02643486f, -7.62964319e-003f, -0.02882290f, -0.06242594f,
1436 -0.08439861f, 0.07220893f, 0.07263952f, 0.01561574f, 0.03091968f,
1437 0.01708712f, -0.03797151f, -3.18561122e-003f, 0.01624021f,
1438 -0.02828573f, 0.11284444f, -1.32280716e-003f, -0.07784860f,
1439 -0.07209100f, 0.03372242f, 0.12154529f, 0.02278104f, -0.05275500f,
1440 -0.01918484f, 0.12989293f, 0.05424401f, 0.02333086f, 0.04029022f,
1441 0.12392918f, 0.09495489f, 0.09190340f, 0.07935889f, 8.76816828e-003f,
1442 0.17148446f, -8.51302687e-003f, -0.08011249f, -0.06796283f,
1443 0.04884845f, 0.01112272f, -0.07835306f, -1.14811445e-003f,
1444 -0.03440760f, 0.02845243f, 0.07695542f, -0.07069533f, -0.01151784f,
1445 -8.53884313e-003f, -0.01662786f, -0.04163864f, 0.05400505f,
1446 0.02859163f, 0.02921852f, 0.05003135f, -6.85718050e-003f, -0.01632611f,
1447 0.07780217f, 0.04042810f, -0.01216440f, 3.60914599e-003f, -0.06322435f,
1448 0.09516726f, 0.12877031f, -9.69162490e-003f, 0.01031179f, 0.05180895f,
1449 -9.34659224e-003f, -0.01644533f, -0.04849347f, -0.04343236f,
1450 0.10514783f, 0.08046635f, -0.04615205f, -0.03975486f, -0.01485525f,
1451 0.13096830f, -0.01517950f, -0.06571898f, -0.04016372f, 0.01849786f,
1452 0.02439670f, 0.08067258f, 1.74824719e-003f, 0.07053747f, 0.08819518f,
1453 -5.08352555e-003f, -0.06550863f, -0.08266170f, -0.07780605f,
1454 0.01453450f, -0.08756890f, 0.01096501f, -8.71319138e-003f, 0.10110464f,
1455 0.02420769f, -0.06708383f, 0.02007811f, 5.93133038e-003f, 0.05398923f,
1456 0.07538138f, 0.02049227f, 0.02242589f, 0.04011070f, -1.44875818e-003f,
1457 -4.19115182e-003f, 0.06367654f, 0.02506934f, 0.02434536f, 0.05879405f,
1458 -8.22952855e-003f, -0.01242441f, 0.04224926f, -0.01754923f,
1459 0.05958161f, 0.03818886f, -0.01830363f, -0.04308917f, -0.04422197f,
1460 -0.02432721f, 0.02264866f, 2.03751423e-003f, 0.01197031f, 0.04439203f,
1461 0.12169247f, 0.03602713f, -0.02599251f, -1.98226492e-003f, 0.02046336f,
1462 -0.02639058f, -1.91242550e-003f, -0.09334669f, -0.03595153f,
1463 -9.88179818e-003f, -0.06848445f, -0.04666303f, -0.09955736f,
1464 -0.04206430f, 0.02609075f, 9.09005292e-003f, -0.07138551f,
1465 -4.22313227e-004f, 0.01766645f, 0.02756404f, 0.01308276f, 0.04052891f,
1466 0.02387515f, 0.05337298f, 0.02500631f, -0.04970853f, -0.12467445f,
1467 0.17604403f, 0.12256411f, -0.07512254f, 8.70451052e-003f, -0.05697548f,
1468 -0.03626474f, -8.76623299e-003f, -0.01210897f, -0.09451522f,
1469 0.07490732f, -0.02008001f, -0.02681278f, -0.06463405f, -0.01517507f,
1470 7.33757764e-003f, 6.07147906e-003f, -0.09316964f, -0.04575328f,
1471 0.13261597f, 0.15424870f, -0.01655918f, -0.02772390f, -0.05243644f,
1472 -0.02356456f, -0.02351753f, -0.10211615f, -0.12873036f, 0.14549787f,
1473 0.12519856f, 4.38762689e-003f, 0.02795992f, 0.05170322f, 0.09223596f,
1474 0.05890015f, 0.02376701f, -0.02777346f, 0.09506908f, 0.02328936f,
1475 -0.02319928f, -0.03218696f, -0.01527841f, -0.01016694f, -0.02674719f,
1476 0.05137179f, 0.01980666f, 0.06544447f, -0.01746171f, 0.01026380f,
1477 0.01561806f, 7.97004555e-004f, 0.07601810f, 0.01907250f, -0.03083035f,
1478 -0.05987392f, 0.09242783f, 0.14555025f, 0.01035827f, 0.03092401f,
1479 -0.09562709f, -0.03802354f, 0.02531144f, 0.03079449f, -0.07100715f,
1480 0.03330721f, -2.69116857e-003f, 0.03167490f, 0.05744999f, 0.03259895f,
1481 1.91266940e-003f, 0.03194578f, 0.07389776f, 0.02198060f, 0.07633314f,
1482 0.03293105f, -0.09103648f, 0.04718142f, 0.06102672f, -0.01003063f,
1483 5.85481385e-003f, -0.01522574f, 0.02323526f, 0.10584345f,
1484 4.35879454e-003f, 0.06107873f, 0.05868603f, -0.03115531f, 0.01214679f,
1485 0.08567052f, 3.93926632e-003f, -0.02521488f, -1.88425183e-003f,
1486 0.02038053f, -6.26854831e-004f, 0.04897438f, -0.04280585f,
1487 -0.04819689f, -0.04812867f, -0.01451186f, 0.05101469f,
1488 -9.01125465e-003f, -0.03333859f, 0.03917955f, 0.04196448f, 0.04292135f,
1489 0.02809529f, 0.02999715f, 0.04081348f, 9.10039060e-003f, 0.09703232f,
1490 0.10379741f, 0.02348725f, -4.72756615e-003f, 0.01027325f, 0.10402658f,
1491 0.12071823f, 0.09817299f, -0.02612033f, 0.03638414f, 0.05896405f,
1492 0.04865025f, 0.04793910f, -0.03882321f, -0.02962117f, -0.01222268f,
1493 0.04071597f, 0.01922777f, -0.02287866f, 0.03328381f, 0.01859092f,
1494 0.09024994f, 0.03804455f, -0.01424510f, 0.01953739f, 0.02509617f,
1495 -0.03390914f, -0.05663941f, -0.01641979f, 0.05848591f, 0.04639670f,
1496 0.02092116f, 0.12911791f, 0.19918139f, 0.07739855f, -7.25806039e-003f,
1497 0.04074838f, 0.03183993f, 1.39251316e-003f, -0.01428625f, 0.01865480f,
1498 0.08529541f, 0.13547510f, 0.11189661f, 0.03998901f, 0.09575938f,
1499 -0.02631102f, -0.03458253f, -0.04749985f, -0.06070716f,
1500 4.71884012e-003f, 0.06445789f, -0.02450038f, -0.05483776f,
1501 -0.04657237f, -0.02030717f, -0.03480766f, -0.09397731f, -0.06399718f,
1502 -0.01804585f, 5.62348310e-003f, -6.64811488e-003f, -0.06517869f,
1503 6.96210237e-003f, -0.01860148f, -0.04245830f, -0.05850367f,
1504 -3.24417115e-003f, 0.07700698f, 0.11290991f, 0.09923030f, -0.02970599f,
1505 0.05592411f, 0.04813979f, -0.09811195f, -0.09357996f, -0.03276114f,
1506 0.05218338f, 0.04141375f, 3.92977800e-003f, -0.05047480f, 0.15960084f,
1507 0.04612800f, -0.03114098f, -0.04650044f, -0.03249795f, -0.02425641f,
1508 -0.04311355f, 0.04307659f, -0.09401883f, -0.04742785f, -0.01254499f,
1509 -0.06598741f, 3.41369561e-003f, -0.05620445f, -7.28127593e-003f,
1510 -0.05998361f, -0.03274450f, -0.07376868f, 3.19015374e-003f,
1511 -0.07733069f, 0.05815864f, -0.02471071f, 0.03850617f, 0.13838784f,
1512 0.15399861f, 0.01731321f, -0.01477586f, 0.10393341f, 0.05159833f,
1513 -0.01945555f, -0.03427503f, -0.04867341f, 0.09237480f, 0.10732719f,
1514 0.06071450f, -0.01355071f, 0.01844356f, -0.03480803f, -0.03796671f,
1515 2.15628621e-004f, -0.05440186f, 0.01889855f, -0.01443413f,
1516 -0.02607902f, -0.02938001f, 0.02720689f, -0.06228397f, -0.02970936f,
1517 -0.03426210f, -0.10280876f, -0.06739304f, -0.05227850f, 0.03360292f,
1518 -0.11278441f, -0.06966180f, -0.13937433f, 9.10932291e-003f,
1519 2.52020749e-004f, -4.07359656e-003f, 0.12310639f, 0.09343060f,
1520 0.07302511f, 0.03222093f, 0.07532879f, 0.03792387f, -0.04985180f,
1521 0.01804602f, 0.02694195f, 0.13481498f, 0.04601225f, 0.04106982f,
1522 0.08511057f, 0.12314661f, 0.01320830f, 0.05044121f, -5.52943908e-003f,
1523 -0.08992624f, -0.02249301f, -0.08181777f, 0.06165213f, -0.03256603f,
1524 -0.01068920f, -0.01323473f, -0.11970232f, -0.04616347f, -0.12088681f,
1525 -0.06762606f, -0.08676834f, -0.06434575f, 0.01772529f, 0.03469615f,
1526 -0.10926618f, 0.03013873f, 0.14030397f, 0.16130108f, 0.17985588f,
1527 0.11281928f, 0.10530639f, 0.08905948f, 0.07733764f, 0.06695238f,
1528 0.02142088f, 0.06438877f, 0.09794453f, 0.05745072f, 0.02788557f,
1529 0.02632830f, 0.07985807f, 4.24902979e-003f, 8.47890321e-003f,
1530 -0.02679466f, -5.28812688e-003f, -0.02162580f, -0.07490715f,
1531 -0.08251337f, -0.02056576f, -0.01026194f, -1.15492963e-003f,
1532 -5.75720915e-004f, -0.07210591f, -0.07320981f, -0.04883312f,
1533 -0.10897151f, -0.07477258f, -0.08867134f, -0.09222437f, -0.10924666f,
1534 -0.10430276f, 0.07953499f, 0.02767959f, 0.11393359f, 0.18779543f,
1535 0.03313421f, 0.02143700f, 0.05852016f, -2.12067598e-003f,
1536 -3.76984011e-003f, 0.02774167f, -0.03124610f, 0.01465141f, 0.01616004f,
1537 -0.01391913f, -0.04404102f, -0.05444227f, -0.14684731f, -0.15016587f,
1538 0.04509468f, 1.29563001e-003f, 0.01398350f, 0.05610404f, -0.04868806f,
1539 -0.04776716f, -8.16873740e-003f, -2.30126386e-003f, -0.02286313f,
1540 0.11983398f, -0.04703261f, -0.08814441f, -0.07585249f, -0.10799607f,
1541 -0.03232087f, 0.01509786f, -0.04843464f, -0.03967846f, 0.09589416f,
1542 0.01352560f, -0.01458119f, 0.01050829f, -0.03038946f, 0.01608388f,
1543 1.11975556e-003f, -0.01250656f, 2.86211423e-003f, 0.04333691f,
1544 -0.14603497f, -0.01946543f, -0.02327525f, -0.01973944f, 0.07944400f,
1545 -0.02224544f, -0.06701808f, 0.03476532f, 0.11505594f, -0.02712801f,
1546 -0.01665113f, 0.06315716f, -0.08205860f, 0.07431999f, 0.04915778f,
1547 -0.04468752f, -0.01490402f, 0.07400476f, -0.11650901f, 0.05102430f,
1548 0.04559118f, -0.05916039f, 0.08840760f, -0.01587902f, -0.14890194f,
1549 0.07857784f, 0.04710254f, -0.05381983f, -0.07331945f, -0.03604643f,
1550 0.15611970f, 0.07649943f, -0.05959348f, -0.02776607f, 0.11098688f,
1551 0.03758875f, -0.04446875f, 0.04933187f, 0.01345535f, 0.06921103f,
1552 0.07364785f, 0.05518956f, 0.02899585f, 0.09375840f, 0.10518434f,
1553 -0.04420241f, 0.01915282f, -3.56386811e-003f, 0.14586878f, 0.10286101f,
1554 -0.04360626f, -0.12723237f, 0.09076386f, 0.11119842f, -0.06035013f,
1555 0.09674817f, 0.08938243f, 0.07065924f, 0.02603180f, 5.84815582e-003f,
1556 -0.05922065f, 0.12360309f, 3.59695964e-003f, 2.99844006e-003f,
1557 0.03697936f, 0.02043072f, 0.04168725f, 0.01025975f, -0.01359980f,
1558 -0.01600920f, 0.02581056f, 0.02329250f, 2.98100687e-003f, 0.01629762f,
1559 0.06652115f, 0.05855627f, 0.01237463f, -0.01297135f, 0.01761587f,
1560 0.05090865f, 0.06549342f, -0.04425945f, 2.43203156e-003f,
1561 3.07327788e-003f, 0.06678630f, -0.04303836f, 0.01082393f, -0.06476044f,
1562 0.04077786f, 0.12441979f, 0.08237778f, 0.07424165f, 0.04065890f,
1563 0.06905543f, 0.09556347f, 0.12724875f, -0.02132082f, 0.08514154f,
1564 -0.04175328f, -0.02666954f, 0.01897836f, 0.03317382f, 9.45465732e-003f,
1565 -0.01238974f, -0.04242500f, -0.01419479f, -0.03545213f, -0.02440874f,
1566 0.08684119f, 0.04212951f, 0.02462858f, -0.01104825f, -5.01706870e-003f,
1567 0.02968982f, 0.02597476f, -0.01568939f, 0.04514892f, 0.06974549f,
1568 0.08670278f, 0.06828108f, 0.10238872f, 0.05405957f, 0.06548470f,
1569 -0.03763957f, 0.01366090f, 0.07069602f, 0.05363748f, 0.04798120f,
1570 0.11706422f, 0.05466456f, -0.01869259f, 0.06344382f, 0.03106543f,
1571 0.08432506f, -0.02061096f, 0.03821088f, -6.92190882e-003f,
1572 6.40467042e-003f, -0.01271779f, 6.89014705e-005f, 0.04541415f,
1573 -0.01899539f, -0.05020239f, 0.03000903f, 0.01090422f, 4.52452758e-003f,
1574 0.02573632f, -0.02388454f, -0.04200457f, 1.72783900e-003f,
1575 -0.05978370f, -0.02720562f, 0.06573715f, 0.01154317f, 0.01265615f,
1576 0.07375994f, -9.19828378e-003f, -0.04914120f, 0.02124831f, 0.06455322f,
1577 0.04372910f, -0.03310043f, 0.03605788f, -6.78055827e-003f,
1578 9.36202332e-003f, 0.01747596f, -0.06406314f, -0.06812935f, 0.08080816f,
1579 -0.02778088f, 0.02735260f, 0.06393493f, 0.06652229f, 0.05676993f,
1580 0.08640018f, -7.59188086e-003f, -0.02012847f, -0.04741159f,
1581 -0.01657069f, -0.01624399f, 0.05547778f, -2.33309763e-003f,
1582 0.01120033f, 0.06141156f, -0.06285004f, -0.08732341f, -0.09313398f,
1583 -0.04267832f, 5.57443965e-003f, 0.04809862f, 0.01773641f,
1584 5.37361018e-003f, 0.14842421f, -0.06298012f, -0.02935147f, 0.11443478f,
1585 -0.05034208f, 5.65494271e-003f, 0.02076526f, -0.04577984f,
1586 -0.04735741f, 0.02961071f, -0.09307127f, -0.04417921f, -0.04990027f,
1587 -0.03940028f, 0.01306016f, 0.06267900f, 0.03758737f, 0.08460117f,
1588 0.13858789f, 0.04862388f, -0.06319809f, -0.05655516f, 0.01885816f,
1589 -0.03285607f, 0.03371567f, -0.07040928f, -0.04514049f, 0.01392166f,
1590 0.08184422f, -0.07230316f, 0.02386871f, 0.02184591f, 0.02605764f,
1591 -0.01033954f, 9.29878280e-003f, 7.67351175e-003f, 0.15189242f,
1592 0.02069071f, -0.09738296f, -0.08894105f, -0.07768748f, 0.02332268f,
1593 -0.01778995f, -0.03258888f, -0.08180822f, -0.08492987f, 0.02290156f,
1594 -0.11368170f, -0.03554465f, -0.04533844f, -0.02861580f, 0.06782424f,
1595 0.01113123f, 0.02453644f, 0.12721945f, 0.08084814f, -0.03607795f,
1596 0.01109122f, 0.04803548f, -0.03489929f, 0.03399536f, -0.05682014f,
1597 8.59533902e-003f, -4.27904585e-003f, 0.03230887f, -0.01300198f,
1598 -0.01038137f, -0.07930113f, 8.33097473e-003f, 0.02296994f,
1599 -0.01306500f, -0.01881626f, 0.04413369f, 0.05729880f, -0.03761553f,
1600 0.01942326f, 1.64540811e-003f, -0.03811319f, 0.04190650f, -0.14978096f,
1601 -0.04514487f, 0.01209545f, -5.46460645e-003f, -0.01647195f,
1602 7.63064111e-003f, -0.07494587f, 0.08415288f, 0.10020141f, -0.01228561f,
1603 0.06553826f, 0.04554005f, 0.07890417f, 0.03041138f, 0.01752007f,
1604 0.09208256f, -3.74419295e-004f, 0.10549527f, 0.04686913f, 0.01894833f,
1605 -0.02651412f, -4.34682379e-003f, 5.44942822e-003f, 0.01444484f,
1606 0.05882156f, -0.03336544f, 0.04603891f, -0.10432546f, 0.01923928f,
1607 0.01842845f, -0.01712168f, -0.02222766f, 0.04693324f, -0.06202956f,
1608 -0.01422159f, 0.08732220f, -0.07706107f, 0.02661049f, -0.04300238f,
1609 -0.03092422f, -0.03552184f, -0.01886088f, -0.04979934f, 0.03906401f,
1610 0.04608644f, 0.04966111f, 0.04275464f, -0.04621769f, -0.02653212f,
1611 8.57011229e-003f, 0.03839684f, 0.05818764f, 0.03880796f,
1612 -2.76100676e-004f, 0.03076511f, -0.03266929f, -0.05374557f,
1613 0.04986527f, -9.45429131e-003f, 0.03582499f, -2.64564669e-003f,
1614 -1.07461517e-003f, 0.02962313f, -0.01483363f, 0.03060869f, 0.02448327f,
1615 0.01845641f, 0.03282966f, -0.03534438f, -0.01084059f, -0.01119136f,
1616 -1.85360224e-003f, -5.94652840e-004f, -0.04451817f, 2.98327743e-003f,
1617 0.06272484f, -0.02152076f, -3.05971340e-003f, -0.05070828f,
1618 0.01531762f, 0.01282815f, 0.05167150f, 9.46266949e-003f,
1619 -3.34558333e-003f, 0.11442288f, -0.03906701f, -2.67325155e-003f,
1620 0.03069184f, -0.01134165f, 0.02949462f, 0.02879886f, 0.03855566f,
1621 -0.03450781f, 0.09142872f, -0.02156654f, 0.06075062f, -0.06220816f,
1622 0.01944680f, 6.68372354e-003f, -0.06656796f, 8.70784000e-003f,
1623 0.03456013f, 0.02434320f, -0.13236357f, -0.04177035f, -0.02069627f,
1624 0.01068112f, 0.01505432f, -0.07517391f, -3.83571628e-003f,
1625 -0.06298508f, -0.02881260f, -0.13101046f, -0.07221562f,
1626 -5.79945277e-003f, -8.57300125e-003f, 0.03782469f, 0.02762164f,
1627 0.04942456f, -0.02936396f, 0.09597211f, 0.01921411f, 0.06101191f,
1628 -0.04787507f, -0.01379578f, -7.40224449e-003f, -0.02220136f,
1629 -0.01313756f, 7.77558051e-003f, 0.12296968f, 0.02939998f, 0.03594062f,
1630 -0.07788624f, -0.01133144f, 3.99316690e-004f, -0.06090347f,
1631 -0.01122066f, -4.68682544e-003f, 0.07633100f, -0.06748922f,
1632 -0.05640298f, -0.05265681f, -0.01139122f, -0.01624347f, -0.04715714f,
1633 -0.01099092f, 0.01048561f, 3.28499987e-003f, -0.05810167f,
1634 -0.07699911f, -0.03330683f, 0.04185145f, 0.03478536f, 0.02275165f,
1635 0.02304766f, 6.66040834e-003f, 0.10968148f, -5.93013782e-003f,
1636 -0.04858336f, -0.04203213f, -0.09316786f, -6.13074889e-003f,
1637 -0.02544625f, 0.01366201f, 9.18555818e-003f, -0.01846578f,
1638 -0.05622401f, -0.03989377f, -0.07810296f, 6.91275718e-003f,
1639 0.05957597f, -0.03901334f, 0.01572002f, -0.01193903f,
1640 -6.89400872e-003f, -0.03093356f, -0.04136098f, -0.01562869f,
1641 -0.04604580f, 0.02865234f, -0.08678447f, -0.03232484f, -0.05364593f,
1642 -0.01445016f, -0.07003860f, -0.08669746f, -0.04520775f, 0.04274122f,
1643 0.03117515f, 0.08175703f, 0.01081109f, 0.06379741f, 0.06199206f,
1644 0.02865988f, 0.02360346f, 0.06725410f, -0.03248780f, -9.37702879e-003f,
1645 0.08265898f, -0.02245839f, 0.05125763f, -0.01862395f, 0.01973453f,
1646 -0.01994494f, -0.10770868f, 0.03180375f, 3.23935156e-003f,
1647 -0.02142080f, -0.04256190f, 0.04760900f, 0.04282863f, 0.05635953f,
1648 -0.01870849f, 0.05540622f, -0.03042666f, 0.01455277f, -0.06630179f,
1649 -0.05843807f, -0.03739681f, -0.09739155f, -0.03220233f, -0.05620182f,
1650 -0.10381401f, 0.07400211f, 4.20676917e-003f, 0.03258535f,
1651 2.14308966e-003f, 0.05121966f, -0.01274337f, 0.02384761f, 0.06335578f,
1652 -0.07905591f, 0.08375625f, -0.07898903f, -0.06508528f, -0.02498444f,
1653 0.06535810f, 0.03970535f, 0.04895468f, -0.01169566f, -0.03980601f,
1654 0.05682293f, 0.05925463f, -0.01165808f, -0.07936699f, -0.04208954f,
1655 0.01333987f, 0.09051196f, 0.10098671f, -0.03974256f, 0.01238771f,
1656 -0.07501741f, -0.03655440f, -0.04301528f, 0.09216860f,
1657 4.63579083e-004f, 0.02851115f, 0.02142735f, 1.28244064e-004f,
1658 0.02879687f, -0.08554889f, -0.04838862f, 0.08135369f, -0.05756533f,
1659 0.01413900f, 0.03451880f, -0.06619488f, -0.03053130f, 0.02961676f,
1660 -0.07384635f, 0.01135692f, 0.05283910f, -0.07778034f, -0.02107482f,
1661 -0.05511716f, -0.13473752f, 0.03030157f, 0.06722020f, -0.06218817f,
1662 -0.05826827f, 0.06254654f, 0.02895772f, -0.01664000f, -0.03620280f,
1663 -0.01612278f, -1.46097376e-003f, 0.14013411f, -8.96181818e-003f,
1664 -0.03250246f, 3.38630192e-003f, 2.64779478e-003f, 0.03359732f,
1665 -0.02411991f, -0.04229729f, 0.10666174f, -6.66579151f };
1666 return vector<float>(detector, detector + sizeof(detector)/sizeof(detector[0]));