File tree Expand file tree Collapse file tree 1 file changed +9
-20
lines changed
Filter options
Expand file tree Collapse file tree 1 file changed +9
-20
lines changed
Original file line number Diff line number Diff line change 1
1
# <div align =" center " >2019 计算机图像学实验</div >
2
- > 说明. 最开始我用的 cpp 实现了实验内容(代码在 ` cpp ` 目录下),以及自己实现了 fft, 1d,2d 。但是配置 windows上的 opencv 环境失败,代码只经过了静态语法检测,可能还有些地方有 bug。 后来我用的 python 重新实现了除 FFT 的所有算法 ,并将结果记录如下
2
+ > 说明. 最开始我用的 cpp 实现了实验内容(代码在 ` cpp ` 目录下)。但是配置 opencv 环境失败,代码只经过了静态语法检测,可能还有些地方有 bug。 后来我用的 python 重新实现了所有算法 ,并将结果记录如下
3
3
4
4
## 1.1. 使用
5
5
### 1.1.1. 环境
90
90
- Fourier 反变换 幅度,并显示
91
91
- Fourier 反变换 相位,并显示
92
92
93
- - 对于 c++ 实现的 快速傅里叶变换,接口定义如下
94
- ``` c++
95
- typedef complex<double > comp ;
96
-
97
- class dft
98
- {
99
- public:
100
- dft();
101
- ~ dft();
102
- bool dft1d(vector<comp >&, vector<comp > const &);
103
- bool dft2d(vector<comp >&, vector<comp > const &);
104
- bool idft1d(vector<comp >&, vector<comp > const &);
105
- bool dft::_ dft2d(vector<vector<comp >>& dst, vector<vector<comp >> const &src,bool isInvert=false)
106
- bool dft::dft2d(vector<vector<comp >>& dst, vector<vector<comp >> const &src)
107
- bool dft::idft2d(vector<vector<comp >>& dst, vector<vector<comp >> const &src)
108
- };
109
- ```
93
+
110
94
实现的思路是:
111
- - 首先实现 一维的变换 dft1d, idft1d 。
95
+ - 首先实现 一维的变换 fft, ifft 。
112
96
113
97
- 使用 快速傅里叶算法 fft,对每一层, 计算倒序数,进行计算,一个 log(n) 层,每一层计算 n次, 则一维 fft时间复杂度为 ` O(nlog(n)) `
114
98
115
- - 然后利用傅里叶变换的可分离性,计算二维 傅里叶变换dft2d, idft2d: 先对每行进行一维变换, 然后对每列进行一维变换。
99
+ - 然后利用傅里叶变换的可分离性,计算二维 傅里叶变换 fft2, ifft2: 先对每行进行一维变换, 然后对每列进行一维变换。
100
+
101
+
102
+ 傅里叶变换的总结可见[ 我的这篇文章] ( https://mbinary.xyz/dft.html )
116
103
117
104
结果如下
105
+
118
106
![ ] ( result/lab4-rect1.png )
119
107
![ ] ( result/lab4-rect2.png )
120
108
109
+
You can’t perform that action at this time.
0 commit comments