Skip to content

Commit 8776685

Browse files
author
mantid-builder
committed
Update documentation
1 parent 70272de commit 8776685

File tree

8 files changed

+137
-53
lines changed

8 files changed

+137
-53
lines changed

_images/cor_bad.png

184 KB
Loading

_images/cor_good.png

185 KB
Loading

_sources/user_guide/explanations/reconstructions/center_of_rotation.rst.txt

Lines changed: 65 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Center of Rotation and Tilt
44
===========================
55

6-
Center of Rotation (COR) and Tilt usage
6+
Center of Rotation (COR) and Tilt Usage
77
---------------------------------------
88

99
The correct center of rotation is required for a good reconstruction.
@@ -12,32 +12,75 @@ However, sometimes the values they find are not accurate, so there is also a man
1212
to adjust the center of rotation.
1313

1414
The algorithms used for reconstruction require a COR for each sinogram,
15-
i.e. a list of CORs equal to the number of sinograms (also equal to the number of rows in a projection).
16-
This is abstracted away and the two final values that are used are: center of rotation and tilt.
15+
i.e., a list of CORs equal to the number of sinograms (also equal to the number of rows in a projection).
16+
This is abstracted away, and the two final values that are used are: center of rotation and tilt.
1717

18-
In that case the COR refers to the value at sinogram 0 (also referred to as slice 0).
19-
Using the tilt we then use a linear regression to calculate the COR for each sinogram in the data.
18+
In that case, the COR refers to the value at sinogram 0 (also referred to as slice 0).
19+
Using the tilt, we then use a linear regression to calculate the COR for each sinogram in the data.
2020

21+
What is the Center of Rotation (COR)?
22+
-------------------------------------
23+
The **Center of Rotation (COR)** is a reference point that defines the axis around which the object rotates
24+
during image acquisition in tomography. It is the midpoint of the rotational axis when looking at
25+
a slice of the data (a sinogram).
2126

22-
Entering known COR and tilt
27+
.. image:: ../../../_static/cor_bad.png
28+
:alt: Misaligned Center of Rotation (COR) causing artifacts
29+
:width: 47%
30+
:align: left
31+
32+
.. image:: ../../../_static/cor_good.png
33+
:alt: Correctly aligned Center of Rotation (COR) for artifact-free reconstruction
34+
:width: 47%
35+
:align: right
36+
37+
38+
The left image shows a misaligned COR causing artifacts and distortions,
39+
while the right image depicts a properly aligned COR ensuring accurate and artifact-free reconstruction.
40+
41+
Why COR Matters:
42+
- If the COR is incorrect, the projections will not align correctly during reconstruction,
43+
leading to artifacts and blurred images.
44+
- COR is specific for each sinogram (i.e., each slice of the object being scanned).
45+
46+
How COR is Used:
47+
- For accurate reconstruction, the COR for the first sinogram (sinogram 0, also called slice 0) is determined.
48+
- Using the **Tilt** parameter, CORs for subsequent sinograms are calculated through a linear adjustment.
49+
50+
What is Tilt?
51+
-------------
52+
53+
**Tilt** describes the gradual change in the Center of Rotation (COR) along the axis perpendicular
54+
to the rotation plane (typically corresponding to the rows in a projection).Without considering tilt,
55+
the reconstructed slices may not align correctly, causing distortions or streaking artifacts.
56+
57+
Key Points:
58+
- Tilt is measured in degrees.
59+
- A tilt value of zero means the rotation axis is vertical, and the COR is the same for every sinogram.
60+
- Using the COR of the first sinogram and the tilt value, the COR for each subsequent sinogram is interpolated or extrapolated.
61+
62+
GUI:
63+
- The GUI also displays **Slope**, which represents how far the COR moves from one slice to the next.
64+
65+
Entering Known COR and Tilt
2366
---------------------------
2467

