From: yo1990 <84299449+yo1990@users.noreply.github.com> Date: Sat, 29 May 2021 14:43:21 +0000 (+0900) Subject: Merge pull request #20102 from yo1990:master X-Git-Tag: submit/tizen/20220120.021815~1^2~1^2~33 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d3be58b6d7464c9e7d1d1d4755cc45ba70917071;p=platform%2Fupstream%2Fopencv.git Merge pull request #20102 from yo1990:master Add missing sqrt to magSpectrum(). * https://github.com/opencv/opencv/issues/20100 * slight optimization + fix for double-precision case Co-authored-by: Yuma Oyama Co-authored-by: Vadim Pisarevsky --- diff --git a/modules/imgproc/src/phasecorr.cpp b/modules/imgproc/src/phasecorr.cpp index da2aa5c8d1..07e87281ef 100644 --- a/modules/imgproc/src/phasecorr.cpp +++ b/modules/imgproc/src/phasecorr.cpp @@ -78,9 +78,9 @@ static void magSpectrums( InputArray _src, OutputArray _dst) { if( k == 1 ) dataSrc += cols - 1, dataDst += cols - 1; - dataDst[0] = dataSrc[0]*dataSrc[0]; + dataDst[0] = (float)std::abs(dataSrc[0]); if( rows % 2 == 0 ) - dataDst[(rows-1)*stepDst] = dataSrc[(rows-1)*stepSrc]*dataSrc[(rows-1)*stepSrc]; + dataDst[(rows-1)*stepDst] = (float)std::abs(dataSrc[(rows-1)*stepSrc]); for( j = 1; j <= rows - 2; j += 2 ) { @@ -97,9 +97,9 @@ static void magSpectrums( InputArray _src, OutputArray _dst) { if( is_1d && cn == 1 ) { - dataDst[0] = dataSrc[0]*dataSrc[0]; + dataDst[0] = (float)std::abs(dataSrc[0]); if( cols % 2 == 0 ) - dataDst[j1] = dataSrc[j1]*dataSrc[j1]; + dataDst[j1] = (float)std::abs(dataSrc[j1]); } for( j = j0; j < j1; j += 2 ) @@ -122,9 +122,9 @@ static void magSpectrums( InputArray _src, OutputArray _dst) { if( k == 1 ) dataSrc += cols - 1, dataDst += cols - 1; - dataDst[0] = dataSrc[0]*dataSrc[0]; + dataDst[0] = std::abs(dataSrc[0]); if( rows % 2 == 0 ) - dataDst[(rows-1)*stepDst] = dataSrc[(rows-1)*stepSrc]*dataSrc[(rows-1)*stepSrc]; + dataDst[(rows-1)*stepDst] = std::abs(dataSrc[(rows-1)*stepSrc]); for( j = 1; j <= rows - 2; j += 2 ) { @@ -141,9 +141,9 @@ static void magSpectrums( InputArray _src, OutputArray _dst) { if( is_1d && cn == 1 ) { - dataDst[0] = dataSrc[0]*dataSrc[0]; + dataDst[0] = std::abs(dataSrc[0]); if( cols % 2 == 0 ) - dataDst[j1] = dataSrc[j1]*dataSrc[j1]; + dataDst[j1] = std::abs(dataSrc[j1]); } for( j = j0; j < j1; j += 2 )