OSDN Git Service

first
[psychlops/cpp.git] / win32gl / test / fftfirm.cpp
1  #include <psychlops.h>\r
2  using namespace Psychlops;\r
3 \r
4 const int S = 128;\r
5 \r
6  void psychlops_main() {\r
7         Canvas cnvs(1024, 768, Canvas::window);\r
8 \r
9         Image source("test.png");\r
10         Image result;\r
11 \r
12         Image img[5];\r
13         //for(int i=0; i<1000; i++){\r
14                 FFT2 fftworkspace;\r
15                 Matrix source_mat(S,S), filtered_mat, filter;\r
16                 for(int x=1; x<=S; x++)\r
17                         for(int y=1; y<=S; y++)\r
18                                 source_mat(x,y) = random(0.0,1.0);\r
19                 //source_mat=FFT2::makeNoise(64, 64);\r
20                 filter=FFT2::makeFilter(S, S, 8, 12);\r
21 \r
22                 //fftworkspace.set(64,64);\r
23                 //fftworkspace.makeNoise();\r
24                 fftworkspace.set(source_mat);\r
25                 fftworkspace.fft();\r
26                 fftworkspace.filtering(filter);\r
27                 fftworkspace.ifft();\r
28                 fftworkspace.getImage(filtered_mat);\r
29 \r
30                 img[0].from(source_mat);\r
31                 img[1].from(filter);\r
32                 img[2].from(filtered_mat);\r
33 \r
34         while(!Keyboard::esc.pushed())\r
35         {\r
36                 cnvs.clear(0.5);\r
37                 for(int i=0; i<5; i++) img[i].centering().shift(-400,0).shift((S+1)*i,0).draw();\r
38                 cnvs.var(Mouse::x, 100, 80);\r
39                 cnvs.var(Mouse::y, 100, 100);\r
40                 cnvs.flip();\r
41         }\r
42 \r
43  }\r
44