我正在尝试用 plotly 对图像的所有像素的 RGB 分量进行 3d 绘制(每个像素都是 3d 空间中的一个点,其中轴是 R、G 和 B),同时让每个像素都用它的颜色:
我使用了以下方法,它确实适用于少量像素:
import plotly.offline as pyo
import plotly.graph_objs as go
import numpy as np
pyo.init_notebook_mode()
data = list()
# for each pixel
for pixel in image_to_plot:
# add trace as follows:
data.append(
go.Scatter3d(
# only one point
x=[pixel[0]],
y=[pixel[1]],
z=[pixel[2]],
# set its color
mode='markers',
marker=dict(size=2, color='rgb('+', '.join(pixel.astype(str))+')'),
)
)
layout = dict(scene=dict(xaxis=dict(title='R'), yaxis=dict(title='G'), zaxis=dict(title='B')), showlegend=False)
pyo.iplot({'data': data, 'layout': layout}, filename='so_example')
其中image_to_plot
是一个 numpy 像素数组(形状(1000, 3)
)。
但是越来越多的跟踪几乎使我的浏览器崩溃了 1000 点,甚至没有超过这个值。肯定有更好的方法吗?
我的目标是让这项工作获得 100k 到 1M 点。对于减少数量的颜色(例如在 K-Means 聚类后将点分组为相同颜色的轨迹),这非常有效。
我考虑过反过来做,并根据现有颜色绘制一条轨迹,以避免不同轨迹中有多个重叠点,但这会导致 16M (256^3) 个可能的轨迹,因此可能也不合适。