Examples and Examples of BSpline registration: Difference between pages

From MIPAV
(Difference between pages)
Jump to navigation Jump to search
m (1 revision imported)
 
MIPAV>Olga Vovk
 
Line 1: Line 1:
==== Applying Face De-Identification, BSE, and Fuzzy C-Means ====
== Contents ==  
[[B-Spline Automatic Registration]] chapter contains several sections:


In this example, we will to show you how to record a script, and then run it in via the Scripting menu. The script includes:
*[[B-Spline Automatic Registration]]


1 Applying the Face De-Identification algorithm; <br />
*[[BSpline registration: Detecting folding]]
2 Applying the Extract Brain Surface (BET) algorithm;<br />
3 And finally, performing brain segmentation using the Fuzzy C-Means &gt; Single Channel algorithm.<br />


Open an image of interest and then, press Start Recording Script button on the Scripts toolbar. The Record New Script dialog box appears indicating that recording a script is started.
*[[Examples of BSpline registration | Examples of BSpline registration - you are here]]


Recording the Face De-Identification algorithm execution:<br />
*[[User Dialogs in MIPAV | B-Spline Automatic Registration Dialog box]]
1 Call Algorithms &gt; Brain Tools &gt; Face De-Identification;<br />
2 The Anonymize Face dialog box opens;<br />
3 Fill out the dialog box as shown in Figure 19. The right column displays the script text corresponding to the dialog box options;<br />
4 Press OK to run the algorithm.


{| border="1" cellpadding="5"
== Examples of B-Spline registration ==
|+ '''Figure 19. The Anonymize Face dialog box options and the corresponding script text. Here, <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"face_orientation int 2"</font></span> is an image specific and corresponds to the Left option chosen in the "Which way is the patient's face pointing?" dialog'''
|-
|
[[Image:Script_AnonymizeFace.png]]
|
<div class="CellBody">FaceAnonymizerBET("input_image_1 ext_image $image1", "face_orientation int 2", "mms_to_delete_from_face int 15", "vertical_deletion_limit_ratio float 0.33", "bet_do_estimate_with_sphere boolean true", "bet_image_influence float 0.01", "bet_stiffness float 0.015")</div>
|}
 
After the algorithm finishes running and the result image appears on the screen, make the result image active and call the next Extract Brain Surface (BET) algorithm.
 
Recording the BET algorithm execution:
1 Call Algorithms &gt; Brain Tools &gt; Extract Brain Surface (BET);<br />
2 The Extract Brain dialog box opens;<br />
3 Fill out the dialog box as shown in Figure 20. The right column displays the part of the script corresponding to the dialog box options;<br />
4 Press OK to start the algorithm.<br />
 
 
{| border="1" cellpadding="5"
|+ '''Figure 20. The Extract Brain dialog box options and the corresponding script text. Here, <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"init_center_point list_float 114.22103,75.82523,94.18212" </font></span>is an image specific'''
|-
|
[[Image:Script_BET_DialogBox12.gif]]
|
<div class="CellBody">ExtractBrain("input_image_1 image $image1", "orientation_type int 0", "do_use_sphere_estimation boolean false", "do_show_just_init_ellipse boolean false", "num_iterations int 100", "depth int 11", "image_ratio float 0.2", "stiffness float 0.15", "do_second_stage_erosion boolean false", "factor_above_median_to_erode float 0.0", "do_extract_paint boolean false", "do_init_with_center_of_mass boolean true", "init_center_point list_float 114.22103,75.82523,94.18212")</div>
|}
 
After the algorithm finishes running and the result image appears on the screen, make the result image active and call the last algorithm - Fuzzy C-Means &gt; Single Channel. 
 
Recording the Fuzzy C-Means &gt; Single Channel algorithm execution:<br />
1 Call Algorithms &gt; Segmentation &gt; Fuzzy C-Means &gt; Single Channel;<br />
2 The Fuzzy C-Means dialog box opens;<br />
3 Fill out the dialog box as shown in Figure 21. The right column displays the part of the script corresponding to the dialog box options;<br />
4 Press OK to start the algorithm.<br />
 
