FrontPage  ページ一覧  検索  更新履歴  RSS  ログイン

Psychlops Wiki - (SampleCode) FFT2 CPI Checker 差分

  • 最後の更新で追加された部分はこのように表示します。
  • 最後の更新で削除された部分はこのように表示します。

FFT2でランダムノイズに任意のcycle per imageのフィルタをかけるサンプル。
Sliderの値がCPIに相当。

{{syntax_highlight('cpp')}}
<<<
#include <psychlops.h>
using namespace Psychlops;

void psychlops_main() {
Canvas display(Canvas::window, Display::primary);
Mouse::show();
Color::setGammaValue(1.0,1.0,1.0);

double cutoff1=1.0,cutoff2=1.0;
Range rng;
Widgets::Slider slider[3];
slider[0].link(cutoff1, "cutoff1"  , 0<=rng<=256, 1);
slider[1].link(cutoff2, "cutoff2"  , 0<=rng<=256, 1);


Image source(256,256);
for(int x=0; x<256; x++){
double col = random(1.0);
for(int y=0; y<256; y++){
source.pix(x,y,Color(col));
}
}
Image result, result2;
FFT2::filterImage(source, result, 10, 10, 1.0);
FFT2::filterImage(source, result2, 10, 10, 1.0);


while(!Input::get(Keyboard::esc)) {
display.clear();

result.centering().shift(-200,0).draw();
result2.centering().shift(200,0).draw();

if(slider[0].changed()) {
FFT2::filterImage(source, result, cutoff1, cutoff1, 0.1);
}

if(slider[1].changed()) {
FFT2::filterImage(source, result2, cutoff2, cutoff2, 0.1);
}


for(int i=0; i<3; i++)
{
slider[i].setDatum(Point(0,0)).shift(20, i*25 + 10).draw();
}

display.flip();
}


}
>>>