数据
我想通过HSV(色相饱和度 - 亮度)计算以下像素来对其进行分类
显示没有HSV的RGB通道(source)
x = linspace(0,1, size(Map)(1));
figure(Fignr)
lw = 4;
plot( x, Map(:,1),'color',[1,0,0],'linewidth',lw,
x, Map(:,2),'color',[0,1,0],'linewidth',lw,
x, Map(:,3),'color',[0,0,1],'linewidth',lw,
x, mean(Map,2),'color',[0.7,0.7,0.7],'o')
xlabel 'fraction'
ylabel 'intensity'
end
示例showRGBchannels(1,summer(500))
给出了
这只是一个关于一个映射的示例,您可以在其中看到关于一个数字的红色,绿色和蓝色的不同颜色的分数。 但是,颜色贴图也必须扩展为黄色,绿色和深蓝色。
你可以假设
然而,我认为这是不可取的,因为HSV在这里可以是一个不错的选择。 我还建议使用除Rainbow之外的其他颜色进行可视化(连续红蓝,出版物here)。
有很多实现可以分离颜色和论证,看似使用哪种颜色。 让我们关注RGB颜色及其分离。 可能是通过HSV或任何其他未提及的适当方法。
如何对适当的像素进行分类和计数,即通过HSV对第一张图片的颜色进行分类? 任何课程和/或论文?
答案 0 :(得分:6)
注意阅读前。您似乎混淆了色彩映射与颜色分割的选择。重要的是要注意:
编辑:关于使用COLORMAPS的补充讨论
作为一名从事医学成像工作的学生,我可以确定颜色不是用于分割,而是数据的数值(通常是单通道)本身。使用不同的colourmaps仅用于可视化pourposes。
这里有很多意见,但一般都集中在:jet
色彩图不够清晰(它使用最广泛!)。例如,Moreland色图依赖于在可视化中具有清晰的中点,因此用户清楚地看到哪些值高于平均值以及哪些值低于平均值。
即使是Matlab也开始同意停止使用jet
色彩图的想法,因为matlab的默认色图不是任何更多的喷射(R2014b)。 Read more here
另一种观点认为jet
色彩图不能很好地转化为灰度。
Read more here.
但是,请注意,所有这些讨论都绝对与描述颜色的方式无关。您可以描述在RGB,HSV,CIE L a b *中讨论的任何色彩映射或您想要的任何其他颜色表示。
原始回答
所以,不是给你代码(你也可以在SO中),我只是举一个HSV空间如何工作的小例子。如您所见,在RGB中,用数值分隔颜色似乎是不可能的。因此需要一些其他颜色空间。
最常见的方法之一是使用HSV空间。
如图所示,此空间有3个值。色调(角度),饱和度和值。在这三个中,它们创建了一个圆柱坐标系,指向特定的颜色。从图中可以看出,虽然S和V改变了亮度"和"颜色的数量"类似参数,HUE是唯一一个实际改变颜色色度的参数。所以所有的红色都在H的相同范围内,与S和V的值无关。
在下图中看到一个圆柱片:
我们可以从这张图片得出结论,所有的黄色值都是大约30-90度的H.
这些信息以及rgb2hsv
等Matlab功能的智能使用可以帮助您朝着正确的方向前进。
提示:您希望对红色值的360-0交易执行某些操作。
祝你好运!