You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成可表示三维空间角度的二维色彩映射图

法向量(三维方向向量)转RGB可视化方案

核心思路

你要实现的是单半球三维方向到RGB的连续映射,核心是利用色彩空间的连续属性保证角度与色彩的对应关系:

  • 方向的角度差异对应色彩的感知差异
  • 方位角的环形特性匹配HSV色彩空间色相通道的环形分布,天然满足单维度环形一致性要求

方案1:极简通用实现(业界标准调试方案)

无需额外色彩空间转换,直接将归一化后的法向量分量映射到RGB通道,实现成本最低,适合大部分开发调试场景:

import numpy as np
import cv2

# 输入:HxWx3的法向量数组 normal_map
# 1. 对每个点的三维向量做L2归一化,消除模长影响仅保留方向
norm = np.linalg.norm(normal_map, axis=2, keepdims=True)
normal_normalized = normal_map / (norm + 1e-8)  # 加极小值避免除0错误

# 2. 将法向量分量从[-1,1]区间线性映射到RGB的[0,255]区间
normal_rgb = ((normal_normalized + 1) / 2 * 255).astype(np.uint8)

# 可选:OpenCV默认BGR通道顺序,保存前需转换
normal_rgb_bgr = cv2.cvtColor(normal_rgb, cv2.COLOR_RGB2BGR)
cv2.imwrite("normal_visualization.jpg", normal_rgb_bgr)

该方案的映射规则:

  • R通道对应x分量:x=-1→R=0,x=1→R=255
  • G通道对应y分量:y=-1→G=0,y=1→G=255
  • B通道对应z分量:z=-1→B=0,z=1→B=255

方案2:严格满足环形一致性的HSV映射实现

如果需要方位角严格对应环形色彩分布,用HSV色彩空间做映射,完全匹配你的需求:

import numpy as np
import cv2

# 输入:HxWx3的法向量数组 normal_map,约定z≥0(仅处理单半球)
H, W = normal_map.shape[:2]
# 1. 法向量归一化
norm = np.linalg.norm(normal_map, axis=2, keepdims=True)
n = normal_map / (norm + 1e-8)
nx, ny, nz = n[..., 0], n[..., 1], n[..., 2]

# 2. 方位角映射到HSV的色相(H)通道,天然满足环形一致性
phi = np.arctan2(ny, nx)  # 方位角范围[-π, π]
h_channel = (phi + np.pi) / (2 * np.pi)  # 线性映射到[0,1]区间

# 3. 极角(与z轴的夹角)映射到HSV的饱和度(S)通道
theta = np.arccos(np.clip(nz, -1, 1))  # 截断数值避免计算误差报错
s_channel = theta / (np.pi / 2)  # 单半球极角范围[0, π/2],映射到[0,1]

# 4. 明度(V)通道固定为最大值1,保证色彩明亮度一致
v_channel = np.ones_like(h_channel)

# 5. HSV转RGB输出
hsv = np.stack([h_channel, s_channel, v_channel], axis=-1)
# 适配OpenCV的HSV格式要求:H范围0-179,S/V范围0-255
hsv_cv = (hsv * [179, 255, 255]).astype(np.uint8)
normal_rgb = cv2.cvtColor(hsv_cv, cv2.COLOR_HSV2RGB)

# 可选:处理单半球外的负z点,置为黑色背景
mask = nz < 0
normal_rgb[mask] = 0

该方案的映射规则:

  • 方位角相差越大,色相差越大,方位角相同的点色相完全一致
  • 极角越大(方向越偏离z轴),色彩饱和度越高,区分度更强

方案对比

方案实现难度环形一致性适用场景
极简方案极低不严格日常开发调试
HSV映射方案中等严格满足正式展示、需要严格角度-色彩对应场景

内容的提问来源于stack exchange,提问作者Alexander Soare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:24:04