SLLIB + SFITSIO ダイジェスト版 HTML マニュアル

使用頻度の高い 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拡張

SFITSIO: fits_imageクラス

fits_imageクラスは,Image HDU を表現します. fits_hduクラス を継承し,オブジェクト内で, fits_headerクラス(FITSヘッダ全体を表現) と mdarrayクラス(画像データ) のオブジェクトを管理します.

このクラスのメンバ関数は, Image HDU,特に画像データを扱うために利用されます.

クラスヘッダファイルコードnamespace
fits_image #include <sli/fits_image.h> cc sli

メンバ関数一覧

HDUやヘッダに関するメンバ関数:

メンバ関数機能
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度単位)

IDLライクな表記で画像データの配列を操作するためのメンバ関数

メンバ関数機能
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() (配列) 自身のデータ配列を,指定されたオブジェクトのデータ配列で除算

HDUやヘッダに関するメンバ関数

init()

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_TFITS::FLOAT_TFITS::LONGLONG_TFITS::LONG_TFITS::SHORT_TFITS::BYTE_T のいずれかです.

naxis0naxis1naxis2 にはイメージのサイズ(それぞれx, y, z)を指定します. 3次元を越える場合や画像バッファの初期化を行ないたくない場合は, 配列 naxisx[] にそれぞれ次元の要素数を,ndim に次元数を,buf_init に画像バッファ初期化の可否を指定します.

返り値
自身の参照

swap()

fits_image &swap( fits_image &obj );

自身と obj との中身を交換します.

返り値
自身の参照

copy()

void copy( fits_image *obj ) const;

自身の内容を obj で示されたオブジェクトへコピーします.

返り値
自身の参照

cut()

fits_image &cut( fits_image *obj );

自身の内容を obj で示されたオブジェクトへ移動します (自身の内容は初期化されます).

画像バッファは再確保される事はなく, バッファの管理権限を委譲する実装になっています.

返り値
自身の参照

画像データに関する基本的なメンバ関数

type()

int type() const;

ピクセル値の データ型 を返します.返される値は, FITS::DOUBLE_TFITS::FLOAT_TFITS::LONGLONG_TFITS::LONG_TFITS::SHORT_TFITS::BYTE_T のいずれかです.


dim_length()

long dim_length() const;

座標軸の数を返します.


length()

long length() const;
long length( long axis ) const;

axis のピクセル数を返します. axis が省略された時は,全ピクセル数を返します.


col_length()

long col_length() const;

カラム(x軸)のピクセル数を返します.


row_length()

long row_length() const;

ロウ(y軸)のピクセル数を返します.


layer_length()

long layer_length() const;

レイヤ(z軸)のピクセル数を返します. 次元数が3を越える場合は,z軸以降すべてが対象です.


bytes()

long bytes() const;

1ピクセルのバイトサイズを返します.


coord_offset()

long coord_offset( long axis ) const;

read_stream()メンバ関数で 部分読みされた場合の, 本来の座標からのオフセットを返します. 次元番号を axis で指定します.


is_flipped()

bool is_flipped( long axis ) const;

read_stream()メンバ関数で 部分読みされた場合に, 反転読みされたかどうかを返します. 次元番号を axis で指定します.


dvalue()

double dvalue( long idx0, long idx1 = FITS::INDEF, long idx2 = FITS::INDEF ) const;

カラム idx0,ロウ idx1,レイヤ idx2 のピクセル値を返します. このメンバ関数で返される値はヘッダの BZEROBSCALEBLANK を反映した値です. BLANK値の場合や,引数の座標値が範囲外の場合, NANを返します.

idx1idx2 は省略可能で,引数の個数によってn次元のデータを, 1次元,2次元あるいは3次元(以上)として扱う事ができます.

定数 FITS::INDEF を明示的に使わないでください.


lvalue(), llvalue()

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 のピクセル値を返します. このメンバ関数で返される値は ヘッダの BZEROBSCALEBLANK を反映した値です. BLANK値の場合や,引数の座標値が範囲外の場合, INDEF_LONG または INDEF_LLONG を返します.

