Обратное преобразование Фурье

Zzyb
Дата: 25.04.2011 01:20:20
народ, подскажите изза чего при обратном преобразовании фурье на картинке появляется шум??

procedure TForm1.Button2Click(Sender: TObject);
var
  i,j,y,x,u,v :integer;
  re,im,md    :real;
  f           :integer;
  scan  : pByteArray;
begin
     bmp1:=TBitmap.Create;
     bmp2:=TBitmap.Create;
     Jpg := TJPEGImage.Create;
     Jpg.LoadFromFile(opendialog1.FileName);
     Bmp2.Assign(Jpg);
    for y:=0 to M - 1 do  begin
      for x:=0 to N - 1 do  begin
          md := 0;  Re := 0;  Im := 0; f := 1;
          for V:=0 to M - 1 do begin
              for U:=0 to N - 1 do begin
                Re := Re + (f)*irmage[v,u].Re * cos(2*pi*(u*x/M+v*y/N)) -
                           (f)*irmage[v,u].Im * sin(2*pi*(u*x/M+v*y/N));
                Im := Im + sin(2*3.14*(u*x/M+v*y/N)) * irmage[u,v].Im;
              end;
          end;
          if odd(x+y) then f := f*(-1);
          md := sqrt(Re*Re/m*n + Im*Im/m*n);
          i := round(Re*f);
          bmp2.Canvas.Pixels[x,y] := rgb( i, i, i );
      end;
    end;
    image3.Picture.Bitmap.Assign(bmp2);
end;
Zzyb
Дата: 25.04.2011 01:22:11
Zzyb
Дата: 25.04.2011 01:24:45
выше сам исходник, а вот картинка результата
Мыльников Дмитрий
Дата: 25.04.2011 15:02:48
Скорее всего проблема с точностью представления чисел, округлением и преобразованием целых в вещественные и обратно. Почему у вещественных тип real, а не extended или хотя бы double?
mr_idea
Дата: 25.04.2011 21:08:29
странно, у меня шума не было.
а производительность твоего алгоритма какая, например рисунок в 800x600 на машине класса core 2 duo сколько обрабатывается?
Zzyb
Дата: 26.04.2011 11:21:29
mr_idea
странно, у меня шума не было.
а производительность твоего алгоритма какая, например рисунок в 800x600 на машине класса core 2 duo сколько обрабатывается?


))) лдучше не спрашивай!))))
defecator
Дата: 26.04.2011 11:34:07
Zzyb
mr_idea
странно, у меня шума не было.
а производительность твоего алгоритма какая, например рисунок в 800x600 на машине класса core 2 duo сколько обрабатывается?


))) лдучше не спрашивай!))))


Я пользуюсь библиотекой Intel Perfomance Primitives.
Обработка картинки 1024x768x24 на моем Intel Core 2 Quad Q6600 2.4 ГГц занимает меньше секунды.
OracleX
Дата: 26.04.2011 11:34:58
Может быть использовать 3D-ускоритель и сравнить?
OracleX
Дата: 26.04.2011 11:36:46
defecator
Цифровая голография?
Zzyb
Дата: 26.04.2011 11:37:28
кстати проблему решил)

банально забыл множитель перед образом 1/M*N...) по сути не важно куда его вставлять, но я вставил в прямое..

Программа конечно медленная, и вякое такое.. но всеж влажу ее, вдруг кому понадобится для начала...
там еще что то вроди первых попыток фильтра) вобщем он просто обнуляет среднее значение на изображении или просто частоту F(0,0). по гансалесу это фильтр-пробка))))