Measure a bullet's cartridage and propellant grain size and distribution ================================================================================== .. note:: Filename: volume_bullet_p134_uint16.bin volume = {243, 243, 227}, z-fastest, pixel size = 55 |micro| m, file size = 27 MB .. |micro| unicode:: 181 :rtrim: Measure the cartridage volume using manual measuring tools ---------------------------------------------------------- #. Launch Avizo 7, file->Open data as, choose the bullet binary dataset, click open, in the popup window, choose RAW data, click ok, input correct dataset inforamtion (243x243x227, z-fastest, little endian), click ok to load data into Avizo. A data object icon will appear in the object pool. Attach Display->orthoslice to visualize (left-click to choose the data object, then right click to choose the orthoslice module). #. Choose the ortho projection mode, use the measure tool (top layer tool icons, look for the ruler shaped icon) to measure the diameter and height of the cartridge in pixels, multiply by pixel size (55 |micro| m) .. image:: vizsoftware/toolbar.png :width: 700px .. image:: vizsoftware/measure.png :width: 400px #. Compute the volume as: bullet-volume = pi * radius * radius * height ------------ Check the bullet marking on the bottom by isosurface ---------------------------------------------------- #. Attach Display->isosurface module to the bullet data object, set threshold (slider) to 28000, apply. Rotate to the bottom of the bullet, the marking would be readable .. image:: vizsoftware/bullet-marking.png :width: 240px #. Tune the threshold value to other values, such as 31000, look at other geometry features #. Do Display->ROI Box to selet a region of interest, and use it as data source of the isosurface module. ---------- Measure the propellant volume by segmentation --------------------------------------------- #. Open data, attach orthoslice to visualize, clip data if necessary. #. On data icon, right click->Measure->Histogram to show histogram. #. On data icon, right click->Image Segmentation->Multi-Thresholding, choose threshold set: 28000, 31000, 35000, click Histo button to show histogram with the threshold value, apply. A label field data object datasetname.label is created. #. Choose the .label data object, invoke segmentation editor by clicking the segmentation icon in the property panel. The view window will be split into 4-view mode. .. image:: vizsoftware/seg-toolbar.png :width: 400px .. image:: vizsoftware/bullet-seg.png :width: 400px #. Examine the material labels, Delete materials not of interest. Leave only the background(exterier) and the propellent(muscle), rename material name from "muscle" to "propellant" by double clicking on muscle material. While choosing the propellant material, right click and choose draw style -> 3D View, to see the 3D structure on the perspective window (upper left corner). .. image:: vizsoftware/bullet-materials.png #. Go back to the project view tab. Click the .label data object, choose Measure->material statistics. Apply, a statistics data will be created, select it and click the show button at spreadsheet section. Volume of the propellant will be measured and reported in a spreadsheet format. #. Click the .label data object, choose Compute->Generate Surface to generate surface, Apply, a .surf data object is created. Use the simplifier icon to simplify the surface if desired. then use Display->Surface View module to visualize. .. image:: vizsoftware/grain-surface.png :width: 300px ------- Save your Avizo network ----------------------- #. This is the Network. File->Save Project As, give your project a name. .. image:: vizsoftware/bullet-network.png #. Choose "auto save", save all intermediate data generated by Avizo. ------- Measure the propellant grain distribution ----------------------------------------- #. Open data, use isosurface with value 31000 to reveal the propellant structure. #. On data icon, right click Object->Duplicate, then Crop the duplicated dataset to contain only the propellant volume. Right click Object->Rename to rename the cropped dataset. #. pick the cropped data object, add orthoslice to have a slice view of the dataset. Right click on the data object and choose Image Segmentation->Multi Thresholding module, edit to three-materials mode (delete the "bone" lable in Regions input), so only two threshold levels are present. put 31000 and 35000 as threshold value, apply, a .lables data object will be created. #. Attach Orthoslice to the .label data object, select the same slice number as the first orthoslice module, enable transparency as "Binary" to visualize both the original image and the labeled image. .. image:: vizsoftware/grain-thres.png :width: 300px #. Right click the .label data object, choose Image Morphology->Erosion, set parameter to 1, a new filtered data object will be created, use orthoslice to visualize. The goal is to see the separated grains. If the speration is not good enough, try to redo the erosion with parameter set to 2. This is the easiest way to do geometry feature separation. .. image:: vizsoftware/grain-erode.png :width: 300px #. Right click on the filtered data object, choose Image Segmentation->Connected Components, choose input as Label image, output to be both Label Image and Spreadsheet, output label image to be unsigned 16bit. apply. Two new data objects are created, a components data object, and a regions data object. Click the components data object, show the spreadsheet. #. Click the Regions data object, add orthoslice to visualize. should see that each separated grain has its own color. .. image:: vizsoftware/grain-label.png :width: 300px #. If the grain regions became too small by erosion, apply Image Morphology->Dilation to grow the outside boundary of the regions by 1 pixel. #. Use Display->Volume Rendering to see the grains in 3D, choose labels.am for colormap, set alpha scale to be 0.3. .. image:: vizsoftware/grainlabels3d.png :width: 300px #. Average grain size = propellant-volume / grain-number #. This is how the network looks like: .. image:: vizsoftware/grain-network.png ------- Separating the propellant grains in bullet dataset -------------------------------------------------- #. Launch Avizo 7 Fire edition, file->Open data as, choose the bullet binary dataset, click open, in the popup window, choose RAW data, click ok, input correct dataset inforamtion (243x243x227, z-fastest, little endian), click ok to load data into Avizo. A data object icon will appear in the object pool. Attach Display->orthoslice to visualize (left-click to choose the data object, then right click to choose the orthoslice module). #. Attach a Quantification Tool module to data object #. In the Quantification processing dialog, choose Thresholding->Binarisation->I_threshold, set threshold value to the range 31000-35000, Apply the threshold, a binary image is created, rename it ImageThreshold. #. Attach a new or connect the existing Quantification module to ImageThreshold #. Choose Fast Morphology->Complex transforms->distxxx, leave default parameter value #. Apply the distance map command, rename the result image ImageDist. .. image:: vizsoftware/imagedist.png :width: 300px #. Connect the Quantification module to ImageDist, Choose Fast Morphology->Complex transforms->fastmaxima, Apply, rename the result image ImageMerged. ImageMerged is the set of most inner regions within objects. #. Connect the Quantification module to ImageMerged, Choose Thresholding->Binarisation->label, Apply and rename result imageMarkers .. image:: vizsoftware/imagemarker.png :width: 300px #. Connect the Quantification module to ImageDist, Choose PointOperation->Logical->Logical_not, Apply and rename result image ImageDistReverse. .. image:: vizsoftware/imagedistreverse.png :width: 300px #. Connect the Quantification module to ImageDistReverse, Choose Fast Morphology->Complex transforms->fastwatershed, set second iput to imageMarkers. Apply and rename result imageWatershedLines. The watershed algorithm expand the markers toward increasing value of the reversed distance map. .. image:: vizsoftware/imagewaterline.png :width: 300px #. Connect the Quantification module to imageThres, Choose PointOperation->Logical->Logical_sub, set the second input to imageWatershedLines. Apply and rename result imageSepGrain. This command substract the separations lines from the binary image of propellent grains. .. image:: vizsoftware/imagesepgrain.png :width: 300px #. Connect the Quantification module to imageSepGrains, Choose Thresholding->Binarisation->label, Apply and rename result image ImageGrainLabel. .. image:: vizsoftware/imagegrainlabel.png :width: 300px #. Right click on ImageGrainLabel, choose Compute->SurfaceGen, After reconstruction, you can display the resulting surface with SurfaceView module. Notice that the SurfaceGen module only works with label data. #. Also notice that the resulting surface contains a large number of polygons and may require prior simplification for fast display on your hardware #. Avizo allows you to export the surfaces to various file formats, or to generate and export a tetrahedral model suitable, for instance, for finite element simulation with some external solver. #. Summary: Step by step object separation by water-shed algorithm. extraction of geometric information by geometry reconstruction. The result network look like this: .. image:: vizsoftware/watershed-network.png