- メインページ
- モジュール
- ネームスペース
- データ構造
- ファイル

- ネームスペース一覧
- ネームスペースメンバ

関数
ネームスペース mist::cubic
画像補間

3次のsinc関数を用いた補間 [詳細]

## 関数
template<class T1 , class Allocator1 , class T2 , class Allocator2 >
void | transform (const array2< T1, Allocator1 > &in, array2< T1, Allocator1 > &out, const matrix< T2, Allocator2 > &mat)
| transform array2
template<class Value_type1 , class Allocator1 , class Value_type2 , class Allocator2 >
void | transform (const mist::array2< Value_type1, Allocator1 > &in, mist::array2< Value_type2, Allocator2 > &out, const double &delta_x, const double &delta_y)
| 平行移動と拡大を考慮して変形する
template<class T1 , class Allocator1 , class T2 , class Allocator2 >
bool | interpolate (const array< T1, Allocator1 > &in, array< T2, Allocator2 > &out, typename array< T1, Allocator1 >::size_type width, typename array1< T1, Allocator1 >::size_type thread_num=0)
| 1次元配列に対する3次のsinc関数を用いた補間
template<class T1 , class Allocator1 , class T2 , class Allocator2 >
bool | interpolate (const array1< T1, Allocator1 > &in, array1< T2, Allocator2 > &out, typename array1< T1, Allocator1 >::size_type width, typename array1< T1, Allocator1 >::size_type thread_num=0)
| 1次元配列に対する3次のsinc関数を用いた補間
template<class T1 , class Allocator1 , class T2 , class Allocator2 >
bool | interpolate (const array2< T1, Allocator1 > &in, array2< T2, Allocator2 > &out, typename array2< T1, Allocator1 >::size_type width, typename array2< T1, Allocator1 >::size_type height, typename array2< T1, Allocator1 >::size_type thread_num=0)
| 2次元配列に対する3次のsinc関数を用いた補間
template<class T1 , class Allocator1 , class T2 , class Allocator2 >
bool | interpolate (const array3< T1, Allocator1 > &in, array3< T2, Allocator2 > &out, typename array3< T1, Allocator1 >::size_type width, typename array3< T1, Allocator1 >::size_type height, typename array3< T1, Allocator1 >::size_type depth, typename array3< T1, Allocator1 >::size_type thread_num=0)
| 3次元配列に対する3次のsinc関数を用いた補間

## 説明

3次のsinc関数を用いた補間

## 関数

template<class T1 , class Allocator1 , class T2 , class Allocator2 >

bool mist::cubic::interpolate | ( | const array< T1, Allocator1 > & | in,
|  | array< T2, Allocator2 > & | out,
|  | typename array< T1, Allocator1 >::size_type | width,
|  | typename array1< T1, Allocator1 >::size_type | thread_num = `0`
| ) |  |

1次元配列に対する3次のsinc関数を用いた補間

拡大縮小に伴う画素の内挿を，近傍の4点を用いて3次のsinc関数で決定する

注意
  拡大縮小に伴い，画像の解像度も自動的に変換される
  入力と出力は，別のMISTコンテナオブジェクトでなくてはならない
  スレッド数に0を指定した場合は，使用可能なCPU数を自動的に取得する

引数

  [in] | in | … 入力データ
  [out] | out | … 出力データ
  [in] | width | … 出力データのサイズ
  [in] | thread_num | … 使用するスレッド数

戻り値

  true | … 補間に成功
  false | … 入力と出力が同じオブジェクトを指定した場合，もしくは出力サイズが0の場合

参照先 mist::do_threads(), mist::get_cpu_num(), mist::is_same_object(), mist::array< T, Allocator >::resize(), mist::array< T, Allocator >::size(), と mist::array< T, Allocator >::width().

template<class T1 , class Allocator1 , class T2 , class Allocator2 >

bool mist::cubic::interpolate | ( | const array1< T1, Allocator1 > & | in,
|  | array1< T2, Allocator2 > & | out,
|  | typename array1< T1, Allocator1 >::size_type | width,
|  | typename array1< T1, Allocator1 >::size_type | thread_num = `0`
| ) |  |

1次元配列に対する3次のsinc関数を用いた補間

拡大縮小に伴う画素の内挿を，近傍の4点を用いて3次のsinc関数で決定する

注意
  拡大縮小に伴い，画像の解像度も自動的に変換される
  入力と出力は，別のMISTコンテナオブジェクトでなくてはならない
  スレッド数に0を指定した場合は，使用可能なCPU数を自動的に取得する

引数

  [in] | in | … 入力データ
  [out] | out | … 出力データ
  [in] | width | … 出力データのサイズ
  [in] | thread_num | … 使用するスレッド数

戻り値

  true | … 補間に成功
  false | … 入力と出力が同じオブジェクトを指定した場合，もしくは出力サイズが0の場合

