Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sos #7

Closed
fenghao195 opened this issue Jul 10, 2022 · 6 comments
Closed

sos #7

fenghao195 opened this issue Jul 10, 2022 · 6 comments

Comments

@fenghao195
Copy link

您好,您在CLS的forward()方法中有一个循环16次的语句:
for i in range(feature_pad.shape[1]):
#对16个通道中的每个通道进行操作
feature_ch = feature_pad[:, i:i+1, :, :]
clear_feature_ch = get_uperleft_denominator(feature_ch, kernel, kernel_P[:, i:i+1, :, :])
clear_features[:, i:i+1, :, :] = clear_feature_ch[:, :, ks:-ks, ks:-ks]
其中get_uperleft_denominator(feature_ch, kernel, kernel_P[:, i:i+1, :, :])方法我看了好多遍,完全看不懂,只知道这个方法是对经过填充的原始特征,预测的平滑滤波器,模糊核进行一些傅里叶变换操作。您能对下列的4~8行解释下这几行代码是在干嘛吗?跪跪谢!
ps(第四行方法里进行的循环移位操作看的怀疑人生,能看懂但是不知道为什么要这样做!哭)

1.# ------------------------------------------------------
2.# -----------Constraint Least Square Filter-------------
3.def get_uperleft_denominator(img, kernel, grad_kernel):
4. ker_f = convert_psf2otf(kernel, img.size()) # discrete fourier transform of kernel 对模糊核进行离散傅里叶操作
5. ker_p = convert_psf2otf(grad_kernel, img.size()) # discrete fourier transform of kernel
6. denominator = inv_fft_kernel_est(ker_f, ker_p)
7. numerator = torch.rfft(img, 3, onesided=False)
8. deblur = deconv(denominator, numerator)
9. return deblur

@Algolzw
Copy link
Collaborator

Algolzw commented Jul 10, 2022

1、函数get_uperleft_denominator即是论文中的深度约束最小二乘滤波,可以看作对每个特征通道都进行去模糊操作。

2、其中convert_psf2otf表示傅立叶变换,我们在该函数里手动实现了中心化的过程(也就是那些位移操作,移动kernel的4个象限使得低频信息在中心)。

3、inv_fft_kernel_est函数即是对应论文中的公式(16)。复数与其共轭的相乘:zz*=(x+iy)(x-iy)=x^2+y^2

4、deconv就是去卷积操作,即频域的卷积等于空域的乘积。复数乘法:(a+bi)(c+di)=(ac-bd)+(bc+ad)i

整个过程就是把图像和kernel转到频域中,再利用**公式(16)公式(13)**完成特征去卷积运算。在代码中复数x[:, :, :, :, 0]表示实部,x[:, :, :, :, 1]表示虚部。

@fenghao195
Copy link
Author

谢谢您,获益良多

@Algolzw
Copy link
Collaborator

Algolzw commented Jul 10, 2022

没事,感谢关注我们的工作。

@Algolzw Algolzw closed this as completed Jul 10, 2022
@YoungP2001
Copy link

您好,有个疑问,deconv是去卷积操作,但论文里面公式13是在空间域做乘积,没涉及卷积,是我理解错了吗?
image

@Algolzw
Copy link
Collaborator

Algolzw commented Feb 24, 2023

您好,有个疑问,deconv是去卷积操作,但论文里面公式13是在空间域做乘积,没涉及卷积,是我理解错了吗? image

你好,公式13其实就是卷积操作,H是去卷积kernel,Gy是模糊特征。 不过这里的具体实现就是在频域里的乘积。

@YoungP2001
Copy link

您好,有个疑问,deconv是去卷积操作,但论文里面公式13是在空间域做乘积,没涉及卷积,是我理解错了吗? image

你好,公式13其实就是卷积操作,H是去卷积kernel,Gy是模糊特征。 不过这里的具体实现就是在频域里的乘积。

明白了,谢谢您!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants