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
- How to store a date/time in sqlite (or something similar to a date)
- Instagrapi recently showing HTTPError and UnknownError
- How to Retrieve Data from an MySQL Database and Display it in a GUI?
- How to create a regular expression to partition a string that terminates in either ": 45" or ",", without the ": "
- Python Geopandas unable to convert latitude longitude to points
- Influence of Unused FFN on Model Accuracy in PyTorch
- Seeking Python Libraries for Removing Extraneous Characters and Spaces in Text
- Writes to child subprocess.Popen.stdin don't work from within process group?
- Conda has two different python binarys (python and python3) with the same version for a single environment. Why?
- Problem with add new attribute in table with BOTO3 on python
- Can't install packages in python conda environment
- Setting diagonal of a matrix to zero
- List of numbers converted to list of strings to iterate over it. But receiving TypeError messages
- Basic Python Question: Shortening If Statements
- Python and regex, can't understand why some words are left out of the match
Related Questions in PYDICOM
- Convert Images into Dicom with python
- pydicom.dcmread() consumes a lot of memory when working with bigger files
- Deleting dicom tags completely from every folder in a file
- Unable to load DICOM images using Pydicom inside tf.data.Dataset
- Import standard tags to a DICOM file with pydicom
- Receive private SOPClassUID images in pydicom
- I can't open dcm file
- AttributeError: 'FileDataset' object has no attribute 'Modality'
- Create a new private tags in a DICOM file
- How to correctly to combine a set of images into one dicom file?
- Pydicom error while resizing dicom file - ValueError: The length of the pixel data in the dataset doesn't match the expected length
- get scale of image (px/cm^2) in pydicom
- How to read value length (but not value) in pydicom?
- Range of Pixel Data for a Dicom File
- Medical Imaging with python
Related Questions in MEDICAL-IMAGING
- RuntimeError: Given groups=1, weight of size [64, 1, 3, 3], expected input[1, 3, 416, 416] to have 1 channels, but got 3 channels instead
- Plot Dicom data in sagittal and coronal plane with "slicelocation" in stead of slice number in python
- What kind of metrics should be used in medical image segmentation for early stopping to choose the model?
- Removing white text artifacts from medical images with TensorFlow results in black images
- DeepLabv3+ for semantic segmentation: dice loss stuck
- i can't download the pretrained model of uunet, why?
- Segment lighter region outside a darker region
- Who can give me the code of SFA model(polyp segmentation)?
- How 'torch.nn.Functional.grid_sample' module actually works in the case of 2D gray scale image?
- How do I use DenseNet121 in MONAI?
- Why is my image registration code taking so long to run?
- (Cornerstone.js) Contour editing not intuitive with FreehandRoiSculptorTool
- Efficiently Modeling a Hollow Sphere in a 3D Voxel Grid for CT Scanner Simulation
- Function to find points along a vector line in a CT image
- How to force model to focus on "rib region" of Chest X-Ray?
Related Questions in NUMPY-STL
- How to analyze several CAD files with python
- Generate a network graph inside a cylinder
- getting vertices and face as numpy array from a stl file using trimesh
- How do you extract faces from a numpy-stl mesh?
- How to use numpy-stl with file uploaded with Flask request
- How do I convert STL file to numpy array and format it to overlay with Dicom data?
- How to initialize a triangular mesh in vtk
- How do I solve this issue: process finished with exit code -1066598274 (0xC06D007E)
- Convert .STL file to NetworkX graph object?
- is there a general code that can export Matplotlib plots to .stl?
- How to get rid of "numpy.ndarray" has no attribute split?
- How to extract vertex , face from .stl file
- numpy-stl topological information of the stl fle read
- Finding intersection points between .stl (CAD drawing) file and 3D plot (matplotlib)?
- How to get .stl file from Amazon S3 by using boto3?
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 # Hahtags
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.