参照先 mist::do_threads(), mist::get_cpu_num(), mist::is_same_object(), mist::array< T, Allocator >::resize(), mist::array1< T, Allocator >::reso1(), mist::array< T, Allocator >::size(), と mist::array< T, Allocator >::width().

template<class T1 , class Allocator1 , class T2 , class Allocator2 >

bool mist::cubic::interpolate | ( | const array2< T1, Allocator1 > & | in,
|  | array2< T2, Allocator2 > & | out,
|  | typename array2< T1, Allocator1 >::size_type | width,
|  | typename array2< T1, Allocator1 >::size_type | height,
|  | typename array2< T1, Allocator1 >::size_type | thread_num = `0`
| ) |  |

2次元配列に対する3次のsinc関数を用いた補間

拡大縮小に伴う画素の内挿を，近傍の16点を用いて3次のsinc関数で決定する

注意
  拡大縮小に伴い，画像の解像度も自動的に変換される
  入力と出力は，別のMISTコンテナオブジェクトでなくてはならない
  スレッド数に0を指定した場合は，使用可能なCPU数を自動的に取得する

引数

  [in] | in | … 入力データ
  [out] | out | … 出力データ
  [in] | width | … 出力データのX軸方向のサイズ
  [in] | height | … 出力データのY軸方向のサイズ
  [in] | thread_num | … 使用するスレッド数

戻り値

  true | … 補間に成功
  false | … 入力と出力が同じオブジェクトを指定した場合，もしくは出力サイズが0の場合

参照先 mist::do_threads(), mist::get_cpu_num(), mist::array2< T, Allocator >::height(), mist::is_same_object(), mist::array2< T, Allocator >::resize(), mist::array1< T, Allocator >::reso1(), mist::array2< T, Allocator >::reso2(), mist::array< T, Allocator >::size(), と mist::array2< T, Allocator >::width().

template<class T1 , class Allocator1 , class T2 , class Allocator2 >

bool mist::cubic::interpolate | ( | const array3< T1, Allocator1 > & | in,
|  | array3< T2, Allocator2 > & | out,
|  | typename array3< T1, Allocator1 >::size_type | width,
|  | typename array3< T1, Allocator1 >::size_type | height,
|  | typename array3< T1, Allocator1 >::size_type | depth,
|  | typename array3< T1, Allocator1 >::size_type | thread_num = `0`
| ) |  |

3次元配列に対する3次のsinc関数を用いた補間

拡大縮小に伴う画素の内挿を，近傍の64点を用いて3次のsinc関数で決定する

注意
  拡大縮小に伴い，画像の解像度も自動的に変換される
  入力と出力は，別のMISTコンテナオブジェクトでなくてはならない
  スレッド数に0を指定した場合は，使用可能なCPU数を自動的に取得する

引数

  [in] | in | … 入力データ
  [out] | out | … 出力データ
  [in] | width | … 出力データのX軸方向のサイズ
  [in] | height | … 出力データのY軸方向のサイズ
  [in] | depth | … 出力データのZ軸方向のサイズ
  [in] | thread_num | … 使用するスレッド数

戻り値

  true | … 補間に成功
  false | … 入力と出力が同じオブジェクトを指定した場合，もしくは出力サイズが0の場合

参照先 mist::array3< T, Allocator >::depth(), mist::do_threads(), mist::get_cpu_num(), mist::array3< T, Allocator >::height(), mist::is_same_object(), mist::array3< T, Allocator >::resize(), mist::array1< T, Allocator >::reso1(), mist::array2< T, Allocator >::reso2(), mist::array3< T, Allocator >::reso3(), mist::array< T, Allocator >::size(), と mist::array3< T, Allocator >::width().

template<class T1 , class Allocator1 , class T2 , class Allocator2 >

void mist::cubic::transform | ( | const array2< T1, Allocator1 > & | in,
|  | array2< T1, Allocator1 > & | out,
|  | const matrix< T2, Allocator2 > & | mat
| ) |  |

transform array2

引数

  [in] | in | is input array
  [out] | out | is output array
  | int] | mat is transformation matrix

参照先 mist::array2< T, Allocator >::height(), mist::inverse(), と mist::array2< T, Allocator >::width().

template<class Value_type1 , class Allocator1 , class Value_type2 , class Allocator2 >

void mist::cubic::transform | ( | const mist::array2< Value_type1, Allocator1 > & | in,
|  | mist::array2< Value_type2, Allocator2 > & | out,
|  | const double & | delta_x,
|  | const double & | delta_y
| ) |  |

平行移動と拡大を考慮して変形する

引数

  [in] | in | … 入力画像
  [out] | out | … 基準画像
  [in] | delta_x | … x方向位置ずれ
  [in] | delta_y | … y方向位置ずれ
  [in] | factor | … 拡大率

戻り値
  なし

参照先 mist::array2< T, Allocator >::height(), mist::array2< T, Allocator >::width(), と mist::vector2< T >::y.