From cc1c613313fb6e7e0b81dc5bf747a80ba45a61d3 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Wed, 20 Apr 2011 07:33:05 +0000 Subject: [PATCH] Fixed #998 and #999: OpponentSIFT and OpponentSURF regression tests failure on Android --- modules/features2d/src/descriptors.cpp | 28 ++++++++++----------- modules/features2d/test/test_features2d.cpp | 6 +++++ 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/modules/features2d/src/descriptors.cpp b/modules/features2d/src/descriptors.cpp index 3ea1c9e13a..06c43d7ebb 100644 --- a/modules/features2d/src/descriptors.cpp +++ b/modules/features2d/src/descriptors.cpp @@ -285,11 +285,11 @@ void convertBGRImageToOpponentColorSpace( const Mat& bgrImage, vector& oppo // Calculate the channels of the opponent color space { // (R - G) / sqrt(2) - MatConstIterator_ rIt = bgrChannels[2].begin(); - MatConstIterator_ gIt = bgrChannels[1].begin(); - MatIterator_ dstIt = opponentChannels[0].begin(); + MatConstIterator_ rIt = bgrChannels[2].begin(); + MatConstIterator_ gIt = bgrChannels[1].begin(); + MatIterator_ dstIt = opponentChannels[0].begin(); float factor = 1.f / sqrt(2.f); - for( ; dstIt != opponentChannels[0].end(); ++rIt, ++gIt, ++dstIt ) + for( ; dstIt != opponentChannels[0].end(); ++rIt, ++gIt, ++dstIt ) { int value = static_cast( static_cast(static_cast(*gIt)-static_cast(*rIt)) * factor ); if( value < 0 ) value = 0; @@ -299,12 +299,12 @@ void convertBGRImageToOpponentColorSpace( const Mat& bgrImage, vector& oppo } { // (R + G - 2B)/sqrt(6) - MatConstIterator_ rIt = bgrChannels[2].begin(); - MatConstIterator_ gIt = bgrChannels[1].begin(); - MatConstIterator_ bIt = bgrChannels[0].begin(); - MatIterator_ dstIt = opponentChannels[1].begin(); + MatConstIterator_ rIt = bgrChannels[2].begin(); + MatConstIterator_ gIt = bgrChannels[1].begin(); + MatConstIterator_ bIt = bgrChannels[0].begin(); + MatIterator_ dstIt = opponentChannels[1].begin(); float factor = 1.f / sqrt(6.f); - for( ; dstIt != opponentChannels[1].end(); ++rIt, ++gIt, ++bIt, ++dstIt ) + for( ; dstIt != opponentChannels[1].end(); ++rIt, ++gIt, ++bIt, ++dstIt ) { int value = static_cast( static_cast(static_cast(*rIt) + static_cast(*gIt) - 2*static_cast(*bIt)) * factor ); @@ -315,12 +315,12 @@ void convertBGRImageToOpponentColorSpace( const Mat& bgrImage, vector& oppo } { // (R + G + B)/sqrt(3) - MatConstIterator_ rIt = bgrChannels[2].begin(); - MatConstIterator_ gIt = bgrChannels[1].begin(); - MatConstIterator_ bIt = bgrChannels[0].begin(); - MatIterator_ dstIt = opponentChannels[2].begin(); + MatConstIterator_ rIt = bgrChannels[2].begin(); + MatConstIterator_ gIt = bgrChannels[1].begin(); + MatConstIterator_ bIt = bgrChannels[0].begin(); + MatIterator_ dstIt = opponentChannels[2].begin(); float factor = 1.f / sqrt(3.f); - for( ; dstIt != opponentChannels[2].end(); ++rIt, ++gIt, ++bIt, ++dstIt ) + for( ; dstIt != opponentChannels[2].end(); ++rIt, ++gIt, ++bIt, ++dstIt ) { int value = static_cast( static_cast(static_cast(*rIt) + static_cast(*gIt) + static_cast(*bIt)) * factor ); diff --git a/modules/features2d/test/test_features2d.cpp b/modules/features2d/test/test_features2d.cpp index a7369b6b34..2e9280b354 100644 --- a/modules/features2d/test/test_features2d.cpp +++ b/modules/features2d/test/test_features2d.cpp @@ -403,6 +403,8 @@ protected: if( calcDescriptors.rows != (int)keypoints.size() ) { ts->printf( cvtest::TS::LOG, "Count of computed descriptors and keypoints count must be equal.\n" ); + ts->printf( cvtest::TS::LOG, "Count of keypoints is %d.\n", (int)keypoints.size() ); + ts->printf( cvtest::TS::LOG, "Count of computed descriptors is %d.\n", calcDescriptors.rows ); ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); return; } @@ -410,6 +412,10 @@ protected: if( calcDescriptors.cols != dextractor->descriptorSize() || calcDescriptors.type() != dextractor->descriptorType() ) { ts->printf( cvtest::TS::LOG, "Incorrect descriptor size or descriptor type.\n" ); + ts->printf( cvtest::TS::LOG, "Expected size is %d.\n", dextractor->descriptorSize() ); + ts->printf( cvtest::TS::LOG, "Calculated size is %d.\n", calcDescriptors.cols ); + ts->printf( cvtest::TS::LOG, "Expected type is %d.\n", dextractor->descriptorType() ); + ts->printf( cvtest::TS::LOG, "Calculated type is %d.\n", calcDescriptors.type() ); ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); return; }