25-
If the COR and tilt are already known you can enter them in the "Enter known COR/Tilt manually here" section
26-
and press "Use COR/Tilt values from above". In this case you can go immediately to reconstruction.
68+
If the COR and tilt are already known, you can enter them in the "Enter known COR/Tilt manually here" section
69+
and press "Use COR/Tilt values from above." In this case, you can go immediately to reconstruction.
2770

2871
Correlate 0 and 180
2972
-------------------
3073

3174
This automatic COR algorithm finds the shift between the projections at 0 and 180 degrees.
32-
The projection exactly at 180 degrees is necessary for the best result.
33-
We provide the option of loading a 180 degree projection in the load dialog.
75+
The projection exactly at 180 degrees is necessary for the best result. We provide the option
76+
of loading a 180-degree projection in the load dialog.
3477

35-
The algorithm will not run unless a 180 degree projection has been loaded.
78+
The algorithm will not run unless a 180-degree projection has been loaded.
3679

3780
This is not a problem and could be rectified either by adding a manual COR or using
3881
the minimisation algorithm.
3982

40-
Minimise error
83+
Minimise Error
4184
--------------
4285

4386
This automatic COR algorithm uses the square sum of the projection as a noise heuristic.
@@ -47,31 +90,30 @@ It does so for a number of sinograms (slices) and adds the result in the COR tab
4790

4891
This algorithm may not work well on noisy data or with very bright outliers, as the
4992
minimisation can get lost in a local minima and not find the best reconstructed slice.
50-
As the same heuristic is also used in the manual "Refine" window, to highlight
93+
As the same heuristic is also used in the manual "Refine" window to highlight
5194
one of the choices as the best, the behaviour can also be seen there.
5295

53-
In this case the best action is to use the correlate as a starting point,
54-
and go immediately to manual COR correction.
96+
In this case, the best action is to use the correlate as a starting point and
97+
go immediately to manual COR correction.
5598

56-
Manual COR correction
99+
Manual COR Correction
57100
---------------------
58101

59-
Due to the limitations of the algorithms above there is also a manual way of calculating the COR -
102+
Due to the limitations of the algorithms above, there is also a manual way of calculating the COR
60103
using the "COR Table - refine manually" part of the GUI.
61104

62-
In that table you can click Add to add a new COR for the currently selected slice. Once added
63-
you can click the row and then "Refine" which will take you
64-
to a window that reconstructs the sinogram with multiple CORs simultaneously, and allows you
65-
to visually pick the best one.
105+
In that table, you can click Add to add a new COR for the currently selected slice. Once added,
106+
you can click the row and then "Refine," which will take you to a window that reconstructs
107+
the sinogram with multiple CORs simultaneously, and allows you to visually pick the best one.
66108

67109
After you have two or more CORs in the table, a fit will be performed in order to find the COR and tilt
68110
using the data from the table rows.
69111

70112
It is sometimes good enough to add a COR at the top of your data and the bottom.
71113
Once the best CORs for those are found, the resulting tilt should be accurate.
72-
To increase the accuracy further add more COR rows.
114+
To increase the accuracy further, add more COR rows.
73115

74-
To reconstruction
116+
To Reconstruction
75117
-----------------
76118

77119
Once you have a satisfactory value of COR or tilt, you are ready to proceed to the "Reconstruct" tab.

_static/cor_bad.png

184 KB
Loading

_static/cor_good.png

185 KB
Loading

release_notes/next.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -594,8 +594,8 @@ <h2>Fixes<a class="headerlink" href="#fixes" title="Link to this heading">#</a><
594594
<section id="developer-changes">
595595
<h2>Developer Changes<a class="headerlink" href="#developer-changes" title="Link to this heading">#</a></h2>
596596
<ul class="simple">
597-
<li><p>#2267: Python has been upgraded to use version 3.12</p></li>
598597
<li><p>#2267: Show attribute names in leak tracker</p></li>
598+
<li><p>#2267: Python has been upgraded to use version 3.12</p></li>
599599
<li><p>#2268: various python packages have been updated including astropy, scipy, nu,py, algotom, cudatoolkit, cupy, and jenkspy</p></li>
600600
<li><p>#2269: Pyinstaller and h5py packages have been upgraded to 6.9.* and 3.7.* respectively</p></li>
601601
<li><p>#2277: System tests for spectum viewer</p></li>

