首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于显示灰度图像之间差异的颜色映射

用于显示灰度图像之间差异的颜色映射
EN

Stack Overflow用户
提问于 2011-10-04 19:48:14
回答 2查看 1.8K关注 0票数 3

我有两个灰度图像,我正在寻找一种“适当”的方式来显示不同的图像。

差值图像应为彩色图像,并应显示负值、零值和正值。

目前我使用的是一个颜色映射表,它将负值显示为蓝色,将正值显示为黄色,将零值显示为灰色(例如,请参阅“显示图像之间差异的颜色映射”http://www.cb.uu.se/~cris/blog/index.php/archives/56)。

在差异图像中找到的最小值被映射到RGB=(0,0,1),在差异图像中找到的最大值被映射到RGB=(0.9,0.9,0),该映射是线性的。

在文献(学术论文、书籍……)中有没有什么参考文献?这样的地图吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-04 20:45:37

有关参考资料,请参阅(archived) page that helped push these colormaps;参考资料位于页面底部。

如果你想构建这样的色彩映射表,即饱和度是线性的(而不是色调),你需要来自文件交换的HSL2RGB,然后你可以像这样构造色彩映射表:

代码语言:javascript
复制
cLength = 64; %# length of colormap
hue = [ones(floor(cLength/2),1)*0.66; ones(ceil(cLength/2),1)*0.16];
sat = [linspace(1,0,floor(cLength/2))';linspace(0,1,ceil(cLength/2))'];
lum = ones(cLength,1)*0.50;

cmap = hsl2rgb([hue,sat,lum]);

%# apply colormap
colormap(cmap)

对于可视化,如果最负的差异和最正的差异不同,请使用CAXIS确保灰色精确映射为零。

代码语言:javascript
复制
maxAbsDiff = max(abs(differenceImage(:)));
caxis([-maxAbsDiff,maxAbsDiff])
票数 3
EN

Stack Overflow用户

发布于 2011-10-04 20:18:52

请看colormap function的帮助。

您应该使用一个函数来创建所需的色彩映射表(请参阅hot.m作为示例)。例如:

代码语言:javascript
复制
function c = blueyellow(m)
if nargin < 1, m = size(get(gcf,'colormap'),1); end
x = (0:m-1)'/max(m-1,1);
c = bsxfun(@plus, [0 0 1], x * [0.9 0.9 -1]);

然后运行

代码语言:javascript
复制
colormap('blueyellow')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7647420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档