Файлы TIFF, искаженные ArrayFire (C ++)

Я заметил, что эта простая программа ArrayFire вызывает сильное искажение загруженных изображений TIFF:

#include <iostream>
#include <arrayfire.h>

int main( int argc, char** argv ) {
af::array img = af::loadImage( argv[1] );

double mn, mx;
unsigned idxn, idxx;
af::min( &mn, &idxn, img );
af::max( &mx, &idxx, img );

std::cout << "Image size = " << img.dims()[0] << ", " << img.dims()[1] << '\n';
std::cout << "Data type = " << img.type() << '\n';
std::cout << "Min = " << mn << " (at " << idxn << ")\n";
std::cout << "Max = " << mx << " (at " << idxx << ")\n";

af::saveImage( argv[2], img );

return 0;
}

Затем я компилирую и запускаю простое (монохромное) изображение:

./a.out orig.tif out.tif

со следующим выводом:

Image size = 256, 256
Data type = 0
Min = 0 (at 65535)
Max = 81.5025 (at 31356)

Когда я визуализирую эти изображения, я получаю следующий результат:
Искажение изображения ArrayFire TIFF

что, конечно, не то, что ожидается от ArrayFire; Я ожидаю, что он выведет точно такое же изображение, так как я не вносил в него никаких изменений. К сожалению, я не знаю достаточно о формате изображения TIFF или графическом интерфейсе ArrayFire, чтобы понять, что происходит. Я делаю что-то не так при загрузке изображения? (Я следовал документации ArrayFire для loadImage а также saveImage).

Я также пытался использовать loadImageNative а также saveImageNative в качестве альтернативы, но последний возвращает 4-слойное изображение TIFF, в то время как исходное изображение представляет собой только 1-слойный TIFF.

Любая помощь от экспертов ArrayFire будет отличной.

Спасибо!

2

Решение

Задача ещё не решена.

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector