I have STL files of 3D objects and I have converted them into both mesh objects and numpy arrays using the numpy-stl package. I have also converted DCM data into numpy arrays with the pydicom package, but the numpy array versions of the STL files have a size (numpyarray.shape) of 4280, which doesn't matchup up with the 256*256 dimensions of the DCM data. Also, the data type for the numpy array of each STl file includes vectors and normal values, which I do not know how to resolve. Any insight into the dimensional mismatch or an explanation of the STL numpy array's data type would be greatly appreciated, and I have attached a picture of the DCM and STL data in numpy array form.
How do I convert STL file to numpy array and format it to overlay with Dicom data?
1.9k Views Asked by Alex Richardson At
2
There are 2 best solutions below
0
Guang
On
If you have ever done 3D printing you will know you want to slice your STL object into slices, as Robert Hafner suggests.
First you need to make sure your STL object is aligned with your Dicom volume, this may or may not be difficult, but necessary. Then slice the STL into 256 slices, as if you are going to 3D printing it, output the slices as 256 x 256 images, now you get 256 images of 256x256 pixels. Since it's aligned before your slicing, you may use these images as your masks, threshold them if necessary.
Related Questions in PYTHON
- new thread blocks main thread
- Extracting viewCount & SubscriberCount from YouTube API V3 for a given channel, where channelID does not equal userID
- Display images on Django Template Site
- Difference between list() and dict() with generators
- How can I serialize a numpy array while preserving matrix dimensions?
- Protractor did not run properly when using browser.wait, msg: "Wait timed out after XXXms"
- Why is my program adding int as string (4+7 = 47)?
- store numpy array in mysql
- how to omit the less frequent words from a dictionary in python?
- Update a text file with ( new words+ \n ) after the words is appended into a list
- python how to write list of lists to file
- Removing URL features from tokens in NLTK
- Optimizing for Social Leaderboards
- Python : Get size of string in bytes
- What is the code of the sorted function?
Related Questions in PYDICOM
- pydicom : Dataset does not have attribute 'TransferSyntaxUID'
- How to fix this code to display images thumbnails
- pydicom AttributeError: Dataset does not have attribute 'ImagePositionPatient'
- How to correctly to combine a set of images into one dicom file?
- Create a new private tags in a DICOM file
- AttributeError: 'FileDataset' object has no attribute 'Modality'
- I can't open dcm file
- Receive private SOPClassUID images in pydicom
- Import standard tags to a DICOM file with pydicom
- Unable to load DICOM images using Pydicom inside tf.data.Dataset
- How to slice region of numpy array surrounding minimum value (i.e. 100 pixels on each side of a point)
- Positional Argument error with pydicom.dcmread
- Resize the Depth of CT data in Python
- Get all images of a multi-frame DICOM file
- Is it possible to retrieve beam real world position from RT PLAN
Related Questions in MEDICAL-IMAGING
- 3D numpy array iteration using shared C libraries
- 3D pointcloud visualisation of DICOM Images with VTK in C#
- How to find the padding size of an image?
- DICOM files not recognized by Keras ImageDataGenerator in Tensorflow 2.3.1
- How to set spacing in Frangi filter for 3D stack of DICOM data
- How I can change this operation imshow(im16,[WC-WW/2,WC+WW/2]); into a variable in matlab?
- In python numpy array, how to know which object is nearer to one point in one image?
- DICOM 3d display - Java 3D vs VTK
- Which method can export labelled tiles/patches from original image?
- Dice similarity index between two 3D array from rtstructure dicom file
- Convert DICOM images and contours to numpy arrays
- Issue with Shape of X_all in getListAgeDays Function for BraTS20 Dataset
- ValueError: Can not squeeze dim[1], expected a dimension of 1, got 24 CNN
- Visualizing streamlines using vtk and mevislab
- Unable to load DICOM images using Pydicom inside tf.data.Dataset
Related Questions in NUMPY-STL
- numpy-stl topological information of the stl fle read
- Convert .STL file to NetworkX graph object?
- How do I solve this issue: process finished with exit code -1066598274 (0xC06D007E)
- How to initialize a triangular mesh in vtk
- How do I convert STL file to numpy array and format it to overlay with Dicom data?
- Finding intersection points between .stl (CAD drawing) file and 3D plot (matplotlib)?
- getting vertices and face as numpy array from a stl file using trimesh
- How to save multiple meshes in python using numpy-stl
- remove inside information when merging two 3d objects
- Is it possible to create Delaunay triangulation only in vertical (Z dimension)?
- How to use numpy-stl with file uploaded with Flask request
- How to extract vertex , face from .stl file
- Python- STL File Reduction
- How to change STL colors using vtk library
- How to get rid of "numpy.ndarray" has no attribute split?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
I'm going to recommend you take a slightly different approach here- rather than try to accomplish this all in numpy dealing with the raw dicom and STL data, convert the dicom into a PNG and then overlay the STL on top of it.
So first to create the DICOM PNG-
I borrowed this code from a previous comment I made. One thing I want to explicitly call out is the conversion into a Float- looking at your example images it looks like you have integers, which means you're losing a lot of the data from the DICOM and it will make your output worse.
The next step is to get a flat version of the STL file that you can shove on top of your image. I'm not going to go in depth on that, and instead am going to recommend you use the numpy-stl library which has a "flatten" function for this purpose. The examples on that package should be really helpful for finishing this off.