phase 64f
This commit is contained in:
parent
a2a8ba17fc
commit
6ab928fb39
@ -593,14 +593,40 @@ void phase( InputArray src1, InputArray src2, OutputArray dst, bool angleInDegre
|
|||||||
{
|
{
|
||||||
const double *x = (const double*)ptrs[0], *y = (const double*)ptrs[1];
|
const double *x = (const double*)ptrs[0], *y = (const double*)ptrs[1];
|
||||||
double *angle = (double*)ptrs[2];
|
double *angle = (double*)ptrs[2];
|
||||||
for( k = 0; k < len; k++ )
|
k = 0;
|
||||||
|
|
||||||
|
#if CV_SSE2
|
||||||
|
for ( ; k <= len - 4; k += 4)
|
||||||
|
{
|
||||||
|
__m128 v_dst0 = _mm_movelh_ps(_mm_cvtpd_ps(_mm_loadu_pd(x + k)),
|
||||||
|
_mm_cvtpd_ps(_mm_loadu_pd(x + k + 2)));
|
||||||
|
__m128 v_dst1 = _mm_movelh_ps(_mm_cvtpd_ps(_mm_loadu_pd(y + k)),
|
||||||
|
_mm_cvtpd_ps(_mm_loadu_pd(y + k + 2)));
|
||||||
|
|
||||||
|
_mm_storeu_ps(buf[0] + k, v_dst0);
|
||||||
|
_mm_storeu_ps(buf[1] + k, v_dst1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for( ; k < len; k++ )
|
||||||
{
|
{
|
||||||
buf[0][k] = (float)x[k];
|
buf[0][k] = (float)x[k];
|
||||||
buf[1][k] = (float)y[k];
|
buf[1][k] = (float)y[k];
|
||||||
}
|
}
|
||||||
|
|
||||||
FastAtan2_32f( buf[1], buf[0], buf[0], len, angleInDegrees );
|
FastAtan2_32f( buf[1], buf[0], buf[0], len, angleInDegrees );
|
||||||
for( k = 0; k < len; k++ )
|
k = 0;
|
||||||
|
|
||||||
|
#if CV_SSE2
|
||||||
|
for ( ; k <= len - 4; k += 4)
|
||||||
|
{
|
||||||
|
__m128 v_src = _mm_loadu_ps(buf[0] + k);
|
||||||
|
_mm_storeu_pd(angle + k, _mm_cvtps_pd(v_src));
|
||||||
|
_mm_storeu_pd(angle + k, _mm_cvtps_pd(_mm_castsi128_ps(_mm_srli_si128(_mm_castps_si128(v_src), 8))));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for( ; k < len; k++ )
|
||||||
angle[k] = buf[0][k];
|
angle[k] = buf[0][k];
|
||||||
}
|
}
|
||||||
ptrs[0] += len*esz1;
|
ptrs[0] += len*esz1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user