help-gsl
[Top][All Lists]

## Re: [Help-gsl] Help-gsl Digest, Vol 101, Issue 6

 From: 张庆岭 Subject: Re: [Help-gsl] Help-gsl Digest, Vol 101, Issue 6 Date: Sat, 17 Mar 2012 17:03:01 +0800

Hi Brian,
functions we can compute their convolution in this way. I also think that
the scalar coefficient is still the same. Although there is some difference
compared to the ground truth, the final result is still acceptable and
reasonable(in rendering context). And now I am trying to check that the
scalar coefficient is exactly the same. But a little confused about how to
create 2D radially symmetric functions from their 1D profiles. For example,
R=[1,2,3,4], then how to create R's corresponding radially symmetric
function and how to convert the radially symmetric function back to a 1D
profile? Would you please give me some guidance if you have some experience
in it?
Thank you so much!

> Quingling,
>
> That's interesting.  I have a lot of experience with DFTs but none with
> the Hankel transform.  My limited understanding is that the convolution can
> be carried out in this way for two radially symmetric functions as you say.
>  The scalar coefficient should be the same, though the documentation says
> it's the square of what you said.  A simple check would be to forward and
> inverse transform the Kronecker delta function, e.g. the sequence [1, 0, 0,
> 0, ..., 0].
>
> Regards,
> Brian
>
>
> On Thu, Mar 15, 2012 at 7:42 PM, 张庆岭 <address@hidden> wrote:
>
>> Hi Brian,
>> Thank you for your reply! And really sorry for the confusion. Actually, I
>> have two functions R(r) and T(r), which are 2D radially symmetric function,
>> where r=sqrt(x^2+y^2). And now I estimated R(r) and T(r)(1D profile) from
>> some other place. Then I want to compute the convolution of R and T. So the
>> steps should be:
>> 1. create 2D radially symmetric function from 1D profile
>> 2. transform 2D radially symmetric function using 2D DFT and do
>> element-wise multiplication in frequency domain
>> 3. transform the result in the 2nd step back to 1D profile
>> And the reason why I am using Hankel transform is that 1D DHT(with
>> 0th-order of Bessel function of the first kind) is equal to the 2D DFT. So
>> I don't have to transform the 1D profile to 2D radially symmetric function
>> and again transform the 2D result back to 1D profile. And secondly, I
>> noticed that for most of cases, the frequency coefficients of DHT are real
>> numbers, but for DFT the coefficients maybe complex numbers. But I will use
>> one formula in next step which need the frequency coefficients are real
>> numbers.
>> And now my problem is that I think I should multiply a coefficient before
>> F_out, which is the inverse hankel transform of F(the element-wise
>> multiplication of R and T in frequency domain). But I don't know whether
>> this coefficient is still  j_(\nu,M)) or some other value.
>> Really thanks for any help!
>>
>> 在 2012年3月16日 上午1:03，Brian Hawkins <address@hidden>写道：
>>
>> Qingling,
>>>
>>> I don't understand the role of the Hankel transform in your question.
>>>  Why
>>> not simply compute the convolution using DFTs?
>>>
>>> Brian
>>>
>>> On Thu, Mar 15, 2012 at 9:00 AM, <address@hidden> wrote:
>>> >
>>> > Date: Thu, 15 Mar 2012 17:12:18 +0800
>>> > Subject: [Help-gsl] A question about the Discrete Hankel Transform
>>> >
>>> > Hi all,
>>> > Sorry for disturbing, this is the first time I am using mailing lists
>>> and
>>> > don't know whether this is a proper place to ask questions. But I
>>> > encountered some problem and really need some help.
>>> > I am encontered some problem in calculating the inverse hankel
>>> transform of
>>> > functions. Let's say the function is R=[r1,r2,r3,r4], I used
>>> gsl_dht_apply,
>>> > in
>>> >
>>> >
>>> http://www.gnu.org/software/gsl/manual/html_node/Discrete-Hankel-Transform-Functions.htmlto
>>> > get the hankel transform, like this gsl_dht_apply(dht,R,R_out) and
>>> > used
>>> > gsl_dht_apply(dht,R_out,R_prime) to get the inverse transform. It
>>> satisfies
>>> > R=coef*R_prime, where coef=j_(\nu,M) according to the documentation of
>>> > gsl_dht_apply function.
>>> > And now my problem is that for two functions R=[r1,r2,r3,r4] and
>>> > T=[t1,t2,t3,t4] in time domain, I want to compute the convolution of
>>> them
>>> > according to the Convolution Theorem, saying that the convolution of
>>> two
>>> > functions in time domain is the inverse Fourier Transform of two
>>> functions
>>> > element-wise multiplication in the frequency domain, and Hankel
>>> Transform
>>> > of the 0-order Bessel function of first kind is equal to 2D fourier
>>> > transform. Let's say R_out=[ir1,ir2,ir3,ir4] and
>>> T_out=[it1,it3,it3,it4]
>>> > are the inverse hankel transform of R and T respectively. Let F be the
>>> > element-wise multiplication of R_out and T_out, that is
>>> > F=[ir1*it1,ir2*it2,ir3*it3,ir4*it4]. Then how can I get the original
>>> > convolution result of R and T? Is it still R**T=coef*F_out or should I
>>> > multiply some other coeficient?(** stands for convolution and F_out is
>>> the
>>> > inverse hankel transform of F, coef=j_(\nu,M)).
>>> > Thanks for help!
>>> >
>>> > --
>>> > ???
>>> > Qingling Zhang
>>> > Institute of CG & CAD
>>> > School of software Tsinghua University
>>> > Tsinghua University Beijing, P.R.China 100084
>>> >
>>>
>>
>>
>>
>> --
>> 张庆岭
>>
>> Qingling Zhang
>> Institute of CG & CAD
>> School of software Tsinghua University
>> Tsinghua University Beijing, P.R.China 100084
>>
>
>

--

Qingling Zhang