Я пытаюсь построить 3D-компоненты RGB для всех пикселей изображения с помощью графика (каждый пиксель - это точка в трехмерном пространстве, где оси - это 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
- это массив пикселей (форма (1000, 3)
).
Но растущее число трассировок почти приводит к краху моего браузера с 1000 точками и не даетдаже сделать выше этого. Конечно, есть лучший подход?
Моя цель состоит в том, чтобы получить эту работу с 100k до 1M очков.Для уменьшенного количества цветов (например, группирование точек в кривые одного и того же цвета после кластеризации K-Means) это работает отлично.
Я думал об этом наоборот и построил график для каждой существующейцвет, чтобы избежать нескольких перекрывающихся точек на разных трассах, но это приводит к 16M (256 ^ 3) возможных трасс, поэтому, вероятно, также не подходит.