当前位置:  开发笔记 > 编程语言 > 正文

手动将HSV重新映射到JET色彩映射

如何解决《手动将HSV重新映射到JET色彩映射》经验,为你挑选了1个好方法。

是否有可能重新映射,它使用的是HSV RGB图像(RxCx3)颜色表(未格式化!)使用气流颜色表的RGB图像?换句话说,Matlab中的HSV和JET色图之间是否存在"映射"?

我没有想过这么难,但这是一个快速而肮脏的尝试:

function J = remap( I )

    n = 256;
    X = hsv(n);
    Y = jet(n);
    t = linspace(0,1,n)';

    [r,c,~] = size(I);
    I = reshape( I, r*c, 3 );
    u = interp3( X(:,1), X(:,2), X(:,3), t, I(:,1), I(:,2), I(:,3) );

    J = I;
    for k = 1:3
        J(:,k) = interp1( t, Y(:,k), u );
    end
    J = reshape( J, r, c, 3 );

end

不幸的是,这会interp3在行上引发错误,称" 网格向量必须包含唯一的点 ".我不确定我的代码是正确的做法(我基本上试图将一维嵌入坐标适合HSV色图),但是这size(unique(hsv(256),'rows'),1)==256是真的所以我不太清楚为什么会出现这个错误.

注意:它可能会让一些人感到困惑,但这个问题与HSV格式无关 ; 这里的所有彩色图像都以RGB格式存储.我问的是彩色地图之间的映射.



1> Suever..:

最简单的方法是使用源颜色映射将图像转换为索引图像(使用rgb2ind),然后使用目标颜色映射将此索引图像转换回RGB图像(使用ind2rgb)

indexed = rgb2ind(img, source_colormap);
output = ind2rgb(indexed, destination_colormap);

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有