idx1idx2 は省略可能で,引数の個数によって$n$次元のデータを, 1次元,2次元あるいは3次元(以上)として扱う事ができます.

定数 FITS::INDEF を明示的に使わないでください.


assign()

fits_image &assign( double value,
                    long idx0, long idx1 = FITS::INDEF, long idx2 = FITS::INDEF );

カラム idx0,ロウ idx1,レイヤ idx2 のピクセル値を変更します. このメンバ関数では, ヘッダの BZEROBSCALE を反映した値で内部バッファのピクセル値を更新します. valueNANを与えた場合,型が整数型の場合に BLANK値が存在すれば,BLANK値を 内部バッファに書き込みます.BLANK値が存在しない場合, 型に応じて INDEF_UCHARINDEF_INT16INDEF_INT32INDEF_INT64 が書き込まれます.

idx1idx2 は省略可能で,引数の個数によってn次元のデータを, 1次元,2次元あるいは3次元(以上)として扱う事ができます.

定数 FITS::INDEF を明示的に使わないでください.

返り値
自身の参照

convert_type()

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_TFITS::FLOAT_TFITS::LONGLONG_TFITS::LONG_TFITS::SHORT_TFITS::BYTE_T のいずれかです. new_zeronew_scalenew_blank を指定した場合は, ヘッダの BZEROBSCALEBLANK の値も変更し,それらの値を反映したイメージデータに変換します. new_blank が有効なのは,new_type が整数型の場合のみです.

返り値
自身の参照

bzero(), bzero_is_set(), assign_bzero()

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()メンバ関数を使います.


bscale(), bscale_is_set(), assign_bscale()

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()メンバ関数を使います.


blank(), blank_is_set(), assign_blank()

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()メンバ関数は, 自身の参照を返します.


byte_t_ptr(), short_t_ptr() 等

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;

画像データ配列のバッファアドレスを返します. 現在の画像データの データ型 に応じて,適切なメンバ関数を使用してください.

ピクセル値に高速なアクセスを行なうために使用します.

返される値はオブジェクト内部バッファのアドレスですから, オブジェクトが破棄されたり, バッファの型やサイズが変更された場合は無効になります.

呼び出されたメンバ関数が,自身のデータ型に不適切な場合は 例外が発生します.


byte_t_ptr_2d(), short_t_ptr_2d() 等

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次元データに高速なアクセスを行なうために使用します.

デフォルトではオブジェクト内部でのポインタ配列は生成されません. 生成されるするには,引数 usetrue をセットして一度メンバ関数を呼び出してください.

返される値はオブジェクト内部バッファのアドレスですから, オブジェクトが破棄されたり, バッファの型やサイズが変更された場合は無効になります.

呼び出されたメンバ関数が,自身のデータ型に不適切な場合は 例外が発生します.


byte_t_ptr_3d()

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次元データに高速なアクセスを行なうために使用します.

デフォルトではオブジェクト内部でのポインタ配列は生成されません. 生成されるするには,引数 usetrue をセットして一度メンバ関数を呼び出してください.

返される値はオブジェクト内部バッファのアドレスですから, オブジェクトが破棄されたり, バッファのデータ型やサイズが変更された場合は無効になります.

呼び出されたメンバ関数が,自身のデータ型に不適切な場合は 例外が発生します.


uchar_array(), int16_array() 等

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を使ってコーディングを行なう事で, 全体的なパフォーマンスアップが可能です.

呼び出されたメンバ関数が,自身のデータ型に不適切な場合は 例外が発生します.


画像データの編集のためのメンバ関数

assign_default()

fits_image &assign_default( double value );

resize_2d()resize() 等で画像データの要素長を大きくした場合の 新規ピクセルのデフォルト値を設定します.

assign_default()は高レベルなメンバ関数で, ヘッダの BZEROBSCALEBLANK の値が反映されます. BLANK値をセットしたい場合は NAN をセットします.

返り値
自身の参照

resize_1d()

fits_image &resize_1d( long x_len );

自身が持つ画像データ配列の長さを変更し,配列長 x_len の1次元配列とします.

返り値
自身の参照