{| border="1" cellpadding="5"
|+ '''Figure 21. The FUzzy C-Means dialog box options and the corresponding script text. Here, <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"centroids list_float 8318.767,20926.652,33534.54"</font></span> is an image specific'''
|-
|
[[Image:Scripting_FuzzyC-Means.png]]
|
<div class="CellBody">FuzzyCMeans("input_image_1 image $image1", "number_of_result_images int 4", "do_process_whole_image boolean true", "number_of_classes int 3", "exponent_q float 2.0", "do_crop_background boolean true", "threshold float 0.01", "end_tolerance float 0.01", "max_iterations int 200", "segmentation_type int 0", "centroids list_float 8318.767,20926.652,33534.54")</div>
|}
 
After the algorithm finishes running and the result image appears on the screen, close all intermediate images, and then save the final image.
 
Now, save the script. You might consider to add comments to the script text. In order to do that,<br />
1 Click the Insert Comment icon located on the Record New Script dialog box toolbar;<br />
2 The Enter Comment window appears;<br />
3 Type in the comment and press OK;<br />
4 The comment text appears in the Record New Script dialog box;<br />
5 Save the script;<br />
6 Close the dialog box.<br />
 
'''To run the script via the Scripts menu'''<br />
1 Call Scripts &gt; Run Script from the main MIPAV menu; <br />
2 Select the script you've just recorded, and press OK;<br />
3 The MIPAV Script Tool dialog box opens;<br />
4 In the dialog box, use the Add Images from File button to select and add images, on which you wish to run the script, to the Images window;<br />
5 Then, use the mouse to drug images from the Images window to the Script Execution Setup window. Refer to Figure 22 and "Adding images to the Script Execution Setup";<br />
6 Press Run Script.<br />
 
{| border="1" cellpadding="5"
|+ '''Figure 22. Adding images to the Images window, first, and then moving the images to the main Script execution Setup window'''
|-
|
[[Image:Script_AddingFilesToGroupMode.png]]
|}
 
 
The script starts running and the intermediate images and progress bars appear on the screen. See Figure 23.
 
{| border="1" cellpadding="5"
|+ '''Figure 23. The script is running in group mode and the intermediate images and progress bars appear on the screen'''
|-
|
[[Image:Script_ExecutionScriptInGroupMode copy.png]]
|}
 
When the algorithm finishes running, the progress bars disappear, and the results replace the original and intermediate images.
 
===== Script =====
 
The script text is shown below. Note that the comment strings included in the script start with "#".
 
<div class="CellBody"><nowiki># First Face De-Identification</nowiki></div> <div class="CellBody">FaceAnonymizerBET("input_image_1 ext_image $image1", "face_orientation int 2", "mms_to_delete_from_face int 15", "vertical_deletion_limit_ratio float 0.33", "bet_do_estimate_with_sphere boolean true", "bet_image_influence float 0.01", "bet_stiffness float 0.015")</div> <div class="CellBody"><nowiki>#Here, "face_orientation int 2" is an image specific.</nowiki></div> <div class="CellBody"><nowiki># Second BET</nowiki></div> <div class="CellBody">ExtractBrain("input_image_1 image $image1", "orientation_type int 0", "do_use_sphere_estimation boolean false", "do_show_just_init_ellipse boolean false", "num_iterations int 100", "depth int 11", "image_ratio float 0.2", "stiffness float 0.15", "do_second_stage_erosion boolean false", "factor_above_median_to_erode float 0.0", "do_extract_paint boolean false", "do_init_with_center_of_mass boolean true", "init_center_point list_float 114.22103,75.82523,94.18212")</div> <div class="CellBody"><nowiki>#Here, "init_center_point list_float 114.22103,75.82523,94.18212" is an image specific.</nowiki></div> <div class="CellBody"><nowiki># Third Fuzzy C-Means</nowiki></div> <div class="CellBody">FuzzyCMeans("input_image_1 image $image1", "number_of_result_images int 4", "do_process_whole_image boolean true", "number_of_classes int 3", "exponent_q float 2.0", "do_crop_background boolean true", "threshold float 0.01", "end_tolerance float 0.01", "max_iterations int 200", "segmentation_type int 0", "centroids list_float 8318.767,20926.652,33534.54")</div> <div class="CellBody"><nowiki>#Here, "centroids list_float 8318.767,20926.652,33534.54" is an image specific.</nowiki></div> <div class="CellBody"><nowiki>#Closing intermediate images</nowiki></div> <div class="CellBody">CloseFrame("input_image_1 image $image4")</div> <div class="CellBody">CloseFrame("input_image_1 image $image3")</div> <div class="CellBody">CloseFrame("input_image_1 image $image2")</div> <div class="CellBody"><nowiki>#Saving results</nowiki></div> <div class="CellBody">SaveImageAs("input_image_1 image $image5", "file_type string .xml")</div>
 
==== Cloning images, adding margins, and applying gaussian blur ====
 
In this example, we will to show you how to record the script that does the following:<br />
1 Clones an active image;<br />
2 Adds margins to the clone;<br />
3 Applies the Gaussian Blur algorithm to the clone, and produces the second clone;<br />
4 Closes the original image and saves the clones.<br />
 
'''To get started,''' <br />
 
open an image of interest and then, press Start Recording Script button. The Record New Script dialog box appears indicating that recording a script is started, see Figure 24.


1 Call the Utilities &gt; Clone (Copy). This clones the active image and the following string appears in the Recording Script dialog:<br /></font></div> <div class="CellBody"> Clone("input_image_1 ext_image $image1")</div>
=== B-spline 3D image registration ===  


Here, <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">ext_</font></span> indicates that this image is not produced within the script, but must be selected by a user.
'''Note:''' that the input and the target image are both images of the same brain, that's why the registration demonstrates a very good overall fitting.
 
Here, the command in the script is <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">Clone</font></span>. This command clones an image which is labeled as <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">$image1</font></span> in the script, and then passes it as <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">input_image_1</font></span> parameter to the <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">Clone</font></span> operator.


<div>
<div style="color: #000000;  font-size: 10pt; font-style: normal; font-weight: normal; margin-bottom: 5pt; margin-left: 0pt; margin-right: 0pt; margin-top: 9pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline">
{| border="1" cellpadding="5"
{| border="1" cellpadding="5"
|+ '''Figure 24. The Record New Script dialog box appears indicating that recording a script is started. The initial script (A) and the script with comments (B)'''
|+ <div> ''' The input source image (A), the input target image (B) and the output registered image (C). Note that images (A) and (B) are both the images of the same brain. That's why it shows a very good overall fitting. Results may vary, if you take different brain images. ''' </div>
|-
|-
|
|
[[Image:Script_RecordScript2.png]]
<div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 1pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline"><font size="2pt"><font color="#000000"><div><center>[[Image:2D_RegistrationOriginalImage.png]]</center></div><br /> </font></font></div>
|
[[Image:Script_ScriptwithComments.png]]
|}
 
2 Now, select the clone image and call Utilities &gt; Add Image Margins. In the Add Image Border dialog box, specify the margins as shown in Figure 25 and press OK.<br />
 
{| border="1" cellpadding="5"
|+ '''Figure 25. The Add Image Border dialog box options'''
|-
|
|
[[Image:Script_AddImageBorder.png]]
<div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 1pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline"><font size="2pt"><font color="#000000"><div><center>[[Image:2D_RegistrationTargetImage.png]]</center></div><br /> </font></font></div>
|
|
<div class="CellBody">In the dialog box:</div> <div class="CellBody">20 points margins are added to the top, bottom, left and right sides of the image</div> <div class="CellBody">The Replace Image option is checked indicating that the modified image will appear in the same frame</div>
<div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 1pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline"><font size="2pt"><font color="#000000"><div><center>[[Image:2D_RegistrationRegisteredImage.png]]</center></div><br /> </font></font></div>
|}
|}


This adds margins to the image clone1, and the following string appears in the Recording Script dialog:
=== The registration deformation image and its lookup table ===


