首页
IT
登录
6mi
u
盘
搜
搜 索
IT
fftwf频域相乘
fftwf频域相乘
xiaoxiao
2021-03-25
104
bool
HOG
=
true
;
bool
FIXEDWINDOW
=
false
;
bool
MULTISCALE
=
true
;
int
w=
10
;
int
h=
10
;
fftwf_complex
*
r
=
(
fftwf_complex
*)
fftwf_malloc(
sizeof
(
fftwf_complex
)
*w*h
);
for
(
size_t
i
=
0
;
i
<
h;
i++)
{
for
(
size_t
j
=
0
;
j
<
w;
j++)
{
r[i*w+j][
0
]=
i*j*
0.1
+
1
;
r[i*w+j][
1
]=
i*j*
0.2
+
1
;
}
}
fftwf_complex
*
r2
=
(
fftwf_complex
*)
fftwf_malloc(
sizeof
(
fftwf_complex
)
*w*h
);
for
(
size_t
i
=
0
;
i
<
h;
i++)
{
for
(
size_t
j
=
0
;
j
<
w;
j++)
{
r2[i*w+j][
0
]=
i*j*
0.5
+
2
;
r2[i*w+j][
1
]=
i*j*
0.9
+
2
;
}
}
SimpleTracker
tracker(HOG,
FIXEDWINDOW,
MULTISCALE
);
fftwf_complex
*
res=tracker.mulSpectrums(r,r2,w,h,
0
);
for
(
size_t
i
=
0
;
i
<
h;
i++)
{
for
(
size_t
j
=
0
;
j
<
w;
j++)
{
printf
(
"%f+%fi
"
,
r2[i*w+j][
0
],r2[i*w+j][
1
]);
}
printf
(
"\n"
);
}
fftwf_complex
*
SimpleTracker
::mulSpectrums(
fftwf_complex
*
x1,
fftwf_complex
*
x2,
int
w,
int
h,
bool
conj
)
{
fftwf_complex
*
r
=
(
fftwf_complex
*)
fftwf_malloc(
sizeof
(
fftwf_complex
)
*w*h
);
for
(
size_t
i
=
0
;
i
<
h;
i++)
{
for
(
size_t
j
=
0
;
j
<
w;
j++)
{
if
(conj){
r[i*w+j][
0
]=
x1[i*w+j][
0
]*
x2[i*w+j][
0
]
-
x1[i*w+j][
1
]*
(-x2[i*w+j][
1
]);
r[i*w+j][
1
]=
x1[i*w+j][
0
]*
(-x2[i*w+j][
1
]
)+
x1[i*w+j][
1
]*
x2[i*w+j][
0
];
}
else
{
r[i*w+j][
0
]=
x1[i*w+j][
0
]*
x2[i*w+j][
0
]
-
x1[i*w+j][
1
]*
x2[i*w+j][
1
]
;
r[i*w+j][
1
]=
x1[i*w+j][
0
]*
x2[i*w+j][
1
]
+
x1[i*w+j][
1
]*
x2[i*w+j][
0
];
}
}
}
return
r;
}
转载请注明原文地址: https://ju.6miu.com/read-18396.html
技术
最新回复
(
0
)