resize_2d()

fits_image &resize_2d( long x_len, long y_len );

自身が持つ画像データ配列の長さを変更し,配列長 (x_len, y_len) の2次元配列とします.

返り値
自身の参照

resize_3d()

fits_image &resize_3d( long x_len, long y_len, long z_len );

自身が持つ画像データ配列の長さを変更し,配列長 (x_len, y_len, z_len) の3次元配列とします.

返り値
自身の参照

increase_dim()

fits_image &increase_dim();

軸を1つ追加します. 追加した軸のピクセル数の初期値は1です.

ピクセル数を増やすには,resize() メンバ関数を使います.

返り値
自身の参照

decrease_dim()

fits_image &decrease_dim();

軸を1つ減らします. 最も大きな次元の軸のピクセル数が1ではない場合, 内部バッファのバイトサイズも同時に変更します.

返り値
自身の参照

resize()

fits_image &resize( long axis, long size );                           ... 1
fits_image &resize( const long naxisx[], long ndim, bool buf_init );  ... 2

メンバ関数1は, 軸 axis のピクセル数を size に変更します. ピクセル数を増やした場合,増えた部分はヘッダの BZEROBSCALE の値を反映したゼロ値で初期化されます. この初期化が不要な場合は,メンバ関数2を使います.

メンバ関数2は, 配列 naxisx[] に設定されたそれぞれ次元の要素数に従って, 自身が持つ画像データ配列の長さを変更します. ndim に次元数を,buf_init に新規追加された部分のバッファ初期化の可否を指定します.

返り値
自身の参照

reallocate()

fits_image &reallocate( const long naxisx[], long ndim, bool buf_init );

画像データ配列のバッファ内位置に調整をせずに, 自身が持つ次元の大きさと配列の長さを変更します. つまり,配列用バッファに対しては単純に realloc() を呼ぶだけの処理を行ないます.

配列 naxisx[] にそれぞれ次元の要素数を,ndim に次元数を,buf_init に新規追加された部分のバッファ初期化の可否を指定します.

返り値
自身の参照

allocate()

fits_image &allocate( const long naxisx[], long ndim, bool buf_init );

画像データ配列の内容を一旦破棄し,配列の長さを変更します. つまり,配列用バッファに対して free()malloc() を呼ぶだけの処理を行ないます.

配列 naxisx[] にそれぞれ次元の要素数を,ndim に次元数を,buf_init に画像バッファ初期化の可否を指定します.

返り値
自身の参照

swap()

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 の領域に対してのみ入れ替え処理が行われます.

返り値
自身の参照

move()

fits_image &move( long dim_index, 
                  long idx_src, long len, long idx_dst, bool clr );

自身の画像データ配列の要素間で値をコピーします. dim_index で処理対象とする次元(次元番号)を, idx_src にコピー元の要素番号を, len にコピーされる要素の長さを, idx_dst コピー先の要素番号を指定します.

引数 clrfalse が指定された場合はコピー元の値は残りますが, true が指定された場合はコピー元の値は残らずデフォルト値で埋められます. デフォルト値は assign_default() メンバ関数で指定します.

idx_dst に既存の配列長より大きな値を設定しても,配列サイズは変わりません. この点が次の cpy()メンバ関数とは異なります.

返り値
自身の参照

cpy()

fits_image &cpy( long dim_index, 
                 long idx_src, long len, long idx_dst, bool clr );

自身の画像データ配列要素間で値をコピーします. dim_index で処理対象とする次元(次元番号)を, idx_src にコピー元の要素番号を, len にコピーされる要素の長さを, idx_dst コピー先の要素番号を指定します.

引数 clrfalse が指定された場合はコピー元の値は残りますが, true が指定された場合はコピー元の値は残らずデフォルト値で埋められます. デフォルト値は assign_default() メンバ関数で指定します.

idx_dst + len が既存の配列長より大きい場合,配列サイズは自動拡張されます.

返り値
自身の参照

insert()

fits_image &insert( size_t dim_index, long idx, size_t len );

自身の画像データ配列の, 次元番号 dim_index の次元について,要素位置 idx に,len 個分の要素を挿入します.

