使用 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.0
和 1.0
之间。我通过使用以下函数实现了这一点:
(b-a)(x - min)
f(x) = -------------- + a
max - min
其中 a == 0
、b == 1
、x == inputPtr[index]
、min == 0
和 max == 255
。
我正在尝试使用 ImageMagick 使用强度值数组中的值输出 png 灰度图像。
我已经使用图像构造函数尝试执行此操作,但它创建的图像与给定数组不完全匹配。
Image grayscaleImage(256, 256, "I", DoublePixel, inputPtr);
grayscaleImage.write("test.png");
正在创建的图像的所有黑色像素(强度为 0)都具有正确的值,但对于非零像素,我只得到白色;没有灰色。我该如何纠正这个问题?还是我错误地使用了构造函数?谢谢!
正如 emcconville 所说,对于 Magick::DoublePixel
,整数数组中的数字需要缩放到 0.0
和 1.0
之间。我通过使用以下函数实现了这一点:
(b-a)(x - min)
f(x) = -------------- + a
max - min
其中 a == 0
、b == 1
、x == inputPtr[index]
、min == 0
和 max == 255
。