searchindex.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

user_guide/explanations/reconstructions/center_of_rotation.html

Lines changed: 70 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -573,59 +573,99 @@
573573
<section id="center-of-rotation-and-tilt">
574574
<span id="center-of-rotation"></span><h1>Center of Rotation and Tilt<a class="headerlink" href="#center-of-rotation-and-tilt" title="Link to this heading">#</a></h1>
575575
<section id="center-of-rotation-cor-and-tilt-usage">
576-
<h2>Center of Rotation (COR) and Tilt usage<a class="headerlink" href="#center-of-rotation-cor-and-tilt-usage" title="Link to this heading">#</a></h2>
576+
<h2>Center of Rotation (COR) and Tilt Usage<a class="headerlink" href="#center-of-rotation-cor-and-tilt-usage" title="Link to this heading">#</a></h2>
577577
<p>The correct center of rotation is required for a good reconstruction.
578578
We provide two automatic ways of getting a center of rotation.
579579
However, sometimes the values they find are not accurate, so there is also a manual way
580580
to adjust the center of rotation.</p>
581581
<p>The algorithms used for reconstruction require a COR for each sinogram,
582-
i.e. a list of CORs equal to the number of sinograms (also equal to the number of rows in a projection).
583-
This is abstracted away and the two final values that are used are: center of rotation and tilt.</p>
584-
<p>In that case the COR refers to the value at sinogram 0 (also referred to as slice 0).
585-
Using the tilt we then use a linear regression to calculate the COR for each sinogram in the data.</p>
582+
i.e., a list of CORs equal to the number of sinograms (also equal to the number of rows in a projection).
583+
This is abstracted away, and the two final values that are used are: center of rotation and tilt.</p>
584+
<p>In that case, the COR refers to the value at sinogram 0 (also referred to as slice 0).
585+
Using the tilt, we then use a linear regression to calculate the COR for each sinogram in the data.</p>
586+
</section>
587+
<section id="what-is-the-center-of-rotation-cor">
588+
<h2>What is the Center of Rotation (COR)?<a class="headerlink" href="#what-is-the-center-of-rotation-cor" title="Link to this heading">#</a></h2>
589+
<p>The <strong>Center of Rotation (COR)</strong> is a reference point that defines the axis around which the object rotates
590+
during image acquisition in tomography. It is the midpoint of the rotational axis when looking at
591+
a slice of the data (a sinogram).</p>
592+
<a class="reference internal image-reference" href="../../../_images/cor_bad.png"><img alt="Misaligned Center of Rotation (COR) causing artifacts" class="align-left" src="../../../_images/cor_bad.png" style="width: 47%;" /></a>
593+
<a class="reference internal image-reference" href="../../../_images/cor_good.png"><img alt="Correctly aligned Center of Rotation (COR) for artifact-free reconstruction" class="align-right" src="../../../_images/cor_good.png" style="width: 47%;" /></a>
594+
<p>The left image shows a misaligned COR causing artifacts and distortions,
595+
while the right image depicts a properly aligned COR ensuring accurate and artifact-free reconstruction.</p>
596+
<dl class="simple">
597+
<dt>Why COR Matters:</dt><dd><ul class="simple">
598+
<li><p>If the COR is incorrect, the projections will not align correctly during reconstruction,
599+
leading to artifacts and blurred images.</p></li>
600+
<li><p>COR is specific for each sinogram (i.e., each slice of the object being scanned).</p></li>
601+
</ul>
602+
</dd>
603+
<dt>How COR is Used:</dt><dd><ul class="simple">
604+
<li><p>For accurate reconstruction, the COR for the first sinogram (sinogram 0, also called slice 0) is determined.</p></li>
605+
<li><p>Using the <strong>Tilt</strong> parameter, CORs for subsequent sinograms are calculated through a linear adjustment.</p></li>
606+
</ul>
607+
</dd>
608+
</dl>
609+
</section>
610+
<section id="what-is-tilt">
611+
<h2>What is Tilt?<a class="headerlink" href="#what-is-tilt" title="Link to this heading">#</a></h2>
612+
<p><strong>Tilt</strong> describes the gradual change in the Center of Rotation (COR) along the axis perpendicular
613+
to the rotation plane (typically corresponding to the rows in a projection).Without considering tilt,
614+
the reconstructed slices may not align correctly, causing distortions or streaking artifacts.</p>
615+
<dl class="simple">
616+
<dt>Key Points:</dt><dd><ul class="simple">
617+
<li><p>Tilt is measured in degrees.</p></li>
618+
<li><p>A tilt value of zero means the rotation axis is vertical, and the COR is the same for every sinogram.</p></li>
619+
<li><p>Using the COR of the first sinogram and the tilt value, the COR for each subsequent sinogram is interpolated or extrapolated.</p></li>
620+
</ul>
621+
</dd>
622+
<dt>GUI:</dt><dd><ul class="simple">
623+
<li><p>The GUI also displays <strong>Slope</strong>, which represents how far the COR moves from one slice to the next.</p></li>
624+
</ul>
625+
</dd>
626+
</dl>
586627
</section>
587628
<section id="entering-known-cor-and-tilt">
588-
<h2>Entering known COR and tilt<a class="headerlink" href="#entering-known-cor-and-tilt" title="Link to this heading">#</a></h2>
589-
<p>If the COR and tilt are already known you can enter them in the “Enter known COR/Tilt manually here” section
590-
and press “Use COR/Tilt values from above”. In this case you can go immediately to reconstruction.</p>
629+
<h2>Entering Known COR and Tilt<a class="headerlink" href="#entering-known-cor-and-tilt" title="Link to this heading">#</a></h2>
630+
<p>If the COR and tilt are already known, you can enter them in the “Enter known COR/Tilt manually here” section
631+
and press “Use COR/Tilt values from above.” In this case, you can go immediately to reconstruction.</p>
591632
</section>
592633
<section id="correlate-0-and-180">
593634
<h2>Correlate 0 and 180<a class="headerlink" href="#correlate-0-and-180" title="Link to this heading">#</a></h2>
594635
<p>This automatic COR algorithm finds the shift between the projections at 0 and 180 degrees.
595-
The projection exactly at 180 degrees is necessary for the best result.
596-
We provide the option of loading a 180 degree projection in the load dialog.</p>
597-
<p>The algorithm will not run unless a 180 degree projection has been loaded.</p>
636+
The projection exactly at 180 degrees is necessary for the best result. We provide the option
637+
of loading a 180-degree projection in the load dialog.</p>
638+
<p>The algorithm will not run unless a 180-degree projection has been loaded.</p>
598639
<p>This is not a problem and could be rectified either by adding a manual COR or using
599640
the minimisation algorithm.</p>
600641
</section>
601642
<section id="minimise-error">
602-
<h2>Minimise error<a class="headerlink" href="#minimise-error" title="Link to this heading">#</a></h2>
643+
<h2>Minimise Error<a class="headerlink" href="#minimise-error" title="Link to this heading">#</a></h2>
603644
<p>This automatic COR algorithm uses the square sum of the projection as a noise heuristic.
604645
It minimises the noise in order to find the best COR for that sinogram.</p>
605646
<p>It does so for a number of sinograms (slices) and adds the result in the COR table.</p>
606647
<p>This algorithm may not work well on noisy data or with very bright outliers, as the
607648
minimisation can get lost in a local minima and not find the best reconstructed slice.
608-
As the same heuristic is also used in the manual “Refine” window, to highlight
649+
As the same heuristic is also used in the manual “Refine” window to highlight
609650
one of the choices as the best, the behaviour can also be seen there.</p>
610-
<p>In this case the best action is to use the correlate as a starting point,
611-
and go immediately to manual COR correction.</p>
651+
<p>In this case, the best action is to use the correlate as a starting point and
652+
go immediately to manual COR correction.</p>
612653
</section>
613654
<section id="manual-cor-correction">
614-
<h2>Manual COR correction<a class="headerlink" href="#manual-cor-correction" title="Link to this heading">#</a></h2>
615-
<p>Due to the limitations of the algorithms above there is also a manual way of calculating the COR -
655+
<h2>Manual COR Correction<a class="headerlink" href="#manual-cor-correction" title="Link to this heading">#</a></h2>
656+
<p>Due to the limitations of the algorithms above, there is also a manual way of calculating the COR
616657
using the “COR Table - refine manually” part of the GUI.</p>
617-
<p>In that table you can click Add to add a new COR for the currently selected slice. Once added
618-
you can click the row and then “Refine” which will take you
619-
to a window that reconstructs the sinogram with multiple CORs simultaneously, and allows you
620-
to visually pick the best one.</p>
658+
<p>In that table, you can click Add to add a new COR for the currently selected slice. Once added,
659+
you can click the row and then “Refine,” which will take you to a window that reconstructs
660+
the sinogram with multiple CORs simultaneously, and allows you to visually pick the best one.</p>
621661
<p>After you have two or more CORs in the table, a fit will be performed in order to find the COR and tilt
622662
using the data from the table rows.</p>
623663
<p>It is sometimes good enough to add a COR at the top of your data and the bottom.
624664
Once the best CORs for those are found, the resulting tilt should be accurate.
625-
To increase the accuracy further add more COR rows.</p>
665+
To increase the accuracy further, add more COR rows.</p>
626666
</section>
627667
<section id="to-reconstruction">
628-
<h2>To reconstruction<a class="headerlink" href="#to-reconstruction" title="Link to this heading">#</a></h2>
668+
<h2>To Reconstruction<a class="headerlink" href="#to-reconstruction" title="Link to this heading">#</a></h2>
629669
<p>Once you have a satisfactory value of COR or tilt, you are ready to proceed to the “Reconstruct” tab.</p>
630670
<p>Information about the filters and algorithms can be found in the other pages of the <a class="reference internal" href="index.html#reconstruction-help-page"><span class="std std-ref">Reconstruction Help page</span></a>.</p>
631671
</section>
@@ -677,12 +717,14 @@ <h2>To reconstruction<a class="headerlink" href="#to-reconstruction" title="Link
677717
</div>
678718
<nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2">
679719
<ul class="visible nav section-nav flex-column">
680-
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#center-of-rotation-cor-and-tilt-usage">Center of Rotation (COR) and Tilt usage</a></li>
681-
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#entering-known-cor-and-tilt">Entering known COR and tilt</a></li>
720+
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#center-of-rotation-cor-and-tilt-usage">Center of Rotation (COR) and Tilt Usage</a></li>
721+
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#what-is-the-center-of-rotation-cor">What is the Center of Rotation (COR)?</a></li>
722+
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#what-is-tilt">What is Tilt?</a></li>
723+
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#entering-known-cor-and-tilt">Entering Known COR and Tilt</a></li>
682724
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#correlate-0-and-180">Correlate 0 and 180</a></li>
683-
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#minimise-error">Minimise error</a></li>
684-
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#manual-cor-correction">Manual COR correction</a></li>
685-
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#to-reconstruction">To reconstruction</a></li>
725+
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#minimise-error">Minimise Error</a></li>
726+
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#manual-cor-correction">Manual COR Correction</a></li>
727+
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#to-reconstruction">To Reconstruction</a></li>
686728
</ul>
687729
</nav></div>
688730

0 commit comments

Comments
 (0)