挿入される要素の値はデフォルト値です. デフォルト値は assign_default() メンバ関数で指定します.

返り値
自身の参照

crop()

fits_image &crop( long dim_index, long idx, long len );

自身の画像データ配列の, 次元番号 dim_index の次元について, 要素位置 idx から len 個の要素だけにします(配列の不要部分の消去します).

返り値
自身の参照

flip()

fits_image &flip( long dim_index, long idx, long len );

自身の画像データ配列の, 次元番号 dim_index の次元について, 要素位置 idx から len 個の要素を反転させます.

返り値
自身の参照

erase()

fits_image &erase( size_t dim_index, long idx, size_t len );

自身の画像データ配列の, 次元番号 dim_index の次元について, 要素位置 idx から len 個の要素を削除します. 削除した分,長さは短くなります.

返り値
自身の参照

transpose_xy()

fits_image &transpose_xy();

自身の画像データ配列のカラム(x)とロウ(y)とを入れ替えます.

高速に動作させるためのアルゴリズムを使用しています.

返り値
自身の参照

transpose_xyz2zxy()

fits_image &transpose_xyz2zxy();

自身の画像データ配列の軸 (x,y,z) を (z,x,y) へ変換します.

高速に動作させるためのアルゴリズムを使用しています.

返り値
自身の参照

rotate_xy()

fits_image &rotate_xy( int angle );

自身の画像データ配列の (x, y) 面についての回転(90度単位)を 行ないます. 左下を原点とした場合,反時計まわりで指定します.

返り値
自身の参照

IDLライクな表記で画像データの配列を操作するためのメンバ関数

resizef()

fits_image &resizef( const char *exp_fmt, ... );

自身が持つ画像データ配列の長さを変更します. 長さの指定は,printf() 形式の可変長引数で指定可能なカンマ区切りの文字列 (例えば"10,5")によって行ないます.

指定された文字列中の要素が数字ではない場合,その次元は長さを変更しません. 例えば, ",2" が指定された場合,最初の次元の長さは変更されません.

返り値
自身の参照

sectionf()

fits_image sectionf( const char *exp_fmt, ... ) const;

自身の画像データ配列のうち指定された部分だけを テンポラリオブジェクトにコピーし,それを返します. 取り出されるされる範囲は任意の次元まで指定可能で "0:99,*" のように IDL や IRAF と同様の文字列で指定します. この文字列中の要素番号は 0-indexed です. なお,"[1:100,*]" のように [] で囲むと,1-indexed として扱われます.

ヘッダについては内容がそのままテンポラリオブジェクトへコピーされます.

返り値
テンポラリオブジェクト

copyf()

void copyf( fits_image *dest, const char *exp_fmt, ... ) const;

自身の画像データ配列の内容の一部分を指定されたオブジェクト dest へコピーします.

コピーされる範囲は任意の次元まで指定可能で "0:99,*" のように IDL や IRAF と同様の文字列で指定します. この文字列中の要素番号は 0-indexed です. なお,"[1:100,*]" のように [] で囲むと,1-indexed として扱われます.

コピー先へは,画像データ配列やヘッダの内容, 各種属性などすべてをコピーします.自身(コピー元)の配列は改変されません.

dest に自身のアドレスを与えた場合, trimf() を実行した場合と同じ結果になります.

ヘッダについては内容がそのままコピーされます.

返り値
自身の参照

trimf()

fits_image &trimf( const char *exp_fmt, ... );

自身の画像データ配列のうち指定された部分だけを残し, 指定外の部分を消去します.

切り出されるされる範囲は任意の次元まで指定可能で "0:99,*" のように IDL や IRAF と同様の文字列で指定します. この文字列中の要素番号は 0-indexed です. なお,"[1:100,*]" のように [] で囲むと,1-indexed として扱われます.

返り値
自身の参照

flipf()

fits_image &flipf( const char *exp_fmt, ... );

