「線形補間」の版間の差分
(21人の利用者による、間の23版が非表示) | |||
1行目: | 1行目: | ||
[[ファイル:ScientificGraphSpeedVsTime.svg|thumb|250px|区分的線形補間の例]] |
|||
⚫ | |||
[[ファイル:Interpolation example linear.svg|thumb|250px|区分線形補間の例]] |
|||
[[ファイル:Piecewise linear function2D.svg|thumb|250px|2次元の区分線形補間の例]] |
|||
'''線形補間'''(せんけいほかん、{{lang-en-short|Linear interpolation, lerp}})は、[[多項式補間]]の特殊なケースで、[[線形多項式]](一次式)を用いた回帰分析の手法である。'''1次補間'''としても知られている。 |
|||
⚫ | |||
なお、3つ以上のデータに対し線形補間といった場合、1つの[[線型近似]]によるフィッティングではなく、[[区分線形関数]]を使った'''区分線形補間'''(1次[[スプライン補間]]、いわゆる[[折れ線グラフ]])のことである。 |
|||
<table border="0" width="220" cellpadding="3" align="right"> |
|||
⚫ | |||
⚫ | |||
</table> |
|||
⚫ | |||
⚫ | |||
座標(''x''<sub>0</sub>, ''y''<sub>0</sub>)と(''x''<sub>1</sub>, ''y''<sub>1</sub>)があるとする。ここで、 |
座標(''x''<sub>0</sub>, ''y''<sub>0</sub>)と(''x''<sub>1</sub>, ''y''<sub>1</sub>)があるとする。ここで、 |
||
12行目: | 17行目: | ||
:<math>\frac{y - y_0}{y_1 - y_0} = \frac{x - x_0}{x_1 - x_0}. \,\!</math> |
:<math>\frac{y - y_0}{y_1 - y_0} = \frac{x - x_0}{x_1 - x_0}. \,\!</math> |
||
両辺と同じ値である値を<math>\alpha</math>と置こう。これは'''補間係数'''である。これは、''x''<sub>0</sub>から''x''<sub>1</sub>までの距離と''x''に当たるまで動かした点までの距離の比である。''x''に入る値が分かれば、次の式によって<math>\alpha</math>が得られる。 |
両辺と同じ値である値を<math>\alpha</math>と置こう。これは'''補間係数'''である。 |
||
これは、''x''<sub>0</sub>から''x''<sub>1</sub>までの距離と''x''に当たるまで動かした点までの距離の比である。 |
|||
''x''に入る値が分かれば、次の式によって<math>\alpha</math>が得られる。 |
|||
:<math>\alpha = \frac{x-x_0}{x_1-x_0}. \,\!</math> |
:<math>\alpha = \frac{x-x_0}{x_1-x_0}. \,\!</math> |
||
26行目: | 35行目: | ||
:<math>y = y_0 + \alpha (y_1-y_0)\,\!</math> |
:<math>y = y_0 + \alpha (y_1-y_0)\,\!</math> |
||
この式から、<math>\alpha</math>の値を計算すると直接''y''の値を得られることが分かる。この式は''x''が''x''<sub>0</sub>と''x''<sub>1</sub>の間になくても成立する。それ故に、<math>\alpha</math>は0から1の間にないかもしれないが、その場合通常は''比率''とは呼ばれない。その場合は'''線形外挿法'''と呼ばれる。[[外挿]] |
この式から、<math>\alpha</math>の値を計算すると直接''y''の値を得られることが分かる。この式は''x''が''x''<sub>0</sub>と''x''<sub>1</sub>の間になくても成立する。それ故に、<math>\alpha</math>は0から1の間にないかもしれないが、その場合、通常は''比率''とは呼ばれない。その場合は'''線形外挿法'''と呼ばれる。{{main|[[外挿]]}} |
||
''y''が既知で''x''を知りたい場合、 |
''y''が既知で''x''を知りたい場合、''x''と''y''を交換して全く同じ手続きをすればいい。 |
||
これはもっと複雑な補間アルゴリズムにはない特徴である。 |
|||
==近似としての線形補間== |
|||
==誤差評価== |
|||
線形補間はしばしば、ある関数''f''上の他の2点の値を使って、その関数上のある値を近似するのに使われる。この近似による誤差は次のように定義される。 |
線形補間はしばしば、ある関数''f''上の他の2点の値を使って、その関数上のある値を近似するのに使われる。この近似による誤差は次のように定義される。 |
||
46行目: | 56行目: | ||
見れば分かるが、与えられた関数上の2点間の近似は、近似された関数の2次導関数から計算された値よりも悪くなる。このことは、カーブを描いた関数は単純な線形補間を使った近似を行うと悪い値が出ることからも、直感的に正しいことが分かる。 |
見れば分かるが、与えられた関数上の2点間の近似は、近似された関数の2次導関数から計算された値よりも悪くなる。このことは、カーブを描いた関数は単純な線形補間を使った近似を行うと悪い値が出ることからも、直感的に正しいことが分かる。 |
||
== |
==特徴== |
||
[[計算量]]が非常に少ない。一般にスプライン補間は[[線型方程式系|連立方程式]]を解くが、1次では例外的にその必要がなく、計算量は <math>O(n)</math> にすぎない。 |
|||
[[連続]]だが、区分的にしか[[滑らかな関数|滑らか]]でなく、[[導関数]]および高次導関数は一般に不連続である(一般に、''n'' 次補間は ''n'' - 1 次導関数まで連続である)。連続性により、元データにない値が現れる(ただしこれは、最近傍補間や特殊なアルゴリズム以外に共通の特徴である)。また導関数が不連続であるので、元データの傾きが大きく変化する付近で、高調波が発生してしまう。 |
|||
[[単調性]]が保持される。つまり、元データが単調増加だと補間結果も単調増加である(単調減少でも同じ)。このため、[[オーバーシュート]](元データの傾きが大きく増える直前に補間結果が少し減ること、またはその逆)がない。 |
|||
==応用分野== |
|||
線形補間はしばしば表の穴を埋めるのに使われる。もし、ある国の1970年、1980年、1990年、2000年の人口を表に持っていて、1994年の人口を見積もりたいとする。線形補間はこういうことを行うのには簡単な方法である。 |
線形補間はしばしば表の穴を埋めるのに使われる。もし、ある国の1970年、1980年、1990年、2000年の人口を表に持っていて、1994年の人口を見積もりたいとする。線形補間はこういうことを行うのには簡単な方法である。 |
||
2値間の線形補間のもっとも基本的な操作は、[[コンピュータグラフィックス]]でよく使われる。[[ |
2値間の線形補間のもっとも基本的な操作は、[[コンピュータグラフィックス]]でよく使われる。[[ブレゼンハムのアルゴリズム]] (Bresenham's algorithm) は、2点間を結ぶ線を段々に補間して描画する。 |
||
1次補間は |
1次補間はたいていのグラフィックスプロセッサ ([[Graphics Processing Unit|GPU]]) にハードウェアレベルで実装されている。この処理はより複雑な操作を行うための処理の一部として使われている。たとえば、{{仮リンク|バイリニア補間|en|Bilinear interpolation}}は2つの1次補間を使ってできる。画像は多くの場合、線形補間で十分な品質が得られるが、連続という性質上、[[インデックスカラー]]画像には使いにくい。リアルタイム処理系では、[[テクスチャフィルタリング]]に使われる補間モードにバイリニア補間がよく選ばれる。 |
||
この処理はコストが安いので、非常に多くのテーブルエントリを持たずに、[[滑らかな関数]]用に素早く参照できる正確な[[ルックアップテーブル]]を実装するのもよい方法である。 |
|||
⚫ | |||
⚫ | |||
線形補間は古くは表中の空白を埋めるのに使われていた。またしばしば天文学的なデータにも使われていた。この手法はセレウコス朝 |
線形補間は古くは表中の空白を埋めるのに使われていた。またしばしば天文学的なデータにも使われていた。この手法はセレウコス朝(紀元前3世紀終)やギリシャの天文学者や数学者である[[ヒッパルコス]](紀元前2世紀)などによって使われていたと考えられている。線形補間の記述は[[クラウディオス・プトレマイオス|プトレマイオス]](2世紀)の[[アルマゲスト]]に見ることができる。 |
||
==拡張== |
==拡張== |
||
[[ファイル:Bilininterp.png|thumb|250px|バイリニア補間の例]] |
|||
要求される状況によっては、線形補間はしばしば十分に正確でないことがある。その場合は、[[多項式補間]]もしくは[[スプライン補間]]で置き換えることができる。 |
要求される状況によっては、線形補間はしばしば十分に正確でないことがある。その場合は、(2次以上、通常3次の)[[多項式補間]]もしくは[[スプライン補間]]で置き換えることができる。 |
||
線形補間はまた、2変数の関数のための |
線形補間はまた、2変数の関数のためのバイリニア補間にも拡張できる。バイリニア補間はしばしば乱暴な[[アンチエイリアス]]フィルタとしても用いられる。似たものとして、{{仮リンク|トライリニア補間|en|Trilinear interpolation}}があるが、これは3変数の関数を補間するために使われる。線形補間の他の拡張としては、三角形や正四面体のメッシュのような他の網の目構造に適用される。 |
||
==参照== |
==参照== |
||
* E. Meijering (2002). [http://imagescience.bigr.nl/meijering/publications/abstracts/pieee2002.html A Chronology of Interpolation. From Ancient Astronomy to Modern Signal and Image Processing]. ''Proceedings of the IEEE'' '''9''' (3), 319–342. |
* E. Meijering (2002). [http://imagescience.bigr.nl/meijering/publications/abstracts/pieee2002.html A Chronology of Interpolation. From Ancient Astronomy to Modern Signal and Image Processing]. ''Proceedings of the IEEE'' '''9''' (3), 319–342. |
||
==関連項目== |
==関連項目== |
||
* {{仮リンク|最近傍補間|en|Nearest-neighbor interpolation}} |
|||
* {{仮リンク|バイリニア補間|en|Bilinear interpolation}} (双線形補間) |
|||
* {{仮リンク|トライリニア補間|en|Trilinear interpolation}} |
|||
* {{仮リンク|バイキュービック補間|en|Bicubic interpolation}} (双三次補間) |
|||
* [[曲線あてはめ]] |
|||
* [[面積平均法]](平均画素法) |
|||
* [[ランチョス法]] |
|||
{{DEFAULTSORT:せんけいほかん}} |
|||
* [[バイリニア補間]] |
|||
[[Category:補間]] |
[[Category:補間]] |
||
[[Category:数学に関する記事]] |
|||
[[de:Interpolation (Mathematik)#Lineare Interpolation]] |
|||
[[en:Linear interpolation]] |
|||
[[es:Interpolacio'n lineal]] |
|||
[[fr:Interpolation line'aire]] |
|||
[[it:Metodo dell'interpolazione lineare]] |
|||
[[pt:Interpolac,a~o linear]] |
|||
[[ru:Линейная интерполяция]] |
2021年3月26日 (金) 13:56時点における最新版
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/02/ScientificGraphSpeedVsTime.svg/250px-ScientificGraphSpeedVsTime.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/67/Interpolation_example_linear.svg/250px-Interpolation_example_linear.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Piecewise_linear_function2D.svg/250px-Piecewise_linear_function2D.svg.png)
線形補間(せんけいほかん、英: Linear interpolation, lerp)は、多項式補間の特殊なケースで、線形多項式(一次式)を用いた回帰分析の手法である。1次補間としても知られている。
なお、3つ以上のデータに対し線形補間といった場合、1つの線型近似によるフィッティングではなく、区分線形関数を使った区分線形補間(1次スプライン補間、いわゆる折れ線グラフ)のことである。
線形補間は数学の世界(特に数値解析)やコンピュータグラフィックスを含む多くの分野で非常によく使われている。補間の非常に単純な形式であり、これより単純なのは最近傍補間(0次補間)しかない。
線形補間を行う方法[編集]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/68/Linear_interpolation.png/250px-Linear_interpolation.png)
座標(x0, y0)と(x1, y1)があるとする。ここで、 [x0, x1]の間にあるxが与えられたときに、この線上にある点を得たいとする。図をよく見ると次のことがわかる。
両辺と同じ値である値をと置こう。これは補間係数である。
これは、x0からx1までの距離とxに当たるまで動かした点までの距離の比である。
xに入る値が分かれば、次の式によってが得られる。
また、次の式も成り立つ。
この式を代数的に操作すると次のどちらかの式が得られる。
この式から、の値を計算すると直接yの値を得られることが分かる。この式はxがx0とx1の間になくても成立する。それ故に、は0から1の間にないかもしれないが、その場合、通常は比率とは呼ばれない。その場合は線形外挿法と呼ばれる。
yが既知でxを知りたい場合、xとyを交換して全く同じ手続きをすればいい。
これはもっと複雑な補間アルゴリズムにはない特徴である。
誤差評価[編集]
線形補間はしばしば、ある関数f上の他の2点の値を使って、その関数上のある値を近似するのに使われる。この近似による誤差は次のように定義される。
ここで、pは線形補間多項式であり、以下で定義される。
エラーは次に示す式の範囲内にある。この式はもし、関数fが2次の連続する導関数を持つならば、ロルの定理を使えば証明できる。
見れば分かるが、与えられた関数上の2点間の近似は、近似された関数の2次導関数から計算された値よりも悪くなる。このことは、カーブを描いた関数は単純な線形補間を使った近似を行うと悪い値が出ることからも、直感的に正しいことが分かる。
特徴[編集]
計算量が非常に少ない。一般にスプライン補間は連立方程式を解くが、1次では例外的にその必要がなく、計算量は にすぎない。
連続だが、区分的にしか滑らかでなく、導関数および高次導関数は一般に不連続である(一般に、n 次補間は n - 1 次導関数まで連続である)。連続性により、元データにない値が現れる(ただしこれは、最近傍補間や特殊なアルゴリズム以外に共通の特徴である)。また導関数が不連続であるので、元データの傾きが大きく変化する付近で、高調波が発生してしまう。
単調性が保持される。つまり、元データが単調増加だと補間結果も単調増加である(単調減少でも同じ)。このため、オーバーシュート(元データの傾きが大きく増える直前に補間結果が少し減ること、またはその逆)がない。
応用分野[編集]
線形補間はしばしば表の穴を埋めるのに使われる。もし、ある国の1970年、1980年、1990年、2000年の人口を表に持っていて、1994年の人口を見積もりたいとする。線形補間はこういうことを行うのには簡単な方法である。
2値間の線形補間のもっとも基本的な操作は、コンピュータグラフィックスでよく使われる。ブレゼンハムのアルゴリズム (Bresenham's algorithm) は、2点間を結ぶ線を段々に補間して描画する。
1次補間はたいていのグラフィックスプロセッサ (GPU) にハードウェアレベルで実装されている。この処理はより複雑な操作を行うための処理の一部として使われている。たとえば、バイリニア補間は2つの1次補間を使ってできる。画像は多くの場合、線形補間で十分な品質が得られるが、連続という性質上、インデックスカラー画像には使いにくい。リアルタイム処理系では、テクスチャフィルタリングに使われる補間モードにバイリニア補間がよく選ばれる。
この処理はコストが安いので、非常に多くのテーブルエントリを持たずに、滑らかな関数用に素早く参照できる正確なルックアップテーブルを実装するのもよい方法である。
歴史[編集]
線形補間は古くは表中の空白を埋めるのに使われていた。またしばしば天文学的なデータにも使われていた。この手法はセレウコス朝(紀元前3世紀終)やギリシャの天文学者や数学者であるヒッパルコス(紀元前2世紀)などによって使われていたと考えられている。線形補間の記述はプトレマイオス(2世紀)のアルマゲストに見ることができる。
拡張[編集]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/c6/Bilininterp.png/250px-Bilininterp.png)
要求される状況によっては、線形補間はしばしば十分に正確でないことがある。その場合は、(2次以上、通常3次の)多項式補間もしくはスプライン補間で置き換えることができる。
線形補間はまた、2変数の関数のためのバイリニア補間にも拡張できる。バイリニア補間はしばしば乱暴なアンチエイリアスフィルタとしても用いられる。似たものとして、トライリニア補間があるが、これは3変数の関数を補間するために使われる。線形補間の他の拡張としては、三角形や正四面体のメッシュのような他の網の目構造に適用される。
参照[編集]
- E. Meijering (2002). A Chronology of Interpolation. From Ancient Astronomy to Modern Signal and Image Processing. Proceedings of the IEEE 9 (3), 319–342.
関連項目[編集]
- 最近傍補間
- バイリニア補間 (双線形補間)
- トライリニア補間
- バイキュービック補間 (双三次補間)
- 曲線あてはめ