如何在FITS文件中的数组数据中表示像素?

时间:2018-04-13 11:44:23

标签: c++ fits

我有一个任务是读取fits个文件并在一个系统中显示图像(如果存在)。该系统接受图像数据作为像素阵列,可以是8比特的单个块(用于灰度),也可以是3个8比特的块(用于RGB)。我试图从CCfits库中读取测试中生成的文件,但对我来说,数据在我检查的所有fits查看器中的显示效果毫无意义

所以这是使用以下代码在示例文件中生成数据数组的代码:

std::valarray<int> array(nelements);
for (int i = 0; i < numberOfRows; ++i)
{
    array[std::slice(vectorLength*static_cast<int>(i),vectorLength,1)] = row + i;     
}

这是标题:

SIMPLE  =                    T / file does conform to FITS standard             
BITPIX  =                   16 / number of bits per data pixel                  
NAXIS   =                    2 / number of data axes                            
NAXIS1  =                  300 / length of data axis 1                          
NAXIS2  =                  200 / length of data axis 2                          
EXTEND  =                    T / FITS dataset may contain extensions            
COMMENT   FITS (Flexible Image Transport System) format is defined in 'Astronomy
COMMENT   and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H 
BZERO   =                32768 / offset data range to that of unsigned short    
BSCALE  =                    1 / default scaling factor                         
EXPOSURE=                 1500 / Total Exposure Time                            
OMEGA   =    (-0.5, 0.8660254) /  Complex cube root of 1                        
NEWVALUE=                   42 /  Test of adding keyword to different extension 
STRING  = ' Rope   '           / trailing blank test 1                          
STRING2 = 'Cord    '           / trailing blank test 2                          
END                      

这就是图像在gimp中的显示方式,例如:

fits file example

因此,通过标题我可以理解每个数组项将具有16位整数。具有此值的BZERO意味着它意味着是16位的无符号整数。到目前为止没问题。从图像生成开始,我假设每个数组项都代表一个像素,每个值都是灰度中颜色的表示。 下面的代码位于ccfits库中,生成从0到最大值498的数字,这实际上远离16位整数的边缘。话虽如此,这是如何从黑色到白色的?如何缩放或转换这些数字以表示像素和颜色?

1 个答案:

答案 0 :(得分:1)

FITS专家在这里,但我真的不明白你的问题。首先,您在此处发布的代码并不完整 - 还有一个未明确定义的变量row。它根本没有明确的意图,但我猜它是用一些渐变填充300x200阵列。 FITS数组只是 - 数组。某些数据类型的某些值的N维数组。

这些值如何被解释是完全应用程序特定的,尽管有专门为天文图像设计的查看器,例如古老的ds9或更现代的Glue

你写道,你刚刚在GIMP中打开了文件(我真的很感动它可以读取FITS文件)。所有GIMP都在做,看起来,由于缺乏更好的选择,在黑色(可能从0开始)和白色之间线性地缩放数组中的值。