任意の次元(複数も可)で画像データ配列の並びを反転させます. 反転させるには,"99:0,*" あるいは, "-*,*" のように, 要素番号を逆転させるか,「-*」を書く必要があります. ("0:99,*" のように書いても何も起こりません). なお, "[100:1,*]" のように [] で囲むと,1-indexed として扱われます.

返り値
自身の参照

transposef_xy_copy()

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 として扱います.

ヘッダについては内容がそのままコピーされます.


transposef_xyz2zxy_copy()

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 として扱います.

ヘッダについては内容がそのままコピーされます.


cleanf()

fits_image &cleanf( const char *exp_fmt, ... );

自身の画像データ配列の指定された範囲の要素を,デフォルト値でパディングします. デフォルト値は assign_default() メンバ関数で指定します.

配列要素の範囲は,exp_fmt以降の可変引数(printf()関数の記法)で, "0:99,*" のように IDL や IRAF と同様の文字列で指定します. この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です. なお,"[1:100,*]" のように [] で囲まれた表記の場合は, 1-indexed として扱います.

返り値
自身の参照

fillf()

fits_image &fillf( double value, const char *exp_fmt, ... );

自身の画像データ配列の指定された範囲の要素を, スカラー値 value でパディングします.

配列要素の範囲は,exp_fmt以降の可変引数(printf()関数の記法)で, "0:99,*" のように IDL や IRAF と同様の文字列で指定します. この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です. なお,"[1:100,*]" のように [] で囲まれた表記の場合は, 1-indexed として扱います.

返り値
自身の参照

addf()

fits_image &addf( double value, const char *exp_fmt, ... );

自身の画像データ配列の指定された範囲の全要素について, スカラー値 value を加算します.

配列要素の範囲は,exp_fmt以降の可変引数(printf()関数の記法)で, "0:99,*" のように IDL や IRAF と同様の文字列で指定します. この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です. なお,"[1:100,*]" のように [] で囲まれた表記の場合は, 1-indexed として扱います.

返り値
自身の参照

subtractf()

fits_image &subtractf( double value, const char *exp_fmt, ... );

自身の画像データ配列の指定された範囲の全要素について, スカラー値 value で減算します.

配列要素の範囲は,exp_fmt以降の可変引数(printf()関数の記法)で, "0:99,*" のように IDL や IRAF と同様の文字列で指定します. この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です. なお,"[1:100,*]" のように [] で囲まれた表記の場合は, 1-indexed として扱います.

返り値
自身の参照

multiplyf()

fits_image &multiplyf( double value, const char *exp_fmt, ... );

自身の画像データ配列の指定された範囲の全要素について, スカラー値 value を乗算します.

配列要素の範囲は,exp_fmt以降の可変引数(printf()関数の記法)で, "0:99,*" のように IDL や IRAF と同様の文字列で指定します. この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です. なお,"[1:100,*]" のように [] で囲まれた表記の場合は, 1-indexed として扱います.

返り値
自身の参照

dividef()

fits_image &dividef( double value, const char *exp_fmt, ... );

自身の画像データ配列の指定された範囲の全要素について, スカラー値 value で除算します.

配列要素の範囲は,exp_fmt以降の可変引数(printf()関数の記法)で, "0:99,*" のように IDL や IRAF と同様の文字列で指定します. この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です. なお,"[1:100,*]" のように [] で囲まれた表記の場合は, 1-indexed として扱います.

返り値
自身の参照

pastef()

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 として扱います.

返り値
自身の参照

addf()

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 として扱います.

返り値
自身の参照

subtractf()

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 として扱います.

返り値
自身の参照

multiplyf()

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 として扱います.

返り値
自身の参照

dividef()

fits_image &dividef( const fits_image &src_img, const char *exp_fmt, ... );

自身の画像データ配列を,指定されたオブジェクト src_img の画像データ配列で除算します.

自身の配列要素に対する演算範囲は, exp_fmt以降の可変引数(printf()関数の記法)で, "0:99,*" のように IDL や IRAF と同様の文字列で指定します. この文字列中の要素番号は 0-indexed で,任意の次元まで指定可能です. なお,"[1:100,*]" のように [] で囲まれた表記の場合は, 1-indexed として扱います.

返り値
自身の参照