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

请问如果图像的宽和高不一样,这样如何做DCT和IDCT呢? #21

Open
ZhangYK124 opened this issue May 18, 2022 · 8 comments

Comments

@ZhangYK124
Copy link

No description provided.

@yyk-wew
Copy link
Owner

yyk-wew commented May 18, 2022

DCT不要求图像必须是方阵,可以理解为对行和列依次做1D-DCT,行列顺序是无关的。

@ZhangYK124
Copy link
Author

您好,是这样的,就是如果宽和高不一样的话,那么初始化的self._DCT_all和 self._DCT_all_T的宽和高也不一样,这一句就会报错:x_freq = self._DCT_all @ x @ self._DCT_all_T。以及后面的IDCT也会报错,这问这个如何处理呢

@yyk-wew
Copy link
Owner

yyk-wew commented May 18, 2022

这个是我代码里没有考虑HW不一致的情况,在models里面有一个DCT_mat函数用来生成变换矩阵,可以重写一下这个函数。

@ZhangYK124
Copy link
Author

DCT_mat我已经重新写好了,得到的初始化宽和高不一样,请问x_freq = self._DCT_all @ x @ self._DCT_all_T这一句,和下面的y = self._DCT_all_T @ x_pass @ self._DCT_all应该如何修改呢?比如我输入的是256*128:
x_freq = self._DCT_all @ x @ self._DCT_all_T ——>(256, 128)@(256, 128)@(128, 256),我代码能力比较弱

@yyk-wew
Copy link
Owner

yyk-wew commented May 18, 2022

我不清楚你是如何修改的DCT_mat函数,我觉得如果写成矩阵形式应该是 (256, 256) @ (256, 128) @ (128, 128), 我没有仔细推过公式不一定对,你也可以按照最终的循环展开式来实现。

@ZhangYK124
Copy link
Author

ZhangYK124 commented May 18, 2022 via email

@ZhangYK124
Copy link
Author

您好,请问一下DCT和IDCT能否初始化为不同的矩阵呢?比如:
self._DCT = nn.Parameter(torch.tensor(DCT_mat(size1)).float(), requires_grad=False)
self._DCT_T = nn.Parameter(torch.transpose(torch.tensor(DCT_mat(size2)).float(), 0, 1), requires_grad=False)

    self._IDCT = nn.Parameter(torch.tensor(DCT_mat(size2)).float(), requires_grad=False)
    self._IDCT_T = nn.Parameter(torch.transpose(torch.tensor(DCT_mat(size1)).float(), 0, 1), requires_grad=False)

因为矩阵宽高不一样,这样初始化的话就可以继续操作了,只是不知道原理上能否讲得通呢?

@ZhangYK124
Copy link
Author

好像是行不通哈哈哈哈

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

2 participants