1

ccfits を使用して正方形ではない画像のセットを作成したいと思います。次のように、primaryHDU に 1 つ作成できます。

long axes[2] = { jmax, imax };   
std::auto_ptr<CCfits::FITS> pFits(0);
pFits.reset ( new CCfits::FITS ( "fitfile.fits", FLOAT_IMG, 2, axes ) );

std::valarray<double> h2a0array ( jmax * imax );
for ( int i = 0 ; i < imax ; i++ 
  for ( int j = 0 ; j < jmax ; j++ )
    h2a0array [ j + jmax * i ] = i + j;  

pFits->pHDU().write  ( fpixel, imax * jmax, h2a0array );

しかし、自分の FITS ファイルに他の正方形でない画像を追加する方法がわかりません。CCFITS::addImage 関数を使用する必要があると思いますが、それを使用して正方形の画像しか取得できません。

long fpixel ( 1 );
std::vector<long> extAx ( 2, dim );
CCfits::ExtHDU* imageExt2 = pFits->addImage ( "h2a0array", FLOAT_IMG, extAx );
imageExt2->write ( fpixel, imax * jmax, h2a0array );

extAx ベクトルには 2 つの値のみが含まれます。1 つ目は FITS ファイルに追加する画像の次元 (1D、2D、3D) で、2 つ目はそのサイズです。FITS ファイルに画像を追加する他の方法がわかりません。もしそうなら、あなたの助けは大歓迎です!

ありがとう、アルノー。

4

1 に答える 1

0

addImage の最後の引数のベクトルは、任意の次元を持つことができ、次元内の異なる軸の長さを持つことができます。軸の長さが同じである必要はありません(あなたが呼ぶように「正方形」):

vector<long> extAx ;
extAx.push_back(imax) ; 
extAx.push_back(jmax) ;
extAx.push_back(kmax) ;

pFits->addImage("h2a0array", FLOAT_IMG, extAx );
于 2014-06-24T13:16:07.560 に答える