FineView Software Labs






サンプル1 縮小

CZP(サーキュラー ゾーン プレート) 512 x 512 を50%に縮小
使用したczp.pngはこのページの一番下からダウンロードできます。

Lanczos4

91[ms]

Lanczos3

78[ms]

Lanczos2

52[ms]

Mitchell

72[ms]

Lagrange

64[ms]

Hermite

37[ms]

Bell

53[ms]

B-Spline

64[ms]

Gauss

86[ms]

Bicubic (双三次補間)

70[ms]

Bilinear (線形補間)

56[ms]

平均画素法

23[ms]

N-N (最近傍法)

12[ms]



サンプル2 縮小

CZP(サーキュラー ゾーン プレート) 512 x 512 を30%に縮小

Lanczos4

65[ms]

Lanczos3

53[ms]

Lanczos2

41[ms]

Mitchell

36[ms]

Lagrange

37[ms]

Hermite

27[ms]

Bell

43[ms]

B-Spline

42[ms]

Gauss

62[ms]

Bicubic (双三次補間)

36[ms]

Bilinear (線形補間)

44[ms]

平均画素法

28[ms]

N-N (最近傍法)

3[ms]



サンプル3 縮小

Lanczos4

49[ms]

Lanczos3

46[ms]

Lanczos2

28[ms]

Mitchell

32[ms]

Lagrange

39[ms]

Hermite

19[ms]

Bell

23[ms]

B-Spline

33[ms]

Gauss

39[ms]

Bicubic (双三次補間)

48[ms]

Bilinear (線形補間)

34[ms]

平均画素法

13[ms]

N-N (最近傍法)

2[ms]



サンプル4 拡大

[0,0],[1,1]=黒 [0,1],[1,0]=白の横2 x 縦2 の4ピクセル画像を拡大

Lanczos4

3[ms]

Lanczos3

2[ms]

Lanczos2

0[ms]

Mitchell

1[ms]

Lagrange

1[ms]

Hermite

1[ms]

Bell

1[ms]

B-Spline

1[ms]

Gauss

1[ms]

Bicubic (双三次補間)

1[ms]

Bilinear (線形補間)

1[ms]

平均画素法

0[ms]

N-N (最近傍法)

1[ms]



czp.png



// CZP生成コード
procedure CreateCZP(SrcBmp: TBitmap);
var
  x, y: Integer;
  Gray: Integer;
  SrcRow: PByte;
begin
  SrcBmp.PixelFormat := pf24bit;
  SrcBmp.Width := 512;
  SrcBmp.Height := 512;

  for y:=0 to SrcBmp.Height-1 do
  begin
    SrcRow := SrcBmp.ScanLine[y];

    for x:=0 to SrcBmp.Width-1 do
    begin
      Gray := Round(128*sin(PI/512*((x-256)*(x-256))
        + PI/512*((y-256)*(y-256)) ))+128;
      if Gray>255 then
        Gray := 255;
      if Gray<0 then
        Gray := 0;

      SrcRow^ := Gray; Inc(SrcRow);
      SrcRow^ := Gray; Inc(SrcRow);
      SrcRow^ := Gray; Inc(SrcRow);
    end;
  end;
end;
Round(hoge) は Trunc(hoge+0.5)のほうが良いかもしれません。 ↑のczp.pngはRound()を使用して作成しました。
マイナスの値をとるのでRound()で良い。

CZP 参考URL
http://image-d.isp.jp/commentary/czp/index.html