Patent Publication Number: US-2022236716-A1

Title: Systems and methods of three-dimensional printing of collimators using additive approaches

Description:
CROSS-REFERENCE TO RELATED PATENT APPLICATIONS 
     This application is a Continuation of U.S. patent application Ser. No. 15/733,430, filed on Jul. 28, 2020, which is a U.S. National Phase of Serial No. PCT/US2018/021451, filed on Mar. 8, 2018, the disclosures of which are incorporated herein by reference. 
    
    
     BACKGROUND 
     Single Photon Emission Computed Tomography (SPECT) imaging systems include a collimator in the path of radioisotope emitted by an object-under-study and a detector (e.g., a photomultiplier tube, or the like). The choice of collimator design can have an impact on the sensitivity and resolution of the SPECT system. 
     The collimator acts as the front-end of a gamma camera, and has a big impact on the signal-to-noise ration of the captured image. The collimator functions to spatially control the propagation direction (i.e., field-of-view) of the gamma rays reaching the detector—similar to a lens used in visible photon wavelengths. SPECT collimators are typically formed from radiation-absorbent material, where non-absorbed photons can reach the detector. 
       FIG. 1  is a diagram of conventional SPECT scanner imaging system  100 . SPECT scanner system  100  includes gantry  120  to which two or more gamma cameras  130   a,    130   b  are attached, although other numbers of gamma cameras can be used. Detector  132  in the gamma ray camera detects gamma photons  140  emitted by a radioisotope within the body of a patient  145  lying on a bed  150 . Collimator  134  is positioned between the emitted photon and the detector. Bed  150  is slidable along axis-of-motion A. At respective bed positions (i.e., imaging positions), a portion of the body of patient  145  is positioned between gamma cameras  130   a,    130   b  and an image of that body portion is captured. 
     Control processor  110  can execute instructions to control operation of the SPECT scanning system. Motion control/automation module  112  can control motors, servos, and encoders to cause gamma cameras  130   a,    130   b  to rotate along gantry  120 , and to move bed  150  along an axis-of-motion (arrow A). Data acquisition/image processing module  114  can acquire projection data at defined imaging position points during the rotation of gamma cameras  130   a,    130   b  and/or the shifting of bed  150 . The acquired data can be stored in memory  118 . Imaging processing algorithms can manipulate the stored projection data to reconstruct a 3D image. The reconstructed 3D image can be displayed on an interactive display controlled by operator interface/display module  116 . 
     Conventional attempts to use commercially-available, off-the-shelf three-dimensional (“3D”) printers to produce the collimator patterns commonly used in SPECT have not achieved satisfactory results. Conventional 3D printing of collimators fails to meet the quality required for medical imaging (e.g., tolerances, uniformity, manufacturability, etc.). 
     There are significant challenges in making use of commercially-available, additive processes to produce medical-modality collimators on a 3D printer. One reason is that the required tolerances cannot be guaranteed using 3D printers&#39; additive processes due to the high viscosity of the extruded filament print material, which is made even higher when imbedded with high-density and high-atomic number (“Z”) materials (required to increase the attenuation of ionizing radiation). Limitations controlling the position and speed of the extruding printhead relative to the flow of the extruded material also contribute to the challenges. Because of these factors, the conventional approach of producing stereolithography files (e.g., STL format) directly from 3D CAD files is not a viable solution. Further, conventional approaches to manufacturing collimators by 3D printing fail to yield devices that meet quality requirements of medical imaging (tolerances, uniformity, manufacturability, etc.) using off-the-shelf components. 
     In recent years, vendors of 3D printed collimators have been proposing green manufacturing processes (e.g., Pb-free and RoHS-compliant) that require special printing processes which require significant investment and add cost to the end products. None of these processes have been successfully produced in scale to replace current available lead collimators. The cost for these conventional 3D printed collimators is greater than existing lead collimators. 
     There is a need in the art to quickly, and accurately create medical-modality collimators by applying layered 3D printing techniques using information contained in a stereolithography file. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  depicts a conventional SPECT scanner imaging system; 
         FIG. 2A  depicts a conventional 3D printer trajectory path; 
         FIG. 2B  depicts a predicted resulting cumulative deposit for the trajectory path of  FIG. 2A ; 
         FIGS. 2C  depicts a synthesized cumulative result for the trajectory path of  FIG. 2A ; 
         FIG. 3A  depicts multiple layers of a 3D printer trajectory path, and its predicted cumulative deposit in accordance with embodiments; 
         FIG. 3B  depicts synthesized results for individual layers and a synthesized cumulative result for the multiple layers depicted in  FIG. 3A  in accordance with embodiments; 
         FIG. 4  depicts a process to create a 3D print file in accordance with some embodiments; and 
         FIG. 5  depicts a 3D printer system for producing a collimator in accordance with embodiments. 
     
    
    
     DETAILED DESCRIPTION 
     Embodying systems and methods implement one or more layered-permutation sequence algorithms that specify the content of a stereolithography (“STL”) file used to instruct a 3D printer to produce a collimator using an additive, layered process. The printed collimator is extruded layer by layer using 3D printer filament, to form a collimator of suitable thickness for its intended medical modality. Systems and methods specify each layer representation within the STL file in a predetermined order to achieve a collimator capable of operating within required performance specifications. 
     A collimator manufactured by these techniques can be applicable for various medical modalities (e.g., SPECT, CT, and others). For purposes of this disclosure, a SPECT system collimator will be discussed. However, the invention is not so limited, it should be readily understood that other medical-modality collimators are within the scope of this disclosure. 
     In accordance with embodiments, a 3D printed collimator with required tolerances and overall quality, and having a large field-of-view can be produced using off-the-shelf components from an STL file created by embodying algorithms. Embodying system and methods can have direct applications in fast-prototyping operable collimators for test/prove-out of new designs. Embodying approaches distinguish over conventional techniques by being able to quickly print and test new collimator designs (for performance compatibility/impact with improved image reconstruction algorithms). 
     This distinction over the prior art can be of great value to improving current and future SPECT systems and applications. Embodying systems and methods make possible the manufacture of medium-energy SPECT collimators using commercially available 3D printing off-the-shelf components. 
       FIG. 2A  depicts conventional 3D printer trajectory path  200 , which illustrates the segments covered by the printhead. The printhead begins a forward trajectory at position  0  and ends its travel at position  115 ; retraces itself in a reverse trajectory from position  115  to position  0 ; and repeats forward and reverse trajectories until the layered material is at a specified height. 
       FIG. 2B  depicts predicted 3D printed pattern. This predicted pattern can be an idealized version from the contents of the CAD drawing used to create the conventional STL file.  FIG. 2C  depicts an illustration of actual 3D printed pattern, which is the result of the conventional approach to 3D printing of the collimator. 
     As illustrated by the examples of  FIGS. 2A-2C , under conventional techniques, the required size and tolerances of collimators are difficult (perhaps impossible) to maintain using the conventional direct-conversion of CAD files into STL files while using traditional 3D printing methods (forward trajectory, reverse trajectory, and repeat cycle) with off-the-shelf components. 
     Drawbacks in the conventional approaches result from, for example, the 3D printhead is required to re-trace itself along the same path during the additive process detailed in the conventional STL file; and/or maneuvering through sharp turns (e.g., about 60° or greater) during its trajectory. These features are not properly achieved when created by a 3D printer extruding conventional materials per information provided by a conventional STL file. 
       FIG. 3A  depicts multiple layers  310 ,  320 ,  330  of a 3D printer trajectory path, and predicted cumulative deposit  340  in accordance with embodiments. Each of multiple layers  310 ,  320 ,  330  represents a respective trajectory path for the printhead, where each layer describes a respective path along which the printhead does not retrace itself to produce that respective individual layer. For this example, when overlapped the multiple layers form a triangular lattice. 
     Layer  310  depicts a printhead path with two connected sets of about parallel lines, where one set of lines is orthogonal to the other. The printhead moves along the trajectory path. Layer  320  depicts a printhead path with one set of lines rotated clockwise diagonally (about 60°) from its position in layer  310 . Similarly, layer  320  depicts a printhead path with the same set of lines rotated counterclockwise diagonally (about −60°) from its position in layer  310 . 
     The triangular-hole predicted cumulative deposit  340  is formed by stacking successive groupings of these three different layers  310 ,  320 ,  330  one grouping after the other grouping. These layers are positioned relative to each other with respect to the horizontal plane of deposit so that the overlapping portions of the 3D-printed layers intercept at about their center. In accordance with embodiments, the groupings can follow a non-repeating permutation sequence; or a random sequence. 
     The trajectory path for each of the multiple layers is determined by an embodying algorithm (described below). The algorithm receives design specification parameters for a medical-modality collimator. The design specifications can be in the form of a CAD file describing the design of the collimator to be printed on the 3D printer. In other implementations, the design specifications can be stored as one or more database records (e.g., objects, tabular data, etc.), or other formats. 
       FIG. 3B  depicts synthesized results  360 ,  370 ,  380  for individual layers  310 ,  320 ,  330  and a synthesized cumulative result  390  for the multiple layers depicted in  FIG. 3A  in accordance with embodiments. 
     The conventional, synthesized cumulative result illustrated in  FIG. 2C  (produced by multiple cycles retracing along the same printhead path) does not result in a collimator having straight septa of equal length to form the hexagonal channels depicted in  FIG. 2B . However, synthesized cumulative result  380  produced in accordance with embodiments results in straight septa of about equal length to form the perimeter of a triangle with about equal sides, resulting in collimator having about triangular matrix of channels. 
     In accordance with embodiments, a physical collimator represented by synthesized cumulative result  390  can be produced by stacking groupings of printer path layer  310 , printer path layer  320 , and printer path layer  330  to create triangular patterns. The deposition of the extruded material within the collimator&#39;s field-of-view is along straight lines, with all turns made outside the field-of-view. Multiple renditions of the stacked grouped layers are deposited to build the septa walls to the desired height. In accordance with implementations, collimators with hexagonal, square, triangular, or other perimeter channels can be produced. 
     In accordance with embodiments, the ordering of the multiple paths within each stacked grouping can be varied between groups. In some implementations, the ordering within a stack grouping can be sequential (e.g., ABC, ABC, ABC, . . . ), stepped (e.g., ABC, BCA, CAB, . . . ), random (ABC, BAC, CBA, . . . ), or a non-repeating permutation—where “A”, “B” and “C” represent different types of 3D printhead trajectory path patterns (e.g., layers  310 ,  320 ,  330 ). The variation in stack grouping can reduce manufacturing imaging artifacts in the 3D printed collimator, thus improving its overall performance. The thickness of layers, and/or successive layers can also reduce manufacturing imaging artifacts and, thus, improve the collimator performance. 
     For a given design specification of a medical-modality collimator, the following parameters can be determined:
         p!: the number of permutations of p types of layers without repetition;   n: the number of 3D printed layers;   p: the number of types of layers;   d: the thickness of a 3D-printed layer; and   t: the overall collimator thickness.       

     For example, for a triangular-hole collimator, p=3 (layers) and p!=6 (quantity of layer permutation types). In accordance with one implementation, the sequence of permutations can be:
         Layer grouping permutation #1: [A,B,C];   Layer grouping permutation #2: [B,A,C];   Layer grouping permutation #3: [C,A,B];   Layer grouping permutation #4: [A,C,B];   Layer grouping permutation #5: [B,C,A];   Layer grouping permutation #6: [C,A,B].       

     Based on the collimator design specifications, embodying systems and methods can determine the number of layer permutations, and the grouping pattern for within each layer. For example, a non-repeating permutation sequence can be determined as follows: 
     The quantity of non-repeating permutation sequences (l) can be pre-generated for storage in memory: 
     
       
         
           
             
               
                 k 
                 0 
               
               = 
               
                 p 
                 ⁢ 
                 
                   
                     ! 
                     0 
                   
                   ⁢ 
                   
                     × 
                     
                       ( 
                       
                         p 
                         × 
                         p 
                         ! 
                       
                       ) 
                     
                   
                 
               
             
             ⁢ 
             
               
 
             
             ⁢ 
             
               
                 k 
                 1 
               
               = 
               
                 p 
                 ⁢ 
                 
                   
                     ! 
                     1 
                   
                   ⁢ 
                   
                     × 
                     
                       ( 
                       
                         p 
                         × 
                         p 
                         ! 
                       
                       ) 
                     
                   
                 
               
             
             ⁢ 
             
               
 
             
             ⁢ 
             
               
                 k 
                 2 
               
               = 
               
                 
                   p 
                   ⁢ 
                   
                     
                       ! 
                       2 
                     
                     ⁢ 
                     
                       × 
                       
                         ( 
                         
                           p 
                           × 
                           p 
                           ! 
                         
                         ) 
                       
                       ⁢ 
                       
                         
 
                       
                       * 
                       
                           
                       
                       * 
                       
                           
                       
                       * 
                       
                         
 
                       
                       ⁢ 
                       
                         k 
                         l 
                       
                     
                   
                 
                 = 
                 
                   p 
                   ⁢ 
                   
                     
                       ! 
                       l 
                     
                     ⁢ 
                     
                       × 
                       
                         ( 
                         
                           p 
                           × 
                           p 
                           ! 
                         
                         ) 
                       
                     
                   
                 
               
             
           
         
       
     
     Where k l  represents the quantity of elements of the l th  permutation sequence. For instance, for p=3, 
     k 0 =18:
         [A,B,C,B,A,C,C,A,B,A,C,B,B,C,A,C,A,B]       

     k 1 =108:
         [A,B,C,B,A,C,C,A,B,A,C,B,B,C,A,C,A,B,C,A,B,A,C,B,A,B,C,B,A,C,B, C,A,C,A,B,B,C,A,C,A,B,A,B,C,B,A,C,C,A,B,A,C,B,A,B,C,B,A,C,B,C, A,C,A,B,C,A,B,A,C,B,C,A,B,A,C,B,B,C,A,C,A,B,A,B,C,B,A,C,B,C,A, C,A,B,A,B,C,B,A,C,C,A,B,A,C,B]       

     and, k 2 =648:
         [A,B,C,B,A,C,C,A,B,A,C,B,B,C,A,C,A,B,C,A,B,A,C,B,A,B,C,B,A,C,B, C,A,C,A,B,B,C,A,C,A,B,A,B,C,B,A,C,C,A,B,A,C,B,A,B,C,B,A,C,B,C, A,C,A,B,C,A,B,A,C,B,C,A,B,A,C,B,B,C,A,C,A,B,A,B,C,B,A,C,B,C,A, C,A,B,A,B,C,B,A,C,C,A,B,A,C,B,B,C,A,C,A,B,A,B,C,B,A,C,C,A,B,A, C,B,A,B,C,B,A,C,B,C,A,C,A,B,C,A,B,A,C,B,A,B,C,B,A,C,C,A,B,A,C, B,B,C,A,C,A,B,C,A,B,A,C,B,A,B,C,B,A,C,B,C,A,C,A,B,C,A,B,A,C,B, B,C,A,C,A,B,A,B,C,B,A,C,B,C,A,C,A,B,A,B,C,B,A,C,C,A,B A,C,B,C, A,B,A,C,B,B,C,A,C,A,B,A,B,C,B,A,C,B,C,A,C,A,B,A,B,C,B,A,C,C,A, B,A,C,B,A,B,C,B,A,C,C,A,B,A,C,B,B,C,A,C,A,B,C,A,B,A,C,B,A,B,C, B,A,C,B,C,A,C,A,B,B,C,A,C,A,B,A,B,C,B,A,C,C,A,B,A,C,B,A,B,C,B, A,C,B,C,A,C,A,B,C,A,B,A,C,B,A,B,C,B,A,C,C,A,B,A,C,B,B,C,A,C,A, B,C,A,B,A,C,B,A,B,C,B,A,C,B,C,A,C,A,B,C,A,B,A,C,B,B,C,A,C,A,B, A,B,C,B,A,C,B,C,A,C,A,B,A,B,C,B,A,C,C,A,B,A,C,B,B,C,A,C,A,B,A, B,C,B,A,C,C,A,B,A,C,B,A,B,C,B,A,C,B,C,A,C,A,B,C,A,B,A,C,B,B,C, A,C,A,B,A,B,C,B,A,C,C,A,B,A,C,B,A,B,C,B,A,C,B,C,A,C,A,B,C,A,B, A,C,B,C,A,B,A,C,B,B,C,A,C,A,B,A,B,C,B,A,C,B,C,A,C,A,B,A,B,C,B, A,C,C,A,B,A,C,B,A,B,C,B,A,C,C,A,B,A,C,B,B,C,A,C,A,B,C,A,B,A,C, B,A,B,C,B,A,C,B,C,A,C,A,B,C,A,B,A,C,B,B,C,A,C,A,B,A,B,C,B,A,C, B,C,A,C,A,B,A,B,C,B,A,C,C,A,B,A,C,B,A,B,C,B,A,C,C,A,B,A,C,B,B, C,A,C,A,B,C,A,B,A,C,B,A,B,C,B,A,C,B,C,A,C,A,B,B,C,A,C,A,B,A,B, C,B,A,C,C,A,B,A,C,B,A,B,C,B,A,C,B,C,A,C,A,B,C,A,B,A,C,B]       

     These sequences are generated using permutations of previously permutated sequences. The following is an embodying step-by-step description: 
     1) Beginning with different types of layers A, B, C (e.g., layer  310 , layer  320 , layer  330 ), define an initial set of sequences A′, B′ and C′ (e.g., A′=A, B′=B, and C′=C): A′=[A], B′=[B], C′=[C]; 
     2) Generate a non-repeating sequence of “ABC&#39;s” based on previous values of “A′B′C′s”, obtained from Step 1, where the base permutation sequence (A′B′C′) does not change: [A′,B′,C′]; [B′,A′,C′]; [C′,A′,B′]; [A′,C′,B′]; [B′,C′,A′]; [C′,A′,B′]; 
     3) Define new values for A′, B′ and C′, based on the previous step, by subdividing the previous sequence into three consecutive regions: A′=[A,B,C,B,A,C], B′=[C,A,B,A,C,B], C′=[B,C,A,C,A,B] (see k=18 above); 
     4) Generate a non-repeating sequence of “ABC&#39;s” based on values of “A′B′C′s” obtained from previous step, where the base permutation sequence “A′B′C′s” does not change: [A′,B′,C′]; [B′,A′,C′]; [C′,A′,B′]; [A′,C′,B′]; [B′,C′,A′]; [C′,A′,B′] (see k 1 =108 above); 
     5) Define A′, B′ and C′ with new values, based on previous step, by subdividing the previous sequence in three consecutive regions: 
     
       
         
           
             
               A 
               &#39; 
             
             = 
             
               [ 
               
                 A 
                 , 
                 B 
                 , 
                 C 
                 , 
                 B 
                 , 
                 A 
                 , 
                 C 
                 , 
                 C 
                 , 
                 A 
                 , 
                 B 
                 , 
                 A 
                 , 
                 C 
                 , 
                 B 
                 , 
                 B 
                 , 
                 C 
                 , 
                 A 
                 , 
                 C 
                 , 
                 A 
                 , 
                 B 
                 , 
                 C 
                 , 
                 A 
                 , 
                 B 
                 , 
                 A 
                 , 
                 C 
                 , 
                 B 
                 , 
                 A 
                 , 
                 B 
                 , 
                 C 
                 , 
                 B 
                 , 
                 A 
                 , 
                 C 
                 , 
                 B 
                 , 
                 C 
                 , 
                 A 
                 , 
                 C 
                 , 
                 A 
                 , 
                 B 
               
               ] 
             
           
         
       
       
         
           
             
               B 
               &#39; 
             
             = 
             
               [ 
               
                 B 
                 , 
                 C 
                 , 
                 A 
                 , 
                 C 
                 , 
                 A 
                 , 
                 B 
                 , 
                 A 
                 , 
                 B 
                 , 
                 C 
                 , 
                 B 
                 , 
                 A 
                 , 
                 C 
                 , 
                 C 
                 , 
                 A 
                 , 
                 B 
                 , 
                 A 
                 , 
                 C 
                 , 
                 B 
                 , 
                 A 
                 , 
                 B 
                 , 
                 C 
                 , 
                 B 
                 , 
                 A 
                 , 
                 C 
                 , 
                 B 
                 , 
                 C 
                 , 
                 A 
                 , 
                 C 
                 , 
                 A 
                 , 
                 B 
                 , 
                 C 
                 , 
                 A 
                 , 
                 B 
                 , 
                 A 
                 , 
                 C 
                 , 
                 B 
               
               ] 
             
           
         
       
       
         
           
             
               C 
               ′ 
             
             = 
             
               [ 
               
                 C 
                 , 
                 A 
                 , 
                 B 
                 , 
                 A 
                 , 
                 C 
                 , 
                 B 
                 , 
                 B 
                 , 
                 C 
                 , 
                 A 
                 , 
                 C 
                 , 
                 A 
                 , 
                 B 
                 , 
                 A 
                 , 
                 B 
                 , 
                 C 
                 , 
                 B 
                 , 
                 A 
                 , 
                 C 
                 , 
                 B 
                 , 
                 C 
                 , 
                 A 
                 , 
                 C 
                 , 
                 A 
                 , 
                 B 
                 , 
                 A 
                 , 
                 B 
                 , 
                 C 
                 , 
                 B 
                 , 
                 A 
                 , 
                 C 
                 , 
                 C 
                 , 
                 A 
                 , 
                 B 
                 , 
                 A 
                 , 
                 C 
                 , 
                 B 
               
               ] 
             
           
         
       
     
     6) Generate a non-repeating sequence of ABC based on values of A′B′C′ obtained from the previous step, where the base permutation sequence A′B′C′ does not change: [A′,B′,C′]; [B′,A′,C′]; [C′,A′,B′]; [A′,C′,B′]; [B′,C′,A′]; [C′,A′,B′] (see k 2 =648 above) 
     7) Repeat above steps until a sequence is generated to satisfy the design specifications for the collimator based on layer thickness d, and the overall collimator thickness t, (i.e., k&gt;t/d). 
     Knowing the pre-generated permutation sequences (steps 1-7), a 3D print sequence for the STL file can be assembled based on a ratio of the overall collimator thickness to the layer thickness (t/d), and the number of members of each permutation (k i ):
         If m=(t/d)≤k 0 , grab a quantity of m sequence elements from k 0 . For instance, if m=12, the sequence of layers can be the first twelve elements of sequence k 0 —[A,B,C,B,A,C,C,A,B,A,C,B].       

     If k 1 ≥m=(t/d)&gt;k 0 , grab a quantity of m sequence elements from k 1 . For instance, if m=30, the sequence of layers consists of the first 30 elements of sequence k 1 —[A,B,C,B,A,C,C,A,B,A,C,B,B,C,A,C,A,B,C,A,B,A,C,B,A,B,C,B,A,C]. 
     If k 2 ≥m=(t/d)&gt;k 1 , grab a quantity of m sequence elements from k 2 . For instance, if m=640, the sequence of layers consists of the first 640 elements of sequence k 2 . 
       FIG. 4  is a flowchart for process  400  to create a STL file for manufacturing a printed collimator in accordance with embodiments. The STL file includes instructions to control a 3D printer to produce groupings of layered printhead paths in accordance with embodiments. 
     The design specification parameters for a medical-modality collimator are received, step  410 . The parameters can be obtained from a CAD file, database record(s), or other memory and/or file. Parameters can include the collimator channel pattern (e.g., square, triangular, hexagonal, etc.), the septum wall width, overall collimator thickness. 
     Determine the number of deposit layer permutation sequence, step  420 . The number of layers is related to the number of walls to form the channel (e.g., triangular channel has  3  permutation sequences. Calculate the number of permutation layer elements ( 1 Q) to be deposited for each layer, step  430 . The number of permutation layers is related to the deposit layer thickness and the overall collimator design specification thickness. For each permutation layer, step  440 , generate a quantity of sequences formed from a base permutation sequence. The quantity of sequences is dependent on the layer thickness. 
     Once the sequences for each permutation layer is generated, these permutation layers can be assembled, step  450 , to form a 3D printer file, e.g., a STL format file and/or object. The assembled 3D print file can be provided, step  460 , to a 3D printer. By following the permutation sequences and layers specified in the 3D print file, a 3D printer can manufacture, step  470 , a medical collimator based on the assembled sets of permutation layers. 
       FIG. 5  depicts 3D printer system  500  for producing a medical-modality collimator in accordance with embodiments. System  500  includes 3D printer  510  in communication across an electronic network (not shown) with control processor  520 . Control processor  520  can access executable instructions  532  in data store  530 , which causes the control processor to control components of system  500 . Dedicated hardware, software modules, and/or firmware can implement embodying services disclosed herein. 
     Layered-sequence algorithm  534  can be executed by the control processor to perform the steps outlined above to create 3D print file  538 , which specifies to 3D printer  510  a sequencing of additive layers having permutations within each layer to create the medical modality collimator. The specifications for the medical-modality collimator can be stored in collimator design specification  536 , or provide to the control processor across the electronic communication network. Pre-generated permutation sequences  539  may also be stored and accessed by the processor for generating sets of sequences. 
     In accordance with some embodiments, a computer program application stored in non-volatile memory or computer-readable medium (e.g., register memory, processor cache, RAM, ROM, hard drive, flash memory, CD ROM, magnetic media, etc.) may include code or executable instructions that when executed may instruct and/or cause a controller or processor to perform methods disclosed herein, such as a method to produce a stereolithography file to instruct a 3D printer to manufacture a 3D printed collimator, as described above. 
     The computer-readable medium may be a non-transitory computer-readable media including all forms and types of memory and all computer-readable media except for a transitory, propagating signal. In one implementation, the non-volatile memory or computer-readable medium may be external memory. 
     Although specific hardware and methods have been described herein, note that any number of other configurations may be provided in accordance with embodiments of the invention. Thus, while there have been shown, described, and pointed out fundamental novel features of the invention, it will be understood that various omissions, substitutions, and changes in the form and details of the illustrated embodiments, and in their operation, may be made by those skilled in the art without departing from the spirit and scope of the invention. Substitutions of elements from one embodiment to another are also fully intended and contemplated. The invention is defined solely with regard to the claims appended hereto, and equivalents of the recitations therein.