使用 ImageMagick 从像素强度数组创建灰度图像时遇到问题

Trouble creating grayscale image from array of pixel intensities with ImageMagick

我正在尝试使用 ImageMagick 使用强度值数组中的值输出 png 灰度图像。

我已经使用图像构造函数尝试执行此操作,但它创建的图像与给定数组不完全匹配。

Image grayscaleImage(256, 256, "I", DoublePixel, inputPtr);
grayscaleImage.write("test.png");

正在创建的图像的所有黑色像素(强度为 0)都具有正确的值,但对于非零像素,我只得到白色;没有灰色。我该如何纠正这个问题?还是我错误地使用了构造函数?谢谢!

正如 emcconville 所说,对于 Magick::DoublePixel,整数数组中的数字需要缩放到 0.01.0 之间。我通过使用以下函数实现了这一点:

       (b-a)(x - min)
f(x) = --------------  + a
          max - min

其中 a == 0b == 1x == inputPtr[index]min == 0max == 255