<div class="CellBody"> AddMargins("input_image_1 image $image2", "do_output_new_image boolean false", "left_side int 20", "right_side int 20", "top_side int 20", "bottom_side int 20", "front int 0", "back int 0", "margin_value double -5213.51513671875", "margin_value_rgb list_double 0.0,0.0,0.0")</div>
The registration was done using the default parameter values, which are explained in Section [[BSplineRegistrationOV_withMath.html#wp1003232|Image types]].
 
Here, the command in the script is <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">AddMargins(parameter</font></span><span style="font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline">''<font color="#000000">1</font>''</span><span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">,...parameter</font></span><span style="font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline">''<font color="#000000">N</font>''</span><span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">)</font></span>. Script parameters are as follows:
 
; <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"input_image_1 image $image2"</font></span> shows that the script applies to the active image clone
; <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"do_output_new_image boolean false"</font></span> indicates that the new image (with margins) appears in the same image frame replacing the old one[<sup>4</sup>]
; <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"left_side int 20", "right_side int 20", "top_side int 20", "bottom_side int 20"</font></span> are the image margins, refer to Figure 25
; <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"front int 0", "back int 0"</font></span> indicates that there are no slices added to the front and back of the image, refer to Figure 25
; <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"margin_value double -5213.51513671875"</font></span> - the margin fill value for grayscale images
; <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"margin_value_rgb list_double 0.0,0.0,0.0"</font></span> - the margin fill value for RGB images
 
<div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 18pt; margin-right: 0pt; margin-top: 6pt; text-align: left; text-decoration: none; text-indent: -18pt; text-transform: none; vertical-align: baseline"><font color="#000000">  3 Select the clone image with margins and call Algorithms &gt; Filters (spatial) &gt; Gaussian Blur. In the Gaussian Blur dialog box that appears, specify the parameters as shown in Figure 28 and press OK.<br /></font></div><div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 0pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline"><font color="#000000">


</div><div>
<div style="color: #000000;  font-size: 10pt; font-style: normal; font-weight: normal; margin-bottom: 5pt; margin-left: 0pt; margin-right: 0pt; margin-top: 9pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline">
{| border="1" cellpadding="5"
{| border="1" cellpadding="5"
|+ <div style="font-style: normal; margin-bottom: 3pt; margin-left: 0pt; margin-right: 0pt; margin-top: 9pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline">'''<font color="#000000"> Figure 26. The Gaussian Blur dialog box<br /></font>'''</div>
|+ <div>'''The deformation image and its lookup table. The dark areas on the deformation image are related to the areas on images (A) and (B) which did not perform a deformation during the registration or the deformation was relatively small. The light areas are related to the areas on images (A) and (B) which perform a bigger deformation.''' </div>
|-
|-
|
|
[[Image:Script_GaussianBlurParameters.png]]
<div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 1pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline"><font size="2pt"><font color="#000000"><div><center>[[Image:BSplineFunctionLUT.png‎]]</center></div><br /> </font></font></div>
|
|
<div class="CellBody"> </div> <div class="CellBody">For the first time, use the default parameters for Scale of Gaussian, Options, and Color Channel Selection</div> <div class="CellBody">Check the Destination &gt; New Image option</div> <div class="CellBody">Check the Process &gt; Whole Image option</div> <div class="CellBody">Press OK</div>
<div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 1pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline"><font size="2pt"><font color="#000000"><div><center>[[Image:BSplineDeformationImage.png]]</center></div><br /> </font></font></div>
|}
|}
</div>


== Next ==


This applies the Gaussian Blur algorithm to the image clone, which now has margins added, and the following string appears in the Recording Script dialog:
*[[B-Spline Automatic Registration]]
 
<div class="CellBody">GaussianBlur("input_image_1 image $image2", "do_output_new_image boolean true", "do_process_whole_image boolean true", "do_process_in_2.5D boolean false", "do_separable_convolution boolean true", "gauss_std_dev list_float 1.0,1.0,1.0", "gauss_do_z_resolution_correction boolean true", "do_process_r_g_b_channel list_boolean false,false,false")</div>
 
Here, the command in the script is <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">GaussianBlur(parameter</font></span><span style="font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline">''<font color="#000000">1</font>''</span><span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">,...parameter</font></span><span style="font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline">''<font color="#000000">N</font>''</span><span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">)</font></span>. The parameters are as follows:
 
; <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"input_image_1 image $image2"</font></span> shows that the script applies to the image clone
; <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"do_output_new_image boolean true"</font></span> indicates that the new image appears in a image frame
; <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"do_process_whole_image boolean true"</font></span> indicates that the algorithm is applied to the whole image (not only to VOI regions)
; <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"do_separable_convolution boolean true"</font></span> corresponds to checking the Use Separable Convolution Kernels option in the dialog box. For more information, refer to Volume 2 Algorithms, Section "Applying the Gaussian Blur algorithm". < br />
 
See Figure 27.<br />
 
{| border="1" cellpadding="5"
|+ '''Figure 27. The original image (A), the first clone after applying margins (B), and the second clone (C) after applying Gaussian Blur'''
|-
|
[[Image:ScriptingImage146.gif]]
|
[[Image:ScriptingClone147.gif]]
|
[[Image:ScriptingClone2.png]]
|-
|
<div class="CellBody">A</div>
|
<div class="CellBody">B</div>
|
<div class="CellBody">C</div>
|}
5 Now, you can close the original image. And the following string appears in the script: <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">CloseFrame("input_image_1 image $image1")</font></span> indicating that the image frame has been closed. <br /><div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 18pt; margin-right: 0pt; margin-top: 6pt; text-align: left; text-decoration: none; text-indent: -18pt; text-transform: none; vertical-align: baseline"><font color="#000000">  6 You might save last two images. In order to do that, select the image frame, and then call File &gt; Save Image As from the main MIPAV menu. The image will be saved in specified format in the chosen location. The following strings appears in the script: <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">SaveImageAs("input_image_1 image $image2", "file_type string .mnc")</font></span> indicating that the image has been saved as a MINC file.[<sup>5</sup>]<br /></font></div><div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 18pt; margin-right: 0pt; margin-top: 6pt; text-align: left; text-decoration: none; text-indent: -18pt; text-transform: none; vertical-align: baseline"><font color="#000000">  7 To save the script, click File &gt; Save. The program saves the script in the scripts home directory.<br /></font></div><div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 18pt; margin-right: 0pt; margin-top: 6pt; text-align: left; text-decoration: none; text-indent: -18pt; text-transform: none; vertical-align: baseline"><font color="#000000">  8 You might add the comments in the script. In order to do that, press the Insert Comment button, and enter the comment in the dialog box that appears. Add as many comments as needed. Then, save the script. <br /></font></div><div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 18pt; margin-right: 0pt; margin-top: 6pt; text-align: left; text-decoration: none; text-indent: -18pt; text-transform: none; vertical-align: baseline"><font color="#000000">  9 Click File &gt; Exit to close the Record New Script dialog box. The dialog box closes. You should now be able to select and run the script from the Current Script box. <br />
 
==== Applying gaussian blur and gradient magnitude ====
 
In this example, we want to show you the script that does the following:<br />
1 Clones an image;<br />
2 Apples Gaussian Blur to the clone;<br />
3 Saves the clone;<br />
4 Then, applies Gradient Magnitude to the saved clone;<br />
5 Saves the result.<br />
 
'''To get started,''' <br />
open an image of interest and then, press the Start Recording Script button. The Record New Script dialog box appears indicating that recording a script is started. Refer to Figure 24.
 
<div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 18pt; margin-right: 0pt; margin-top: 6pt; text-align: left; text-decoration: none; text-indent: -18pt; text-transform: none; vertical-align: baseline"><font color="#000000">  1 Call the Utilities &gt; Clone (Copy). This clones the active image and the following string appears in the Recording Script dialog box:<br /></font></div> <div class="CellBody"> Clone("input_image_1 ext_image $image1")</div><div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 18pt; margin-right: 0pt; margin-top: 6pt; text-align: left; text-decoration: none; text-indent: -18pt; text-transform: none; vertical-align: baseline"><font color="#000000">  2 Apply the Gaussian Blur algorithm to the clone. The following string appears in the Recording Script dialog box:<br /></font></div> <div class="CellBody">GaussianBlur("input_image_1 image $image2", "do_output_new_image boolean true", "do_process_whole_image boolean true", "do_process_in_2.5D boolean false", "do_separable_convolution boolean true", "gauss_std_dev list_float 1.1,1.1,1.1", "gauss_do_z_resolution_correction boolean true", "do_process_r_g_b_channel list_boolean false,false,false")</div>
 
See also Figure 28 (Gaussian Blur).
 
<div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 18pt; margin-right: 0pt; margin-top: 6pt; text-align: left; text-decoration: none; text-indent: -18pt; text-transform: none; vertical-align: baseline"><font color="#000000">  3 Now, save the image which appears after applying Gaussian Blur. Use either File &gt; Save Image or File &gt; Save Image As option. The following string appears in the Recording Script dialog box:<br /></font></div> <div class="CellBody">SaveImageAs("input_image_1 image $image3", "file_type string .mnc")</div><div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 18pt; margin-right: 0pt; margin-top: 6pt; text-align: left; text-decoration: none; text-indent: -18pt; text-transform: none; vertical-align: baseline"><font color="#000000">  4 Apply the Gradent Magnitude algorithm to the same image. The following string appears in the Recording Script dialog box:<br /></font></div> <div class="CellBody">GradientMagnitude("input_image_1 image $image3", "do_output_new_image boolean true", "do_process_whole_image boolean true", "do_process_in_2.5D boolean false", "do_separable_convolution boolean true", "gauss_std_dev list_float 1.0,1.0,1.0", "gauss_do_z_resolution_correction boolean true", "do_process_r_g_b_channel list_boolean false,false,false")</div>
 
See also Figure 28 (Gradient Magnitude).
 
<div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 18pt; margin-right: 0pt; margin-top: 6pt; text-align: left; text-decoration: none; text-indent: -18pt; text-transform: none; vertical-align: baseline"><font color="#000000">  5 Save the image using the Save Image As option. The following string appears in the Recording Script dialog box:<br /></font></div> <div class="CellBody">SaveImageAs("input_image_1 image $image4", "file_type string .mnc")</div><div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 18pt; margin-right: 0pt; margin-top: 6pt; text-align: left; text-decoration: none; text-indent: -18pt; text-transform: none; vertical-align: baseline"><font color="#000000">  6 Save the script, and then close the Recording Script dialog box. You should now be able to select and run the script from the Current Script box. If the script doesn't appear under Current Script, click the Refresh Script Listing icon and try again.<br /></font></div><div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 0pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline"><font color="#000000">
 
{| border="1" cellpadding="5"
|+ '''Figure 28. The Gaussian Blur and Gradient Magnitude parameters which were used to record the script'''
|-
|
[[Image:Script_GaussianBlurParameters2.png]]
|
[[Image:Script_GradientMagnitudeParameters.png]]
|}
 
 
Figure 28 shows the options selected for the Gaussian Blur and Gradient Magnitude algorithms. You might consider to compare the parametes chosen in the dialog boxes with the corresponding text of the script as it shown in step 2 and step 4.
 
<div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 7pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline"><font color="#000000">  <span style="font-style: normal; text-decoration: none; text-transform: none; vertical-align: baseline">'''<font color="#000000">Tip:</font>'''</span> If the script doesn't appear under Current Script, click the Refresh Script Listing icon and try again.<br /></font></div>
 
==== Extracting a surface from a VOI ====
 
In this example, we want to show you how to record the script which includes:
1 Delineating a VOI on the opened image <br />
2 Extracting a surface from the VOI<br />
 
Please, remember that to apply VOIs to images in scripts, you need to create and save the VOIs in <span style="font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline">''<font color="#000000">advance</font>''</span> of creating a script, and then, open and apply the VOIs while you are recording the script. In this example, we will use the VOI which helps extract the cerebellum from the brain image. See Figure 29.
 
{| border="1" cellpadding="5"
|+ '''Figure 29. The Cerebellum VOI is delineated on the image'''
|-
|
[[Image:Script_BrainCerebellumVOI.png]]
|
<div class="CellBody">To delineate the VOI on the image, use the Draw Polygon/Polyline VOI tool from the MIPAV toolbar. After you've created the VOI, save it through the VOI &gt;Save VOI command. </div>
|}
 
<div style="font-style: normal; margin-bottom: 6pt; margin-left: 0pt; margin-right: 0pt; margin-top: 14pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline">'''<font color="#000000"> To record the script<br /></font>'''</div>
 
Open an image of interest and then, press Start Recording Script button. The Record New Script dialog box appears indicating that recording a script is started.
 
<div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 18pt; margin-right: 0pt; margin-top: 6pt; text-align: left; text-decoration: none; text-indent: -18pt; text-transform: none; vertical-align: baseline"><font color="#000000">  1 Call the VOI &gt; Open VOI menu, and then select the VOI file. The following string appears in the Record New Script dialog box:<br /></font></div> <div class="CellBody"> OpenVOI("input_image_1 ext_image $image1")</div>
 
Here, the command in the script is <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">OpenVOI(parameters)</font></span><nowiki>; in other words, apply a VOI to </nowiki><span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">$image1</font></span>, which is listed in the parameters list with a label <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">input_image_1.</font></span>
 
2 Now, select the VOI and then call Algorithms &gt; Extract Surface (marching cubes). <br />
3 In the Extract Surface dialog box that appears, specify the algorithm parameters as shown in Figure 30, then press OK.<br />
4 The following string appears in the Record New Script dialog box:<br />
<div class="CellBody">ExtractSurfaceCubes("input_image_1 image $image1", "extraction_type string VOI", "do_decimate boolean true", "file_name string brain.sur", "do_blur_before_extraction boolean false", "blur_std_dev float 0.5")</div>
 
Here, the command in the script is <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">ExtractSurfaceCubes(parameter</font></span><span style="font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline">''<font color="#000000">1</font>''</span><span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">,..parameter</font></span><span style="font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline">''<font color="#000000">N</font>''</span><span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">)</font></span>. The parameters are as follows:
 
; <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"input_image_1 image $image1"</font></span> indicates that the script is applying to the image
; <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"extraction_type string VOI"</font></span> corresponds to selecting the VOI region option in the dialog box and indicates that the algorithm is applied only to the image region bounded by the VOI
; <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"do_decimate boolean true"</font></span> corresponds to checking the Decimate Surface parameter in the dialog box
; <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"file_name string brain.sur"</font></span> indicates that the extracted surface will be saved as the <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">brain.sur</font></span> file
; <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"do_blur_before_extraction boolean false"</font></span> - shows that there is no blurring will be applying to the image before extraction. This corresponds to <span style="font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline">''<font color="#000000">not checking</font>''</span> the Blur by (Std.Dev.) checkbox
; <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">"blur_std_dev float 0.5"</font></span> - the default value for the Blur by (Std.Dev.) parameter. It is only used if the above parameter is set to <span style="font-style: normal; font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline"><font color="#000000">true</font></span>
 
<div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 0pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline"><font color="#000000">
 
{| border="1" cellpadding="5"
|+ '''Figure 30. The Extract Surface dialog box'''
|-
|
[[Image:Script_ExtractSurfaceParam.png]]
|
<div class="CellBody"> </div> <div class="CellBody">Check the VOI Region checkbox;</div> <div class="CellBody">Check the Decimate Surface parameter;</div> <div class="CellBody">Do not check the Blur by checkbox;</div> <div class="CellBody">Enter the surface file name;</div> <div class="CellBody">Press OK.</div>
|}
 
<br /></font></div><div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 18pt; margin-right: 0pt; margin-top: 6pt; text-align: left; text-decoration: none; text-indent: -18pt; text-transform: none; vertical-align: baseline"><font color="#000000">  5 Now, click File &gt; Save. The program saves the script in the scripts home directory.<br /></font></div><div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 18pt; margin-right: 0pt; margin-top: 6pt; text-align: left; text-decoration: none; text-indent: -18pt; text-transform: none; vertical-align: baseline"><font color="#000000">  6 Click File &gt; Exit to close the Record New Script dialog box. The dialog box closes. You should now be able to select and run the script from the Current Script box. If the script name doesn't appear in Current Script, press Refresh to reload the scripts home directory.<br /></font></div><div style="font-style: normal; font-weight: normal; margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 7pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline"><font color="#000000"> <span style="font-style: normal; text-decoration: none; text-transform: none; vertical-align: baseline">'''<font color="#000000">Tip:</font>'''</span> The file extension for the script file is ".sct." Make sure that you type this extension at the end of the file name. <br /></font></div>


==== Examples of working scripts ====
*[[BSpline registration: Detecting folding]]


Below are the summary of the scripts that were used as examples in Section "Examples:". Comments using in the scripts are shown as <span style="font-weight: normal; text-decoration: none; text-transform: none; vertical-align: baseline">''<font color="#000000"><nowiki>#comment</nowiki></font>''</span>.
*[[Examples of BSpline registration | Examples of BSpline registration - you are here]]


<div style="font-weight: normal; margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 12pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline">''<font color="#000000"> Script: Cloning an image, then adding margins and applying Gaussian Blur to the clone<br /></font>''</div><div style="font-style: normal; font-weight: normal; margin-bottom: 6pt; margin-left: 0pt; margin-right: 0pt; margin-top: 0pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline"><font color="#000000"> <br /></font></div> <div class="CellBody"><nowiki>#Clone an image</nowiki></div> <div class="CellBody">Clone("input_image_1 ext_image $image1")</div> <div class="CellBody"><nowiki>#Add margins to the clone - $image1</nowiki></div> <div class="CellBody">AddMargins("input_image_1 image $image2", "do_output_new_image boolean false", "left_side int 20", "right_side int 20", "top_side int 20", "bottom_side int 20", "front int 0", "back int 0", "margin_value double -5213.51513671875", "margin_value_rgb list_double 0.0,0.0,0.0")</div> <div class="CellBody"><nowiki>#Apply GB and create a new clone - $image2</nowiki></div> <div class="CellBody">GaussianBlur("input_image_1 image $image2", "do_output_new_image boolean true", "do_process_whole_image boolean true", "do_process_in_2.5D boolean false", "do_separable_convolution boolean true", "gauss_std_dev list_float 1.0,1.0,1.0", "gauss_do_z_resolution_correction boolean true", "do_process_r_g_b_channel list_boolean false,false,false")</div> <div class="CellBody"><nowiki>#Close the original image</nowiki></div> <div class="CellBody">CloseFrame("input_image_1 image $image1")</div> <div class="CellBody"><nowiki>#Save the clone 2 - $image2</nowiki></div> <div class="CellBody">SaveImageAs("input_image_1 image $image2", "file_type string .mnc")</div><div style="font-weight: normal; margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 12pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline">''<font color="#000000"> Script: Flipping an image twice<br /></font>''</div><div style="font-style: normal; font-weight: normal; margin-bottom: 6pt; margin-left: 0pt; margin-right: 0pt; margin-top: 0pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline"><font color="#000000"> <br /></font></div> <div class="CellBody"><nowiki>#Flip the image vertically</nowiki></div> <div class="CellBody">Flip("input_image_1 ext_image $image1", "flip_axis string X")</div> <div class="CellBody"><nowiki>#Flip the result image horizontally</nowiki></div> <div class="CellBody">Flip("input_image_1 image $image1", "flip_axis string Y")</div> <div class="CellBody"><nowiki>#Save the result </nowiki></div> <div class="CellBody">SaveImageAs("input_image_1 ext_image $image1", "file_type string .mnc")</div><div style="font-weight: normal; margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 12pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none; vertical-align: baseline">''<font color="#000000"> Script: Applying Gaussian Blur and then Gradient Magnitude<br /></font>''</div>
*[[User Dialogs in MIPAV | B-Spline Automatic Registration Dialog box]]


<div class="CellBody"><nowiki>#Applying Gaussian Blur and sending output to as a new image frame - $image2</nowiki></div> <div class="CellBody">GaussianBlur("input_image_1 ext_image $image1", "do_output_new_image boolean true", "do_process_whole_image boolean true", "do_process_in_2.5D boolean false", "do_separable_convolution boolean true", "gauss_std_dev list_float 1.0,1.0,1.0", "gauss_do_z_resolution_correction boolean true", "do_process_r_g_b_channel list_boolean false,false,false")</div> <div class="CellBody"><nowiki>#Applying Gradient Magnitude to $image2 and sending output to as a new image frame -$image3</nowiki></div> <div class="CellBody">GradientMagnitude("input_image_1 image $image2", "do_output_new_image boolean true", "do_process_whole_image boolean true", "do_process_in_2.5D boolean false", "do_separable_convolution boolean true", "gauss_std_dev list_float 1.0,1.0,1.0", "gauss_do_z_resolution_correction boolean true", "do_process_r_g_b_channel list_boolean false,false,false")</div>


[[Category:Help]]


[[Combining scripts and other programs]]
[[Category:Help:Algorithms]]

Revision as of 11:56, 7 August 2012

Contents

B-Spline Automatic Registration chapter contains several sections:

Examples of B-Spline registration

B-spline 3D image registration

Note: that the input and the target image are both images of the same brain, that's why the registration demonstrates a very good overall fitting.

The input source image (A), the input target image (B) and the output registered image (C). Note that images (A) and (B) are both the images of the same brain. That's why it shows a very good overall fitting. Results may vary, if you take different brain images.
2D RegistrationOriginalImage.png

2D RegistrationTargetImage.png

2D RegistrationRegisteredImage.png

The registration deformation image and its lookup table

The registration was done using the default parameter values, which are explained in Section Image types.

The deformation image and its lookup table. The dark areas on the deformation image are related to the areas on images (A) and (B) which did not perform a deformation during the registration or the deformation was relatively small. The light areas are related to the areas on images (A) and (B) which perform a bigger deformation.
BSplineFunctionLUT.png

BSplineDeformationImage.png

Next