调色板映射表面视图或热图帮助 n GNUPLOT

Palette Mapped Surface view or Heat Map help n GNUPLOT

我有一组从图像中导出的平均 RGB 值数据集。图像为 1729 x 981,我使用 imagemagick 对每个 170x98 像素部分进行平均,并输出包含数据的 CSV。这给了我 153 行,代表 17 个横截面和 9 个横截面。

我正在努力实现但未能做到的是,基本上是使用 GNUPLOT 创建图像的热图或托盘映射表面视图,其中显示了 17 x 9 部分的平均数据。

我的假设是我的数据格式不正确。但我对 gnupolot 也知之甚少。就是这样。

这是我使用的数据集。
https://www.dropbox.com/s/1mfhgkrdbo5xdrj/RNST_SDI_20220303_145749.DPX_DATA.csv?dl=0

非常感谢任何帮助。

我会将我的评论改写为初步答案。

您想要的命令形式是plot DATA using x:y:R:G:B with rgbimage,但从您的描述中并不完全清楚如何派生R/G/B 组件。您链接到的文件第 2/3/4 列中的值范围包含大致在 450 - 550 范围内的值。通常颜色分量 运行 从 0.0 - 1.0 或从 0 - 255。为了目的插图我会将你的转换成 0.0-1.0 范围内的数字并显示绘图命令。

我们将从行号导出 x 和 y 分量,忽略第 1 列的内容,并将第 2/3/4 列缩放到范围 0-1。您没有说明您希望如何用像素坐标、标题等标记结果,所以我将所有内容都保留为默认值。

 set datafile separator comma       # it's a csv file
 set rgbmax 1.0                     # color components in the range 0-1
 conv(C) = (column(C)-450.)/100. 
 plot 'DPX_DATA.csv' using (int([=10=])%17) : (int([=10=])/17) : (conv(2)) : (conv(3)) : (conv(4)) with rgbimage

扩展答案

有几种方法可以从命令行向 gnuplot 传递附加参数。不幸的是,我不熟悉 bash 脚本,所以我无法帮助您在评论中显示命令行的构建。我能做的是展示如何从 gnuplot 内部读取环境变量 NAME:

name = system("printenv NAME")
infile = name . ".csv"
outfile = name . "_RGB_AVGs.png"
set term png
set output outfile
plot infile using ... with rgbimage