■ 画像の拡大方式(JavaScript版)

小さい画像を大きく拡大する方式には一般に次の2つがあります。
(1)最近隣点方式
   拡大画像上のある点のピクセル値を、対応する元画像上の最も近いピクセル値とする。

(2)線形補間方式
   拡大画像上のある点のピクセル値を、対応する元画像上の(厳密な)点の周囲4点のピクセル値
   を直線で補間して求める。

   元画像上の厳密な点の座標を (x, y)とし、整数 i, j が
    i ≦ x < i + 1,  j ≦ y < j + 1
   を満たす時、点 (x, y) でのピクセル値 P(x, y) を次式で求める。
    P(x, y) = (i+1-x)(j+1-y)P(i+1,j+1) + (x-i)(j+1-y)P(i,j+1) + (i+1-x)(y-j)P(i,j+1) + (x-i)(y-j)P(i+1,j+1)

 ここでは、これら2方式に加えて、線形補間+鮮鋭化による画像の拡大も体験できます。 また、画像の縮小、平行移動もできます。

対象画像は(MyBlog の)フォトアルバム内の写真です。


アルバム:    
写真一覧:


処理:
  
ズーム Up(定率) ズーム Down(定率) ズーム Up/Down(2点指示)
平行移動(指示点を中央に)   平行移動(2点指示)
.. [ 元画像 ] ..    
 
・ズーム Up(定率)/Down(定率) はクリック点を中心に拡大、縮小する。
・ズーム Up/Down(2点指示)は拡大/縮小範囲を対角2点で指示する。
  2点目が1点目の右側の時は拡大
  2点目が1点目の左側の時は縮小
・平行移動(2点指示)は1点目を2点目に移動する。
・リセットで初期状態に戻る。
・鮮鋭化はラプラシアンフィルタを使用する。
  P(i, j) = -P(i, j-1) - P(i-1, j) + 5P(i, j) - P(i+1, j) - P(i, j+1)
ホーム