在 Matlab 中将 RGB 映射到 Parula
To map RGB to Parula in Matlab
有rgb2hsv、rgb2ind、rgb2lab和[=30=等函数]rgb2xyz 将 RGB 颜色图转换为另一个 - 在引入颜色图 Parula 的 Matlab R2014b 中。
但是,我找不到任何将 RGB 颜色图转换为 Parula 的解决方案,即 Matlab 的当前默认颜色图。
我可以将颜色图设置为与图形一致,但不能按如下方式转换图像。
我开始思考 Parula 与 HSV 对比的好处之一是去除图片中的黑色及其邻近颜色,例如 。
伪命令
im = imread('http://i.stack.imgur.com/cFOSp.png');
hsv = rgb2parula(im); % Pseudocommand similar for HSV: hsv = rgb2hsv(im);
imshow(hsv);
这给出了
这是图像处理后期出现量化噪声和形态学去除效果不佳的原因之一,如前一帖所述。
如何在 Matlab 中将 RGB 映射到 Parula?
用户自制的Parulas
我想我们需要一个定制的Parula因为函数rgb2parula不可用。
提案 here 是 Gnuplot 关于颜色图的变体。
如何将这段代码转换为 Matlab?
这实际上是不可能的,因为Parula
不包含所有可能的RGB值。如果您考虑一下,每个 Matlab 颜色图都只是 RGB 合奏的一个子集。在数学术语中 rgb2hsv
是同构,但 RGB 和颜色图之间不能存在这种同构(即使是 hsv
颜色图,它不采用所有可能的 HSV 值)。
然后对于给定的 RGB 三元组,您可以尝试在 Parula 颜色图中找到最近的 RGB 三元组。类似于:
cm = parula(256);
RGB = rand(1,3);
d2 = (cm(:,1)-RGB(1)).^2 + (cm(:,2)-RGB(2)).^2 + (cm(:,3)-RGB(3)).^2;
[~, mi] = min(d2);
根据此指标, 和 cm(mi,:)
将是 Parula 中最接近 RGB 的颜色。但当然,这是一个不完美的解决方案。
有rgb2hsv、rgb2ind、rgb2lab和[=30=等函数]rgb2xyz 将 RGB 颜色图转换为另一个 - 在引入颜色图 Parula 的 Matlab R2014b 中。
但是,我找不到任何将 RGB 颜色图转换为 Parula 的解决方案,即 Matlab 的当前默认颜色图。
我可以将颜色图设置为与图形一致,但不能按如下方式转换图像。
我开始思考 Parula 与 HSV 对比的好处之一是去除图片中的黑色及其邻近颜色,例如
伪命令
im = imread('http://i.stack.imgur.com/cFOSp.png');
hsv = rgb2parula(im); % Pseudocommand similar for HSV: hsv = rgb2hsv(im);
imshow(hsv);
这给出了
这是图像处理后期出现量化噪声和形态学去除效果不佳的原因之一,如前一帖所述。
如何在 Matlab 中将 RGB 映射到 Parula?
用户自制的Parulas
我想我们需要一个定制的Parula因为函数rgb2parula不可用。 提案 here 是 Gnuplot 关于颜色图的变体。 如何将这段代码转换为 Matlab?
这实际上是不可能的,因为Parula
不包含所有可能的RGB值。如果您考虑一下,每个 Matlab 颜色图都只是 RGB 合奏的一个子集。在数学术语中 rgb2hsv
是同构,但 RGB 和颜色图之间不能存在这种同构(即使是 hsv
颜色图,它不采用所有可能的 HSV 值)。
然后对于给定的 RGB 三元组,您可以尝试在 Parula 颜色图中找到最近的 RGB 三元组。类似于:
cm = parula(256);
RGB = rand(1,3);
d2 = (cm(:,1)-RGB(1)).^2 + (cm(:,2)-RGB(2)).^2 + (cm(:,3)-RGB(3)).^2;
[~, mi] = min(d2);
根据此指标, 和 cm(mi,:)
将是 Parula 中最接近 RGB 的颜色。但当然,这是一个不完美的解决方案。