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関数を用いた補間
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関数で決定する
[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().
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関数で決定する
[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().
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関数で決定する
[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().
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関数で決定する
[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().
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().
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.