📅  最后修改于: 2023-12-03 15:22:16.580000             🧑  作者: Mango
当我们使用 imshow 显示图像时,我们需要将输入数据中的值裁剪到有效范围,这个范围可以是浮点数为 [0..1] 或整数为 [0..255],这取决于我们使用什么样的数据类型来存储图像数据。
在 TypeScript 中,我们可以使用以下代码将图像数据剪切到有效范围:
function clipImageValuesToRange(imageData: ImageData, range: [number, number]): void {
const [min, max] = range;
const pixels = imageData.data;
for (let i = 0; i < pixels.length; i += 4) {
const r = pixels[i];
const g = pixels[i + 1];
const b = pixels[i + 2];
const a = pixels[i + 3];
pixels[i] = Math.max(min, Math.min(max, r));
pixels[i + 1] = Math.max(min, Math.min(max, g));
pixels[i + 2] = Math.max(min, Math.min(max, b));
pixels[i + 3] = a;
}
}
这个函数接受两个参数:一个 ImageData 对象和一个有效范围的数组。ImageData 对象包含了表示图像的像素数据,它也包含了图像的宽度和高度等信息。
我们遍历像素数据中的每个像素,将它的 R、G、B 值剪切到有效范围 [min..max] 内,这样就能保证它们不超出范围。对于 A 值,我们不做任何操作,因为它通常是不变的。
这个函数是一个实用的工具函数,可以帮助我们将图像数据剪裁到合理的范围,以便在 imshow 中进行可视化。