diff --git a/modules/features2d/src/fast.cpp b/modules/features2d/src/fast.cpp index bd39898b32..03147cc313 100644 --- a/modules/features2d/src/fast.cpp +++ b/modules/features2d/src/fast.cpp @@ -174,8 +174,20 @@ void FAST_t(InputArray _img, std::vector& keypoints, int threshold, bo if(nonmax_suppression) { short d[25]; - for (int _k = 0; _k < 25; _k++) + int _k = 0; + #if CV_ENABLE_UNROLLED + for (; _k + 4 < 25; _k += 5) + { + d[_k] = (short)(ptr[k] - ptr[k + pixel[_k]]); + d[_k + 1] = (short)(ptr[k] - ptr[k + pixel[_k + 1]]); + d[_k + 2] = (short)(ptr[k] - ptr[k + pixel[_k + 2]]); + d[_k + 3] = (short)(ptr[k] - ptr[k + pixel[_k + 3]]); + d[_k + 4] = (short)(ptr[k] - ptr[k + pixel[_k + 4]]); + } + #else + for ( ; _k < 25; _k++) d[_k] = (short)(ptr[k] - ptr[k + pixel[_k]]); + #endif v_int16x8 a0, b0, a1, b1; a0 = b0 = a1 = b1 = v_load(d + 8);