代码之家  ›  专栏  ›  技术社区  ›  Lyndon

HSV与RGB颜色空间中像素的平均值

  •  0
  • Lyndon  · 技术社区  · 10 年前

    我的问题比什么都概念化。我用极坐标系表示一张空间地图(比如说大都市地区的地图)。我记录了郊区一个10x10住宅区的居民的数据,询问他们想在这个大都市地区住在哪里 (r,theta) -- r 距中心的距离, theta 围绕x轴的角度,所以我使用极坐标系,并使用HSV对其进行颜色编码,保持 V=1=constant 。在获得每个家庭的HSV颜色后,我将这个10x10x3 HSV矩阵转换为RGB,并使用image()显示以下绘图。

    图1:[10x10网格表示一个街区。颜色表示这些家庭希望居住在大都会地区的地方。图例以极坐标表示大都会地区,HSV颜色空间V=1。]

    现在,我正在尝试创建一个更好的郊区街区的视觉表现,看看人们是否根据他们在大都市地区居住的地点的偏好进行分组。使用

    Img2=imresize(Img,1000,'bilinear','colormap','original');
    

    这增加了10x10x3的尺寸 RGB公司 矩阵转换为10000x10000x3 RGB矩阵,同时在像素之间使用双线性插值,从而平滑了此处所示的图片:

    图2:[像素之间使用双线性插值的大平滑矩阵]

    我的问题是:如果我的主要兴趣在于HSV空间,即极坐标都市区,那么在RGB空间中使用这种插值方法是否有效?换言之,当该函数采用RGB中许多像素的平均颜色时,它会代表大都市地区的正确半径和角度吗?

    提前谢谢你。我为一个可能很简单的问题而长篇大论表示歉意。

    1 回复  |  直到 10 年前
        1
  •  1
  •   Community CDub    8 年前

    V定义为最大值(R,G,B)。

    如果从 RGB(255,0,0) RGB(0,0,255) ,那么到一半你就会 RGB(128,0,128) .

    你看最大值是128。所以你不能使用 rgb 插值,除非将V值增加回1(或 255 ,如果使用8位)

    顺便说一句,我不会插值,因为你不能假设基础值是线性的。

    请参阅此处了解更多信息: https://stackoverflow.com/a/2594030/461499