使用頻度の高い API について,主要な内容を記述した, ビギナー向けのリファレンスマニュアルです.
SLLIB クラス: | ストリーム / 文字列 / 文字列配列 / 文字列連想配列 / 多次元配列 |
SLLIB クラス用関数: | 多次元配列用の統計用関数 / 多次元配列用の数学関数 / 多次元配列用の複素関数 |
SLLIB クラス以外: | 定数・型の定義 / C99互換の複素数・複素関数 |
SFITSIO クラス: | fitscc / fits_hdu / fits_image / fits_table / fits_table_col / fits_header / fits_header_record |
SFITSIO クラス以外: | 関数 / 定数・型の定義 / FITSファイルの部分読み出し機能 / FITSテンプレート / 規約外FITS拡張 |
fits_imageクラスは,Image HDU を表現します. fits_hduクラス を継承し,オブジェクト内で, fits_headerクラス(FITSヘッダ全体を表現) と mdarrayクラス(画像データ) のオブジェクトを管理します.
このクラスのメンバ関数は, Image HDU,特に画像データを扱うために利用されます.
クラス | ヘッダファイル | コード | namespace |
---|---|---|---|
fits_image | #include <sli/fits_image.h> |
cc | sli |
メンバ関数 | 機能 |
---|---|
fits_hduクラスのメンバ関数 がそのまま使えます. | |
init() | オブジェクトの初期化・コピー |
swap() | 2つのオブジェクト間での内容のスワップ |
copy() | 自身の内容を指定オブジェクトへコピー |
cut() | 自身の内容を指定オブジェクトへ移管 |
メンバ関数 | 機能 |
---|---|
type() | 画像データ配列の型種別(FITS::SHORT_T,FITS::FLOAT_T 等)を取得 |
dim_length() | 画像データ配列の次元数を取得 |
length() | 画像データ配列の長さを返す |
col_length() | 画像データ配列の横(カラム)方向の長さを取得 |
row_length() | 画像データ配列の縦(ロウ)方向の長さを取得 |
layer_length() | 画像データ配列のレイヤ方向の長さを取得 (3次元目以降は縮退) |
bytes() | 画像データ配列の1要素のバイト長を取得 |
coord_offset() | read_stream() で部分読みされた場合の本来の座標からのオフセットを取得 |
is_flipped() | 各次元について read_stream() で反転読みされたかどうかをテスト |
dvalue() | double 型に変換された データ配列の1要素の値を取得 |
lvalue(), llvalue() | 整数型(long or long long)に変換された データ配列の1要素の値を取得 |
assign() | double型で指定された値を データ配列の1要素へ代入 |
convert_type() | 指定された型,ZERO値,SCALE値,BLANK値を持つ画像データへ変換 |
bzero(), bzero_is_set(), assign_bzero() | BZEROの値を設定 |
bscale(), bscale_is_set(), assign_bscale() | BSCALEの値を設定 |
blank(), blank_is_set(), assign_blank() | BLANKの値を設定 |
byte_t_ptr(), short_t_ptr() 等 | 画像データ配列のバッファアドレスを取得 |
byte_t_ptr_2d(), short_t_ptr_2d() 等 | 2次元画像データ配列のポインタ配列を取得 |
byte_t_ptr_3d(), short_t_ptr_3d() 等 | 3次元画像データ配列のポインタ配列を取得 |
uchar_array(), int16_array() 等 | 画像データ配列の参照を取得 (mdarray_uchar, mdarray_int 等) |
メンバ関数 | 機能 |
---|---|
assign_default() | 画像データ配列のサイズ拡張時の初期値の設定 |
resize_1d() | 画像データ配列長の変更 (1次元) |
resize_2d() | 画像データ配列長の変更 (2次元) |
resize_3d() | 画像データ配列長の変更 (3次元) |
increase_dim() | 画像データ配列の次元数を1つ拡張 |
decrease_dim() | 画像データ配列の次元数を1つ縮小 |
resize() | 任意の1つの次元についての画像データ配列長の変更 |
reallocate() | 画像データ配列のバッファ内位置の調整をせずに,配列用バッファを再確保 |
allocate() | 画像データ配列用バッファを一旦開放し,新規に確保 |
swap() | 任意の1つの次元について配列要素間での値の入れ換え |
move() | 任意の1つの次元について配列要素間での値のコピー |
cpy() | 任意の1つの次元について配列要素間での値のコピー (配列数は自動拡張) |
insert() | 任意の1つの次元について新規配列要素の挿入 |
crop() | 任意の1つの次元について配列の不要部分の消去 |
flip() | 任意の1つの次元について配列の並びを反転 |
erase() | 任意の1つの次元について配列要素の削除 |
transpose_xy() | 自身の画像データ配列の (x,y) でのトランスポーズ |
transpose_xyz2zxy() | 自身の画像データ配列の (x,y,z)→(z,x,y) のトランスポーズ |
rotate_xy() | 自身の画像データ配列の (x,y) での回転 (90度単位) |
メンバ関数 | 機能 |
---|---|
resizef() | データ配列長の変更 |
sectionf() | 自身のデータ配列の一部要素を切り出したImage HDUをテンポラリオブジェクトで取得 |
copyf() | データ配列の一部要素を別オブジェクトへコピー |
trimf() | 指定部分以外のデータ配列要素の消去 (画像データのトリミング) |
flipf() | 自身のデータ配列の任意の次元(複数も可)で要素の並びを反転 |
transposef_xy_copy() | (x,y)のトランスポーズを行なったImage HDUオブジェクトを取得 |
transposef_xyz2zxy_copy() | (x,y,z)→(z,x,y)のトランスポーズを行なったImage HDUオブジェクトを取得 |
cleanf() | 自身のデータ配列をデフォルト値でパディング |
fillf() | 自身のデータ配列を指定されたスカラー値で書き換え |
addf() (スカラー) | 自身のデータ配列に,指定されたスカラー値で加算 |
subtractf() (スカラー) | 自身のデータ配列を,指定されたスカラー値で減算 |
multiplyf() (スカラー) | 自身のデータ配列に,指定されたスカラー値を乗算 |
dividef() (スカラー) | 自身のデータ配列を,指定されたスカラー値で除算 |
pastef() | 自身のデータ配列に指定されたオブジェクトの配列を貼り付け |
addf() (配列) | 自身のデータ配列に,指定されたオブジェクトのデータ配列を加算 |
subtractf() (配列) | 自身のデータ配列を,指定されたオブジェクトのデータ配列で減算 |
multiplyf() (配列) | 自身のデータ配列に,指定されたオブジェクトのデータ配列を乗算 |
dividef() (配列) | 自身のデータ配列を,指定されたオブジェクトのデータ配列で除算 |
fits_image &init(); fits_image &init( const fits_image &obj ); fits_image &init( int type, long naxis0 = 0, long naxis1 = 0, long naxis2 = 0 ); fits_image &init( int type, const long naxisx[], long ndim, bool buf_init );
イメージとヘッダを初期化します.
obj
が指定された場合は,その内容をコピーします.
type
には,イメージの
データ型
を指定します.指定できるデータ型は
FITS::DOUBLE_T
,
FITS::FLOAT_T
,
FITS::LONGLONG_T
,
FITS::LONG_T
,
FITS::SHORT_T
,
FITS::BYTE_T
のいずれかです.
naxis0
,
naxis1
,
naxis2
にはイメージのサイズ(それぞれx, y, z)を指定します.
3次元を越える場合や画像バッファの初期化を行ないたくない場合は,
配列
naxisx[]
にそれぞれ次元の要素数を,ndim
に次元数を,buf_init
に画像バッファ初期化の可否を指定します.
fits_image &swap( fits_image &obj );
自身と
obj
との中身を交換します.
void copy( fits_image *obj ) const;
自身の内容を
obj
で示されたオブジェクトへコピーします.
fits_image &cut( fits_image *obj );
自身の内容を
obj
で示されたオブジェクトへ移動します
(自身の内容は初期化されます).
画像バッファは再確保される事はなく, バッファの管理権限を委譲する実装になっています.
int type() const;
ピクセル値の
データ型
を返します.返される値は,
FITS::DOUBLE_T
,
FITS::FLOAT_T
,
FITS::LONGLONG_T
,
FITS::LONG_T
,
FITS::SHORT_T
,
FITS::BYTE_T
のいずれかです.
long dim_length() const;
座標軸の数を返します.
long length() const; long length( long axis ) const;
軸
axis
のピクセル数を返します.
axis
が省略された時は,全ピクセル数を返します.
long col_length() const;
カラム(x軸)のピクセル数を返します.
long row_length() const;
ロウ(y軸)のピクセル数を返します.
long layer_length() const;
レイヤ(z軸)のピクセル数を返します. 次元数が3を越える場合は,z軸以降すべてが対象です.
long bytes() const;
1ピクセルのバイトサイズを返します.
long coord_offset( long axis ) const;
read_stream()メンバ関数で
部分読みされた場合の,
本来の座標からのオフセットを返します.
次元番号を
axis
で指定します.
bool is_flipped( long axis ) const;
read_stream()メンバ関数で
部分読みされた場合に,
反転読みされたかどうかを返します.
次元番号を
axis
で指定します.
double dvalue( long idx0, long idx1 = FITS::INDEF, long idx2 = FITS::INDEF ) const;
カラム
idx0
,ロウ
idx1
,レイヤ
idx2
のピクセル値を返します.
このメンバ関数で返される値はヘッダの
BZERO
,BSCALE
,BLANK
を反映した値です.
BLANK
値の場合や,引数の座標値が範囲外の場合,
NAN
を返します.
idx1
,idx2
は省略可能で,引数の個数によってn次元のデータを,
1次元,2次元あるいは3次元(以上)として扱う事ができます.
定数
FITS::INDEF
を明示的に使わないでください.
long lvalue( long idx0, long idx1 = FITS::INDEF, long idx2 = FITS::INDEF ) const; long long llvalue( long idx0, long idx1 = FITS::INDEF, long idx2 = FITS::INDEF ) const;
カラム
idx0
,ロウ
idx1
,レイヤ
idx2
のピクセル値を返します.
このメンバ関数で返される値は
ヘッダの
BZERO
,BSCALE
,BLANK
を反映した値です.
BLANK
値の場合や,引数の座標値が範囲外の場合,
INDEF_LONG
または
INDEF_LLONG
を返します.
idx1
,idx2
は省略可能で,引数の個数によって$n$次元のデータを,
1次元,2次元あるいは3次元(以上)として扱う事ができます.
定数
FITS::INDEF
を明示的に使わないでください.
fits_image &assign( double value, long idx0, long idx1 = FITS::INDEF, long idx2 = FITS::INDEF );
カラム
idx0
,ロウ
idx1
,レイヤ
idx2
のピクセル値を変更します.
このメンバ関数では,
ヘッダの
BZERO
,BSCALE
を反映した値で内部バッファのピクセル値を更新します.
value
に
NAN
を与えた場合,型が整数型の場合に
BLANK
値が存在すれば,BLANK
値を
内部バッファに書き込みます.BLANK
値が存在しない場合,
型に応じて
INDEF_UCHAR
,
INDEF_INT16
,
INDEF_INT32
,
INDEF_INT64
が書き込まれます.
idx1
,idx2
は省略可能で,引数の個数によってn次元のデータを,
1次元,2次元あるいは3次元(以上)として扱う事ができます.
定数
FITS::INDEF
を明示的に使わないでください.
fits_image &convert_type( int new_type ); fits_image &convert_type( int new_type, double new_zero ); fits_image &convert_type( int new_type, double new_zero, double new_scale ); fits_image &convert_type( int new_type, double new_zero, double new_scale, long long new_blank );
イメージの
データ型
を
new_type
に変換します.必要に応じて,画像バッファのバイトサイズも変更します.
new_type
に指定できる値は,
FITS::DOUBLE_T
,
FITS::FLOAT_T
,
FITS::LONGLONG_T
,
FITS::LONG_T
,
FITS::SHORT_T
,
FITS::BYTE_T
のいずれかです.
new_zero
,
new_scale
,new_blank
を指定した場合は,
ヘッダの
BZERO
,BSCALE
,BLANK
の値も変更し,それらの値を反映したイメージデータに変換します.
new_blank
が有効なのは,new_type
が整数型の場合のみです.
double bzero() const; bool bzero_is_set() const; fits_image &assign_bzero( double zero, int prec = 15 ); fits_image &erase_bzero();
bzero()
メンバ関数は,ヘッダの
BZERO
の値を返します.
bzero_is_set()
メンバ関数は,ヘッダの
BZERO
の有無を返します.
assign_bzero()
メンバ関数は,
ヘッダの
BZERO
の値を設定します.
prec
には桁数を指定できます.省略した場合,
15桁の精度でヘッダレコードに書き込みます.
erase_bzero()
メンバ関数は,
ヘッダのBZERO
を消去します.
assign_bzero()
メンバ関数と
erase_bzero()
メンバ関数は,
自身の参照を返します.
これらのメンバ関数では画像データのゼロ点は変化しません. 画像データも同時に変更したい場合は, convert_type()メンバ関数を使います.
double bscale() const; bool bscale_is_set() const; fits_image &assign_bscale( double scale, int prec = 15 ); fits_image &erase_bscale();
bscale()
メンバ関数は,
ヘッダのBSCALE
の値を返します.
bscale_is_set()
メンバ関数は,
ヘッダのBSCALE
の有無を返します.
assign_bscale()
メンバ関数は,
ヘッダのBSCALE
の値を設定します.
prec
には桁数を指定できます.省略した場合,
15桁の精度でヘッダレコードに書き込みます.
erase_bscale()
メンバ関数は,
ヘッダのBSCALE
を消去します.
assign_bscale()
メンバ関数と
erase_bscale()
メンバ関数は,
自身の参照を返します.
これらのメンバ関数では画像データのスケーリングファクターは変化しません. 画像データも同時に変更したい場合は, convert_type()メンバ関数を使います.
long long blank() const; bool blank_is_set() const; fits_image &assign_blank( long long blank ); fits_image &erase_blank();
blank()
メンバ関数は,
ヘッダのBLANK
の値を返します.
blank_is_set()
メンバ関数は,
ヘッダのBLANK
の有無を返します.
assign_blank()
メンバ関数は,
ヘッダのBLANK
の値を設定します.
erase_blank()
メンバ関数は,
ヘッダのBLANK
を消去します.
assign_blank()
メンバ関数と
erase_blank()
メンバ関数は,
自身の参照を返します.
fits::byte_t *byte_t_ptr(); const fits::byte_t *byte_t_ptr() const; const fits::byte_t *byte_t_ptr_cs() const; fits::short_t *short_t_ptr(); const fits::short_t *short_t_ptr() const; const fits::short_t *short_t_ptr_cs() const; fits::long_t *long_t_ptr(); const fits::long_t *long_t_ptr() const; const fits::long_t *long_t_ptr_cs() const; fits::longlong_t *longlong_t_ptr(); const fits::longlong_t *longlong_t_ptr() const; const fits::longlong_t *longlong_t_ptr_cs() const; fits::float_t *float_t_ptr(); const fits::float_t *float_t_ptr() const; const fits::float_t *float_t_ptr_cs() const; fits::double_t *double_t_ptr(); const fits::double_t *double_t_ptr() const; const fits::double_t *double_t_ptr_cs() const;
画像データ配列のバッファアドレスを返します. 現在の画像データの データ型 に応じて,適切なメンバ関数を使用してください.
ピクセル値に高速なアクセスを行なうために使用します.
返される値はオブジェクト内部バッファのアドレスですから, オブジェクトが破棄されたり, バッファの型やサイズが変更された場合は無効になります.
呼び出されたメンバ関数が,自身のデータ型に不適切な場合は 例外が発生します.
fits::byte_t *const *byte_t_ptr_2d( bool use ); fits::short_t *const *short_t_ptr_2d( bool use ); fits::long_t *const *long_t_ptr_2d( bool use ); fits::longlong_t *const *longlong_t_ptr_2d( bool use ); fits::float_t *const *float_t_ptr_2d( bool use ); fits::double_t *const *double_t_ptr_2d( bool use ); fits::byte_t *const *byte_t_ptr_2d(); const fits::byte_t *const *byte_t_ptr_2d() const; const fits::byte_t *const *byte_t_ptr_2d_cs() const; fits::short_t *const *short_t_ptr_2d(); const fits::short_t *const *short_t_ptr_2d() const; const fits::short_t *const *short_t_ptr_2d_cs() const; fits::long_t *const *long_t_ptr_2d(); const fits::long_t *const *long_t_ptr_2d() const; const fits::long_t *const *long_t_ptr_2d_cs() const; fits::longlong_t *const *longlong_t_ptr_2d(); const fits::longlong_t *const *longlong_t_ptr_2d() const; const fits::longlong_t *const *longlong_t_ptr_2d_cs() const; fits::float_t *const *float_t_ptr_2d(); const fits::float_t *const *float_t_ptr_2d() const; const fits::float_t *const *float_t_ptr_2d_cs() const; fits::double_t *const *double_t_ptr_2d(); const fits::double_t *const *double_t_ptr_2d() const; const fits::double_t *const *double_t_ptr_2d_cs() const;
オブジェクト内部で生成された2次元画像データ配列のためのポインタ配列 のアドレスを返します. 現在の画像データの データ型 に応じて,適切なメンバ関数を使用してください.
2次元データに高速なアクセスを行なうために使用します.
デフォルトではオブジェクト内部でのポインタ配列は生成されません.
生成されるするには,引数
use
に
true
をセットして一度メンバ関数を呼び出してください.
返される値はオブジェクト内部バッファのアドレスですから, オブジェクトが破棄されたり, バッファの型やサイズが変更された場合は無効になります.
呼び出されたメンバ関数が,自身のデータ型に不適切な場合は 例外が発生します.
fits::byte_t *const *const *byte_t_ptr_3d( bool use ); fits::short_t *const *const *short_t_ptr_3d( bool use ); fits::long_t *const *const *long_t_ptr_3d( bool use ); fits::longlong_t *const *const *longlong_t_ptr_3d( bool use ); fits::float_t *const *const *float_t_ptr_3d( bool use ); fits::double_t *const *const *double_t_ptr_3d( bool use ); fits::byte_t *const *const *byte_t_ptr_3d(); const fits::byte_t *const *const *byte_t_ptr_3d() const; const fits::byte_t *const *const *byte_t_ptr_3d_cs() const; fits::short_t *const *const *short_t_ptr_3d(); const fits::short_t *const *const *short_t_ptr_3d() const; const fits::short_t *const *const *short_t_ptr_3d_cs() const; fits::long_t *const *const *long_t_ptr_3d(); const fits::long_t *const *const *long_t_ptr_3d() const; const fits::long_t *const *const *long_t_ptr_3d_cs() const; fits::longlong_t *const *const *longlong_t_ptr_3d(); const fits::longlong_t *const *const *longlong_t_ptr_3d() const; const fits::longlong_t *const *const *longlong_t_ptr_3d_cs() const; fits::float_t *const *const *float_t_ptr_3d(); const fits::float_t *const *const *float_t_ptr_3d() const; const fits::float_t *const *const *float_t_ptr_3d_cs() const; fits::double_t *const *const *double_t_ptr_3d(); const fits::double_t *const *const *double_t_ptr_3d() const; const fits::double_t *const *const *double_t_ptr_3d_cs() const;
オブジェクト内部で生成された3次元画像データ配列のためのポインタ配列 のアドレスを返します.現在の画像データの データ型 に応じて,適切なメンバ関数を使用してください.
3次元データに高速なアクセスを行なうために使用します.
デフォルトではオブジェクト内部でのポインタ配列は生成されません.
生成されるするには,引数
use
に
true
をセットして一度メンバ関数を呼び出してください.
返される値はオブジェクト内部バッファのアドレスですから, オブジェクトが破棄されたり, バッファのデータ型やサイズが変更された場合は無効になります.
呼び出されたメンバ関数が,自身のデータ型に不適切な場合は 例外が発生します.
mdarray_uchar &uchar_array(); const mdarray_uchar &uchar_array() const; const mdarray_uchar &uchar_array_cs() const; mdarray_int16 &int16_array(); const mdarray_int16 &int16_array() const; const mdarray_int16 &int16_array_cs() const; mdarray_int32 &int32_array(); const mdarray_int32 &int32_array() const; const mdarray_int32 &int32_array_cs() const; mdarray_int64 &int64_array(); const mdarray_int64 &int64_array() const; const mdarray_int64 &int64_array_cs() const; mdarray_float &float_array(); const mdarray_float &float_array() const; const mdarray_float &float_array_cs() const; mdarray_double &double_array(); const mdarray_double &double_array() const; const mdarray_double &double_array_cs() const;
画像データ配列オブジェクト(mdarray_* オブジェクト) の参照を返します. 現在の画像データの データ型 に応じて,適切なメンバ関数を使用してください. これらのメンバ関数により取得した参照を経由して, mdarray_*クラスの 多彩で高速なAPIを利用する事ができます.
速度が重視される画素数の多い画像のデータ解析の場合には, SLLIBの単純な実装によるAPIを使ってコーディングを行なう事で, 全体的なパフォーマンスアップが可能です.
呼び出されたメンバ関数が,自身のデータ型に不適切な場合は 例外が発生します.
fits_image &assign_default( double value );
resize_2d()
,resize()
等で画像データの要素長を大きくした場合の
新規ピクセルのデフォルト値を設定します.
assign_default()
は高レベルなメンバ関数で,
ヘッダの
BZERO
,BSCALE
,BLANK
の値が反映されます.
BLANK
値をセットしたい場合は
NAN
をセットします.
fits_image &resize_1d( long x_len );
自身が持つ画像データ配列の長さを変更し,配列長
x_len
の1次元配列とします.
fits_image &resize_2d( long x_len, long y_len );
自身が持つ画像データ配列の長さを変更し,配列長
(x_len
, y_len
) の2次元配列とします.
fits_image &resize_3d( long x_len, long y_len, long z_len );
自身が持つ画像データ配列の長さを変更し,配列長
(x_len
, y_len
, z_len
)
の3次元配列とします.
fits_image &increase_dim();
軸を1つ追加します. 追加した軸のピクセル数の初期値は1です.
ピクセル数を増やすには,resize() メンバ関数を使います.
fits_image &decrease_dim();
軸を1つ減らします. 最も大きな次元の軸のピクセル数が1ではない場合, 内部バッファのバイトサイズも同時に変更します.
fits_image &resize( long axis, long size ); ... 1 fits_image &resize( const long naxisx[], long ndim, bool buf_init ); ... 2
メンバ関数1は,
軸
axis
のピクセル数を
size
に変更します.
ピクセル数を増やした場合,増えた部分はヘッダの
BZERO
,
BSCALE
の値を反映したゼロ値で初期化されます.
この初期化が不要な場合は,メンバ関数2を使います.
メンバ関数2は,
配列
naxisx[]
に設定されたそれぞれ次元の要素数に従って,
自身が持つ画像データ配列の長さを変更します.
ndim
に次元数を,buf_init
に新規追加された部分のバッファ初期化の可否を指定します.
fits_image &reallocate( const long naxisx[], long ndim, bool buf_init );
画像データ配列のバッファ内位置に調整をせずに,
自身が持つ次元の大きさと配列の長さを変更します.
つまり,配列用バッファに対しては単純に
realloc()
を呼ぶだけの処理を行ないます.
配列
naxisx[]
にそれぞれ次元の要素数を,ndim
に次元数を,buf_init
に新規追加された部分のバッファ初期化の可否を指定します.
fits_image &allocate( const long naxisx[], long ndim, bool buf_init );
画像データ配列の内容を一旦破棄し,配列の長さを変更します.
つまり,配列用バッファに対して
free()
,malloc()
を呼ぶだけの処理を行ないます.
配列
naxisx[]
にそれぞれ次元の要素数を,ndim
に次元数を,buf_init
に画像バッファ初期化の可否を指定します.
fits_image &swap( long dim_index, long idx_src, long len, long idx_dst );
自身の画像データ配列の要素間で値を入れ替えます.
次元番号
dim_index
の要素番号 idx_src
から len
個分の要素を,
要素番号 idx_dst
から len
個分の要素と入れ替えます.
idx_dst
+ len
が配列サイズを超える場合は,配列サイズまでの処理が行われます.
入れ替える領域が重なった場合,重なっていない
src
の領域に対してのみ入れ替え処理が行われます.
fits_image &move( long dim_index, long idx_src, long len, long idx_dst, bool clr );
自身の画像データ配列の要素間で値をコピーします.
dim_index
で処理対象とする次元(次元番号)を,
idx_src
にコピー元の要素番号を,
len
にコピーされる要素の長さを,
idx_dst
コピー先の要素番号を指定します.
引数
clr
に
false
が指定された場合はコピー元の値は残りますが,
true
が指定された場合はコピー元の値は残らずデフォルト値で埋められます.
デフォルト値は
assign_default()
メンバ関数で指定します.
idx_dst
に既存の配列長より大きな値を設定しても,配列サイズは変わりません.
この点が次の
cpy()
メンバ関数とは異なります.
fits_image &cpy( long dim_index, long idx_src, long len, long idx_dst, bool clr );
自身の画像データ配列要素間で値をコピーします.
dim_index
で処理対象とする次元(次元番号)を,
idx_src
にコピー元の要素番号を,
len
にコピーされる要素の長さを,
idx_dst
コピー先の要素番号を指定します.
引数
clr
に
false
が指定された場合はコピー元の値は残りますが,
true
が指定された場合はコピー元の値は残らずデフォルト値で埋められます.
デフォルト値は
assign_default()
メンバ関数で指定します.
idx_dst
+ len
が既存の配列長より大きい場合,配列サイズは自動拡張されます.
fits_image &insert( size_t dim_index, long idx, size_t len );
自身の画像データ配列の,
次元番号
dim_index
の次元について,要素位置
idx
に,len
個分の要素を挿入します.
挿入される要素の値はデフォルト値です. デフォルト値は assign_default() メンバ関数で指定します.
fits_image &crop( long dim_index, long idx, long len );
自身の画像データ配列の,
次元番号
dim_index
の次元について,
要素位置
idx
から
len
個の要素だけにします(配列の不要部分の消去します).
fits_image &flip( long dim_index, long idx, long len );
自身の画像データ配列の,
次元番号
dim_index
の次元について,
要素位置
idx
から
len
個の要素を反転させます.
fits_image &erase( size_t dim_index, long idx, size_t len );
自身の画像データ配列の,
次元番号
dim_index
の次元について,
要素位置
idx
から
len
個の要素を削除します.
削除した分,長さは短くなります.
fits_image &transpose_xy();
自身の画像データ配列のカラム(x)とロウ(y)とを入れ替えます.
高速に動作させるためのアルゴリズムを使用しています.
fits_image &transpose_xyz2zxy();
自身の画像データ配列の軸 (x,y,z) を (z,x,y) へ変換します.
高速に動作させるためのアルゴリズムを使用しています.
fits_image &rotate_xy( int angle );
自身の画像データ配列の (x, y) 面についての回転(90度単位)を 行ないます. 左下を原点とした場合,反時計まわりで指定します.
fits_image &resizef( const char *exp_fmt, ... );
自身が持つ画像データ配列の長さを変更します.
長さの指定は,printf()
形式の可変長引数で指定可能なカンマ区切りの文字列
(例えば"10,5"
)によって行ないます.
指定された文字列中の要素が数字ではない場合,その次元は長さを変更しません.
例えば, ",2"
が指定された場合,最初の次元の長さは変更されません.
fits_image sectionf( const char *exp_fmt, ... ) const;
自身の画像データ配列のうち指定された部分だけを
テンポラリオブジェクトにコピーし,それを返します.
取り出されるされる範囲は任意の次元まで指定可能で
"0:99,*"
のように IDL や IRAF と同様の文字列で指定します.
この文字列中の要素番号は 0-indexed です.
なお,"[1:100,*]"
のように
[]
で囲むと,1-indexed として扱われます.
ヘッダについては内容がそのままテンポラリオブジェクトへコピーされます.
void copyf( fits_image *dest, const char *exp_fmt, ... ) const;
自身の画像データ配列の内容の一部分を指定されたオブジェクト
dest
へコピーします.
コピーされる範囲は任意の次元まで指定可能で
"0:99,*"
のように IDL や IRAF と同様の文字列で指定します.
この文字列中の要素番号は 0-indexed です.
なお,"[1:100,*]"
のように
[]
で囲むと,1-indexed として扱われます.
コピー先へは,画像データ配列やヘッダの内容, 各種属性などすべてをコピーします.自身(コピー元)の配列は改変されません.
dest
に自身のアドレスを与えた場合,
trimf()
を実行した場合と同じ結果になります.
ヘッダについては内容がそのままコピーされます.
fits_image &trimf( const char *exp_fmt, ... );
自身の画像データ配列のうち指定された部分だけを残し, 指定外の部分を消去します.
切り出されるされる範囲は任意の次元まで指定可能で
"0:99,*"
のように IDL や IRAF と同様の文字列で指定します.
この文字列中の要素番号は 0-indexed です.
なお,"[1:100,*]"
のように
[]
で囲むと,1-indexed として扱われます.
fits_image &flipf( const char *exp_fmt, ... );
任意の次元(複数も可)で画像データ配列の並びを反転させます.
反転させるには,"99:0,*"
あるいは,
"-*,*"
のように,
要素番号を逆転させるか,「-*
」を書く必要があります.
("0:99,*"
のように書いても何も起こりません).
なお,
"[100:1,*]"
のように
[]
で囲むと,1-indexed として扱われます.
void transposef_xy_copy( fits_image *dest, const char *exp_fmt, ... ) const;
自身の画像データ配列の指定された範囲について,
(x,y)のトランスポーズを行なった配列を
dest
で指定されたオブジェクトに格納します.
配列要素の範囲は,exp_fmt
以降の可変引数(printf()関数の記法)で,
"0:99,*"
のように IDL や IRAF と同様の文字列で指定します.
この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です.
なお,"[1:100,*]"
のように []
で囲まれた表記の場合は,
1-indexed として扱います.
ヘッダについては内容がそのままコピーされます.
void transposef_xyz2zxy_copy( fits_image *dest, const char *exp_fmt, ... ) const;
自身の画像データ配列の指定された範囲について,
(x,y,z)→(z,x,y)のトランスポーズを行なった配列を
dest
で指定されたオブジェクトに格納します.
配列要素の範囲は,exp_fmt
以降の可変引数(printf()関数の記法)で,
"0:99,*"
のように IDL や IRAF と同様の文字列で指定します.
この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です.
なお,"[1:100,*]"
のように []
で囲まれた表記の場合は,
1-indexed として扱います.
ヘッダについては内容がそのままコピーされます.
fits_image &cleanf( const char *exp_fmt, ... );
自身の画像データ配列の指定された範囲の要素を,デフォルト値でパディングします. デフォルト値は assign_default() メンバ関数で指定します.
配列要素の範囲は,exp_fmt
以降の可変引数(printf()関数の記法)で,
"0:99,*"
のように IDL や IRAF と同様の文字列で指定します.
この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です.
なお,"[1:100,*]"
のように []
で囲まれた表記の場合は,
1-indexed として扱います.
fits_image &fillf( double value, const char *exp_fmt, ... );
自身の画像データ配列の指定された範囲の要素を,
スカラー値 value
でパディングします.
配列要素の範囲は,exp_fmt
以降の可変引数(printf()関数の記法)で,
"0:99,*"
のように IDL や IRAF と同様の文字列で指定します.
この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です.
なお,"[1:100,*]"
のように []
で囲まれた表記の場合は,
1-indexed として扱います.
fits_image &addf( double value, const char *exp_fmt, ... );
自身の画像データ配列の指定された範囲の全要素について,
スカラー値 value
を加算します.
配列要素の範囲は,exp_fmt
以降の可変引数(printf()関数の記法)で,
"0:99,*"
のように IDL や IRAF と同様の文字列で指定します.
この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です.
なお,"[1:100,*]"
のように []
で囲まれた表記の場合は,
1-indexed として扱います.
fits_image &subtractf( double value, const char *exp_fmt, ... );
自身の画像データ配列の指定された範囲の全要素について,
スカラー値 value
で減算します.
配列要素の範囲は,exp_fmt
以降の可変引数(printf()関数の記法)で,
"0:99,*"
のように IDL や IRAF と同様の文字列で指定します.
この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です.
なお,"[1:100,*]"
のように []
で囲まれた表記の場合は,
1-indexed として扱います.
fits_image &multiplyf( double value, const char *exp_fmt, ... );
自身の画像データ配列の指定された範囲の全要素について,
スカラー値 value
を乗算します.
配列要素の範囲は,exp_fmt
以降の可変引数(printf()関数の記法)で,
"0:99,*"
のように IDL や IRAF と同様の文字列で指定します.
この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です.
なお,"[1:100,*]"
のように []
で囲まれた表記の場合は,
1-indexed として扱います.
fits_image ÷f( double value, const char *exp_fmt, ... );
自身の画像データ配列の指定された範囲の全要素について,
スカラー値 value
で除算します.
配列要素の範囲は,exp_fmt
以降の可変引数(printf()関数の記法)で,
"0:99,*"
のように IDL や IRAF と同様の文字列で指定します.
この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です.
なお,"[1:100,*]"
のように []
で囲まれた表記の場合は,
1-indexed として扱います.
fits_image &pastef( const fits_image &src, const char *exp_fmt, ... );
自身の画像データ配列の指定された範囲の要素値に,
src
で指定されたオブジェクトが持つ
画像データ配列の各要素値を貼り付けます.
自身の配列要素に対する演算範囲は,
exp_fmt
以降の可変引数(printf()関数の記法)で,
"0:99,*"
のように IDL や IRAF と同様の文字列で指定します.
この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です.
なお,"[1:100,*]"
のように []
で囲まれた表記の場合は,
1-indexed として扱います.
fits_image &addf( const fits_image &src_img, const char *exp_fmt, ... );
自身の画像データ配列に,指定されたオブジェクト
src_img
の画像データ配列を加算します.
自身の配列要素に対する演算範囲は,
exp_fmt
以降の可変引数(printf()関数の記法)で,
"0:99,*"
のように IDL や IRAF と同様の文字列で指定します.
この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です.
なお,"[1:100,*]"
のように []
で囲まれた表記の場合は,
1-indexed として扱います.
fits_image &subtractf( const fits_image &src_img, const char *exp_fmt, ... );
自身の画像データ配列を,指定されたオブジェクト
src_img
の画像データ配列で減算します.
自身の配列要素に対する演算範囲は,
exp_fmt
以降の可変引数(printf()関数の記法)で,
"0:99,*"
のように IDL や IRAF と同様の文字列で指定します.
この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です.
なお,"[1:100,*]"
のように []
で囲まれた表記の場合は,
1-indexed として扱います.
fits_image &multiplyf( const fits_image &src_img, const char *exp_fmt, ... );
自身の画像データ配列に,指定されたオブジェクト
src_img
の画像データ配列を乗算します.
自身の配列要素に対する演算範囲は,
exp_fmt
以降の可変引数(printf()関数の記法)で,
"0:99,*"
のように IDL や IRAF と同様の文字列で指定します.
この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です.
なお,"[1:100,*]"
のように []
で囲まれた表記の場合は,
1-indexed として扱います.
fits_image ÷f( const fits_image &src_img, const char *exp_fmt, ... );
自身の画像データ配列を,指定されたオブジェクト
src_img
の画像データ配列で除算します.
自身の配列要素に対する演算範囲は,
exp_fmt
以降の可変引数(printf()関数の記法)で,
"0:99,*"
のように IDL や IRAF と同様の文字列で指定します.
この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です.
なお,"[1:100,*]"
のように []
で囲まれた表記の場合は,
1-indexed として扱います.