Подходит для создания сжатых данных изображения

Я пытаюсь записать данные в Формат FITS используя сжатие. Вот что я попробовал:

#include <vector>
#include "fitsio.h"#define DIM 100
int main(int argc, char *argv[]) {
fitsfile *fptr;       /* pointer to the FITS file, defined in fitsio.h */
std::vector<double> data(DIM*DIM);
for (unsigned int i=0; i<data.size();i++) data[i]=i;
int s=0, status;
fits_create_file(&fptr, "!test3.fits", &s); status+=s;
fits_set_compression_type(fptr, GZIP_2, &s); status+=s;
std::vector<long> naxes(2); naxes[0]=DIM; naxes[1]=DIM;
fits_create_img(fptr,  DOUBLE_IMG, naxes.size(), &naxes[0], &s); status+=s;
fits_write_img(fptr, TDOUBLE, 1, data.size(), &data[0], &s); status+=s;
fits_close_file(fptr, &status); status+=s;
return status;
}

Это работает, так как статус возврата равен нулю. Но я не могу открыть файл ни с чем. Кроме того file test3.fits возвращается

test3.fits: FITS image data, 16-bit, two's complement binary integer

Хотя если я уберу строку fits_set_compression_type … Я получил

test3.fits: FITS image data, 64-bit, floating point, double precision

это правильно (и я могу открыть изображение)

Что я тут не так делаю?

0

Решение

Существуют старые библиотеки FITS, которые не поддерживают стандарт сжатия плиток FITS. Программное обеспечение, основанное на последних cfitsio (и CCfits) и nom.tam.fits, как правило, соответствует этому соглашению.

2

Другие решения

Похоже, я создаю правильный файл подгонки, это просто ImageJ не читает это должным образом. загруженный DS9 на это работает довольно хорошо.

0

По вопросам рекламы [email protected]