ネームスペース |
namespace | mist::linear |
| 一般カーネルの線形フィルタの実装(コールバック関数を指定することが可能)
|
関数 |
template<class T1 , class Allocator1 , class T2 , class Allocator2 , class Kernel > |
bool | mist::linear_filter (const array< T1, Allocator1 > &in, array< T2, Allocator2 > &out, const Kernel &kernel, typename array< T1, Allocator1 >::size_type thread_num=0) |
| 一般の線形フィルタ( array )
|
template<class T1 , class Allocator1 , class T2 , class Allocator2 , class Kernel > |
bool | mist::linear_filter (const array1< T1, Allocator1 > &in, array1< T2, Allocator2 > &out, const Kernel &kernel, typename array1< T1, Allocator1 >::size_type thread_num=0) |
| 一般の線形フィルタ( array1 )
|
template<class T1 , class Allocator1 , class T2 , class Allocator2 , class Kernel > |
bool | mist::linear_filter (const array2< T1, Allocator1 > &in, array2< T2, Allocator2 > &out, const Kernel &kernel, typename array2< T1, Allocator1 >::size_type thread_num=0) |
| 一般の線形フィルタ( array2 )
|
template<class T1 , class Allocator1 , class T2 , class Allocator2 , class Kernel > |
bool | mist::linear_filter (const array3< T1, Allocator1 > &in, array3< T2, Allocator2 > &out, const Kernel &kernel, typename array3< T1, Allocator1 >::size_type thread_num=0) |
| 一般の線形フィルタ( array3 )
|
説明
配列の端(カーネルがはみ出すところ)の要素の計算は行いません.
使用可能な要素型は,算術型か mist::rgb< 算術型 > に限ります. 内部の計算は,出力配列の要素型が算術型の場合は double 型, mist::rgb< 算術型 > の場合は mist::rgb< double > で行います.
自分で定義した線形フィルタ用カーネルを各次元の画像に適用できます.
使用例(5×5一様重み平滑化フィルタ)
mist::array2< unsigned char > in, out;
mist::array2< double > kernel( 5, 5 );
kernel.fill( 1.0 / kernel.size( ) );
ラプラシアンフィルタ,ガウシアンフィルタ,一様重み平滑化フィルタを array, array1, array2, array3 で用意してあります. 一様重み平滑化フィルタは,キャッシュを利用して高速に計算することができます.
関数
template<class T1 , class Allocator1 , class T2 , class Allocator2 , class Kernel >
bool mist::linear_filter |
( |
const array< T1, Allocator1 > & |
in, |
|
|
array< T2, Allocator2 > & |
out, |
|
|
const Kernel & |
kernel, |
|
|
typename array< T1, Allocator1 >::size_type |
thread_num = 0 |
|
) |
| |
一般の線形フィルタ( array )
カーネル配列を指定する(中心はカーネルのサイズから計算)
- 注意
- 入力と出力は,別のMISTコンテナオブジェクトでなくてはならない
-
スレッド数は無視され,常にシングルスレッドで動作する
- 覚え書き
- マスクの一辺のサイズは奇数でなくてはならない
- 引数
-
[in] | in | … 入力配列 |
[out] | out | … 出力配列 |
[in] | kernel | … カーネル配列 |
[in] | thread_num | … 使用するスレッド数 |
- 戻り値
-
true | … フィルタリングに成功 |
false | … 入力と出力が同じオブジェクトを指定した場合 |
参照先 mist::linear::filter().
template<class T1 , class Allocator1 , class T2 , class Allocator2 , class Kernel >
bool mist::linear_filter |
( |
const array1< T1, Allocator1 > & |
in, |
|
|
array1< T2, Allocator2 > & |
out, |
|
|
const Kernel & |
kernel, |
|
|
typename array1< T1, Allocator1 >::size_type |
thread_num = 0 |
|
) |
| |
一般の線形フィルタ( array1 )
カーネル配列を指定する(中心はカーネルのサイズから計算)
- 注意
- 入力と出力は,別のMISTコンテナオブジェクトでなくてはならない
-
スレッド数は無視され,常にシングルスレッドで動作する
- 覚え書き
- マスクの一辺のサイズは奇数でなくてはならない
- 引数
-
[in] | in | … 入力配列 |
[out] | out | … 出力配列 |
[in] | kernel | … カーネル配列 |
[in] | thread_num | … 使用するスレッド数 |
- 戻り値
-
true | … フィルタリングに成功 |
false | … 入力と出力が同じオブジェクトを指定した場合 |
参照先 mist::linear::filter().
template<class T1 , class Allocator1 , class T2 , class Allocator2 , class Kernel >
bool mist::linear_filter |
( |
const array2< T1, Allocator1 > & |
in, |
|
|
array2< T2, Allocator2 > & |
out, |
|
|
const Kernel & |
kernel, |
|
|
typename array2< T1, Allocator1 >::size_type |
thread_num = 0 |
|
) |
| |
一般の線形フィルタ( array2 )
カーネル配列を指定する(中心はカーネルのサイズから計算)
- 注意
- 入力と出力は,別のMISTコンテナオブジェクトでなくてはならない
-
スレッド数に0を指定した場合は,使用可能なCPU数を自動的に取得する
- 覚え書き
- マスクの一辺のサイズは奇数でなくてはならない
- 引数
-
[in] | in | … 入力配列 |
[out] | out | … 出力配列 |
[in] | kernel | … カーネル配列 |
[in] | thread_num | … 使用するスレッド数 |
- 戻り値
-
true | … フィルタリングに成功 |
false | … 入力と出力が同じオブジェクトを指定した場合 |
参照先 mist::linear::filter().
template<class T1 , class Allocator1 , class T2 , class Allocator2 , class Kernel >
bool mist::linear_filter |
( |
const array3< T1, Allocator1 > & |
in, |
|
|
array3< T2, Allocator2 > & |
out, |
|
|
const Kernel & |
kernel, |
|
|
typename array3< T1, Allocator1 >::size_type |
thread_num = 0 |
|
) |
| |
一般の線形フィルタ( array3 )
カーネル配列を指定する(中心はカーネルのサイズから計算)
- 注意
- 入力と出力は,別のMISTコンテナオブジェクトでなくてはならない
-
スレッド数に0を指定した場合は,使用可能なCPU数を自動的に取得する
- 覚え書き
- マスクの一辺のサイズは奇数でなくてはならない
- 引数
-
[in] | in | … 入力配列 |
[out] | out | … 出力配列 |
[in] | kernel | … カーネル配列 |
[in] | thread_num | … 使用するスレッド数 |
- 戻り値
-
true | … フィルタリングに成功 |
false | … 入力と出力が同じオブジェクトを指定した場合 |
参照先 mist::linear::filter().