Convert a 3d graphic into rgb array - arrays

Im working on a project that has 3d led cube (256*256*256).What software do i use to design the 3D model and for projecting the same on the LED cube.The LED used is RGB but the answer need not be for RGB. Even monochromatic LED is also fine.
Ive tried checking for MATLAB , FFMPG , OPENCV and AUTOCAD.But none of then help.
Objective : CREATE 3D MODEL => GENERATE MATRIX/ARRAY of colors => Project the matrix onto LED cube.
The generator has to be dynamic such that any changes in to 3d model should reflect on the LED cube.Any well known simulator as such is encouraged.Please count on the above mentioned software if they can do the same, image processing through matlab/opencv is new for me.
Input file : graphic 3D model drawn.
Output file : array of representation of color(any).

Related

Can I train a CNN on 3d images?

I am working with the 2015 BRATS Dataset of MRI Brain Tumors. The files in the dataset are in .mha format and have many slices of 2d images that make up a 3d brain. Is there a way I can train the model on these images or do I have to convert them somehow? If so, how do I convert them?
A normal RGB image is already a 3 dimensional input. So you can just stack all the images and instead of maybe 3 channels you have 30 (for 10 stacked rgb images). You can process this data like you would process any other imgae.
What you can also try with this kind of data is using 3D convolutions on them. This way you have a 3 dimensional kernel like 3x3x3 (maybe even more in channel direction) and you slide it over the input in x,y and channel direction. This can help and boost the performance but will increase the runtime.

LABVIEW matrix to graylevel picture

I'm using camera mightex bte-b050-u
and using the example the company gave using labview I created a 2D array and want to transform it into a grayscale photo. I have no idea how to do it since I don't know labview and using the code in matlab it has many errors.
I'd appreciate if someone could please let me know how I can take this 2D array and represent it as a grayscale photo. (beam profiler if you wish)
P.s
I have no idea why they ignored 28 "words" so I just tried going with that logic and transform it to my camera according to the pixels I have.
I would encourage you to read about intensity graph.
And use the linked article which would explain on how to change the color scale on the graph.
Changing the color on an Intensity Graph
Here is an example that converts a 2-D array into an image: Convert Array to Image.
In short, use Flatten Pixmap.vi, Draw Flattened Pixmap.vi, and Picture to Pixmap.vi from the NI-IMAQ palette, which is part of the Vision Application Software SDK.

WPF 3D and Helix 3D toolkit graphics with ~500,000 triangles in one viewport- optimizing

I am new to stack overflow and new to 3D graphics programming. I have been given the task of creating an app that will read in data (currently I am reading from a delimited text file, but eventually will read from data arrays) and to graphically display the data in 3D. The data is x,y,z coordinates read from a 3D scanner which is scanning logs. I need to show the 3D representation of these logs on screen, from 4 different angles. I am reading the data into a 2-dimensional Point3D array and then using it to create 3D models in a HelixViewport3D. I use a nested for loop to check that the data points in the array are within certain x,Z bounds- and if they are I need to create a triangle out of that data. Once the entire array is passed through, I add the Model3DGroup to the children of my viewport:
topModel.Content = topGroup;
this.mainViewport.Children.Add(topModel);
It takes about 8 seconds for this to take place and zooming,panning, rotating are very very slow with all this data on the screen (around 500,000 triangles). Are there any ways to improve performance of WPF 3D graphics? I actually don't need to be able to zoom/pan/rotate in the finished app but it is helpful for debugging. The final app will simply be the same model shown statically 4 different ways, from different sides. However, I need to be able to read in the data and get the graphics to display in 1-5 seconds. Any help is greatly appreciated, and I hope my question is fairly clear!
EDIT: After doing some more digging into vertex buffering, this is what I need to do. I am using way too many points. If anyone can point me to some literature on doing vertex/index buffering in c#, it would be greatly appreciated!
I have solved this issue. Thanks for the input Capt Skyhawk! You saying that you doubted this was a WPF3D shortcoming helped me look in the right places. My problem was that the way I wrote this made every triangle it's own ModelVisual3D!! I re-wrote the code to contain only 3 GeometryModel3D (sp?) objects, and all the triangles are placed in a MeshGeometry3D and then the mesh is used to create a model. This made the models render in < 0.1 seconds. I now have a new issue- for some reason only about half of the triangles are showing up in the model in my viewports. I'm not sure why, though it may be that I have too many Point3D points or too many triangle indices in my mesh.
I doubt this is a shortcoming in WPF3D. It's more than likely the loading process. Parsing a text file with 500,000 triangles(even more points!) is where the bulk of the processing time is being spent.
If the loading of the text file is not being included in the 8 seconds, something is very wrong.
Are you using index buffers? If not, you're shooting yourself in the foot with that many vertices.

OpenGL ES 1.1 on the raspberry pi

I'm trying to get started with OpenGL ES 1.1 on the raspberry.
As X is not accelerated on the raspberry I thought this could be a good (and fast) alternative.
Now what I'm trying to do is mostly UI stuff like menus and so on, nothing like crazy 3D gaming with extra terrestrial effects and shaders! That's why I've chosen OpenGL ES 1.1 instead of the 2.0.
Now I have taken a look at the hello_triangle.c code on the raspberry and have understood a little how it works and how you draw and move/rotate stuff.
Now the problem is that when rotating and moving stuff, the whole model is affected!
What I want to do is have multiple independent objects (like rectangles representing menu items for example) and move them independently, so I could for example rotate the current selected menu entry rectangle.
Thank you!
PS.: Here's a link to the hello_triangle code I've been studying

direct access to pixel data in wpf 3d

Is there a lockbits equivalent of 2d in 3d in Windows Presentation Foundation to get direct pixel access ?
I understand you can paint a triangle at a time: 3d for the threst of us. Wouldn't it be easier to paint in cubes instead of triangles ? (I need to paint a stack of images such as an mri sequence).
The WriteableBitmap class allows you to access the pixels, I'm a bit unsure what you want with regards to 3d but you should be able to use a WriteableBitmap as the texture for each item and position them in 3D as required. For creating a stack of images 3D Panel and FluidKit's ElementFlow might be of interest to you.
Triangles are used because 3 points always make a flat surface this makes shading simpler and predictable plus you can make any shape if you use enough triangles.
If by painting in cubes you mean tiny cubes similar to how you use pixels in 2D these are known as Voxels they have their use-cases but most hardware and software are designed with polygons in mind.

Resources