Hi, I’m still new to Julia and I have a seemingly simple task that I haven’t been able to figure out:
- Display a group of RGB pixels as a 3D plot with r, g, b components as values on x, y, z axes (I’ve done that).
- Select the marker colors to match the RGB pixel values (I’m struggling with this).
My code looks like this:
using Images using Plots # image as a 3D Array of size (num_channels, height, width) plot_img = channelview(load("/some/image.png")) plotly() gui( scatter( plot_img[1, :, :], plot_img[2, :, :], plot_img[3, :, :]; markersize=0.5, markerstrokewidth=0, markeralpha=0.5, legend=false, size=(1000, 1000), ) )
I’m using Plotly to render the 3D plot as interactive in the browser.
I found the
marker_z option I can use when calling
scatter which should look like
f(x, y, z) -> z_val. However, rather than being a RGB color, the
z_val seems to be a pointer to a palette/gradient. So I think I would need to:
a) generate a function that maps a RGB pixel value to a 1D value
b) generate a gradient that converts back the 1D value into the original RGB value
So yeah, I’m not really sure how to do that, or is there some more straightforward solution?