WIL説明書(C++)  3.0.0
変数
FVCL::GeoTrans::SamplingMode 名前空間

濃度補間方法定数 [詳解]

詳解

濃度補間方法定数

幾何変換で使用可能な濃度補間方法を示す定数を定義します。 幾何変換クラスによって使用できない補間方法もあります。 下表に使用可否の対応を示します。(◎ は可、× は不可を示します)

定数 アフィン変換
(CFvAffine)
射影変換
(CFvPerspective)
平行移動
(CFvShift)
NearestNeighbor
Bilinear
Cubic
Lanczos × ×
Super × ×
Adapt × ×

これら6手法のうち、NearestNeighbor, Bilinear, Cubic の3手法は、拡大率が 1.0 以上の場合に適した手法です。 拡大率が 1.0 未満になる変換の時(つまり縮小をする時)には、 これらの手法はエイリアシング(aliasing)現像を起こします。 このエイリアシング(aliasing)現像を抑制するため、Lanczos, Super, Adapt の3種類のアンチエイリアシング(antialiasing)手法を用意しています。 これらの手法は処理時間がかかりますが、美しい結果画像を得ることが出来ます。

SamplingModeAliasing.png
各補間法によるエイリアシングの違い(1/3に縮小した例)
参照
FVCL::GeoTrans::CFvAffine
FVCL::GeoTrans::CFvAffine::SetSamplingMode
FVCL::GeoTrans::CFvAffine::GetSamplingMode
FVCL::GeoTrans::CFvPerspective
FVCL::GeoTrans::CFvPerspective::SetSamplingMode
FVCL::GeoTrans::CFvPerspective::GetSamplingMode
FVCL::GeoTrans::CFvShift
FVCL::GeoTrans::CFvShift::SetSamplingMode
FVCL::GeoTrans::CFvShift::GetSamplingMode
FVCL::PolarTrans::SamplingMode

変数

const INT NearestNeighbor = 1
 最近傍法 [詳解]
 
const INT Bilinear = 2
 共一次線形補間法 [詳解]
 
const INT Cubic = 4
 三次畳み込み法 [詳解]
 
const INT Lanczos = 8
 Lanczos-windowed Sinc function を使用した濃度補間法 [詳解]
 
const INT Super = 16
 Super-sampling 法 [詳解]
 
const INT Adapt = 32
 Adaptive Super-sampling 法 [詳解]
 

変数詳解

const INT FVCL::GeoTrans::SamplingMode::NearestNeighbor = 1

最近傍法

最近傍法は、各補間法の中で最も高速ですが、最も精度が低い方法です。 濃度値は(x,y)を単純に丸めた座標( (INT)(x+0.5), (INT)(y+0.5) ) の濃度値が使用されます。

const INT FVCL::GeoTrans::SamplingMode::Bilinear = 2

共一次線形補間法

共一次線形補間法は、最近傍法よりは低速で、精度の良い方法です。 一方、三次畳み込み法よりは高速で、精度は低くなります。 この方法では、(x,y) の周囲4点の濃度値 D(u,v), D(u+1,v), D(u,v+1), D(u+1,v+1) を使用して、 次の式で濃度値を決定します。

\[ D(x,y) = \left[ (v+1)-y, y-v \right] \left[\begin{array}{cc} D(u,v) & D(u+1,v) \\ D(u,v+1) & D(u+1,v+1) \end{array}\right] \left[\begin{array}{c} (u+1) - x \\ x - u \end{array}\right] \]

fie_geotrans_interpolation-biliner.png
const INT FVCL::GeoTrans::SamplingMode::Cubic = 4

三次畳み込み法

三次畳み込み法は共一次線形補間法より低速で、精度の良い方法です。 この方法では、(x,y) の周囲16点の濃度値を使用して、次の式で濃度値を決定します。

\[ D(x,y) = \left[\begin{array}{c} f((v-1)-y) \\ f(v-y) \\ f((v+1)-y) \\ f((v+2)-y) \end{array}\right]^T \left[\begin{array}{cccc} D(u-1,v-1) & D(u,v-1) & D(u+1,v-1) & D(u+2,v-1) \\ D(u-1,v) & D(u,v) & D(u+1,v) & D(u+2,v) \\ D(u-1,v+1) & D(u,v-1) & D(u+1,v+1) & D(u+2,v+1) \\ D(u-1,v+2) & D(u,v-1) & D(u+1,v+2) & D(u+2,v+2) \end{array}\right] \left[\begin{array}{c} f((u-1)-x) \\ f(u-x) \\ f((u+1)-x) \\ f((u+2)-x) \end{array}\right] \]

\[ f(t) = \left\{ \begin{array}{ll} \frac{3|t|^3-5|t|^2+2}{2} & (0 \le t<1) \\ \frac{-|t|^3+5|t|^2-8|t|+4}{2} & (1 \le t<2) \\ 0 & (2 \le t) \end{array} \right. \]

fie_geotrans_interpolation-cubic.png
const INT FVCL::GeoTrans::SamplingMode::Lanczos = 8

Lanczos-windowed Sinc function を使用した濃度補間法

Lanczos 法 は Lanczos-windowed Sinc 関数を使って補間係数を計算します。 畳み込みを行うウインドウサイズは、縮小比率より自動的に決定されます。

\[ f(t) = \left\{ \begin{array}{ll} \frac{\sin(\pi t)}{\pi t}\frac{\sin(\pi \frac{t}{2})}{\pi \frac{t}{2}} & (|t| < 2) \\ 0 & (2 \le |t|) \end{array} \right. \]

const INT FVCL::GeoTrans::SamplingMode::Super = 16

Super-sampling 法

Super-sampling 法は、変換する時に各ピクセルをさらに細かいサブピクセルに分解して、 それぞれのサブピクセルの明るさの平均値をピクセル値として適用する方法です。 平均値を取るサブピクセル数は縮小比率によって内部で自動的に決定します。

const INT FVCL::GeoTrans::SamplingMode::Adapt = 32

Adaptive Super-sampling 法

Adaptive Super-sampling 法は Super-sampling 法とほぼ同じですが、 Super-sampling 法が 縮小率を画像全体で一意に決定するのに対して、 Adaptive Super-sampling 法は、画素ごとに 縮小率を計算し、 サンプル数を適応的に決定する点が異なります。 但し、対象画素の縮小率が 1.5 以下となる場合には、 共一次線形補間法をその画素に対して使用します。


Documentation copyright © 2007 FAST Corporation. [B-001864]
Generated on 2023年11月02日(木) 10時13分04秒 for WIL説明書(C++) by doxygen 1.8.11