【问题标题】:Matlab, Make a custom colormap from an imageMatlab,从图像制作自定义颜色图
【发布时间】:2014-10-17 00:20:21
【问题描述】:

我正在比较 Ansys Fluent 和 Matlab 的各种等高线图。一切都绘制在相同的坐标和相同的 caxis 限制。但是我正在努力让颜色图匹配。不幸的是,将数据从 fluent 导出到 matlab 不是一种选择。

我将 Ansys Fluent 颜色图另存为 .jpg 或 .png。我正在尝试从 [url=http://www.arc.vt.edu/ansys_help/flu_ug/graphics/g_flu_ug_panel_cmap.png 与此 [/url] 类似的图像为 matlab 制作自定义颜色图,因此我可以使用相同的颜色图绘制我的 matlab 数据。显然,我剪掉了不必要的数据,只剩下颜色图。

我尝试使用 imread 和 rgb2ind 做一些事情,但这给了我一些非常时髦的结果。

h=imread('custom_colormap.jpg')
[X, map] = rgb2ind(h,50);
colormap(map);

非常感谢您的想法。

【问题讨论】:

  • (A) 'custom_colormap.jpg' 是否被裁剪为仅包含实际的颜色图部分? (B) 该图像的质量有多高,您是否应该为此使用无损图像格式,例如位图?
  • 感谢您的回复。 (A) 是的,我已将图像裁剪为仅包含颜色图部分。我还尝试将其旋转 90 度(B)我截取了屏幕截图。所以它的分辨率不是很高。为了安全起见,我用位图尝试了它,但没有帮助。 (C)也许它可以不使用 imread 来完成,但以某种方式选择颜色。我知道情节中有 50 种不同的颜色,我不需要更多。我想我可以找出轮廓中每种颜色应该代表的确切 z 值。
  • 接下来要尝试在您的图像上调用unique 以查看有多少种颜色(即确定图像上是否有噪点)
  • 如果噪音不大,那么您可以使用独特的(使用'stable')选项自己创建颜色图。 rgb2ind 可能只是选错了顺序……
  • 您需要那张精确的地图吗?您可以通过修剪 Matlab 的 hsv 地图获得相当接近:n = 20; cm = hsv(ceil(n/.7)); cm = cm(1:n,:); colormap(cm), colorbar

标签: matlab color-mapping


【解决方案1】:

您是否尝试过创建自己的自定义颜色图?您可以使用colormapeditor 工具轻松完成:

【讨论】:

  • 谢谢,我设法通过这个解决方案获得了最好的结果。不幸的是,它无法使其与数据足够接近。
【解决方案2】:

你需要那张精确的地图吗?您可以通过修剪 Matlab 的 hsv 地图非常接近:

n = 20; %// desired number of colors
t = .7; %// trimming factor
cm = hsv(ceil(n/t));
cm = cm(1:n,:);
%// cm = flipud(cm); %// if needed. Thanks to Dan
colormap(cm);
colorbar

【讨论】:

  • 谢谢你。它非常有用,但我无法以我需要的准确度完全正确。我还尝试使用 jet colormap(我最初使用的那个)。我明天再试一次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多