odlgroup / odl

Operator Discretization Library https://odlgroup.github.io/odl/
Mozilla Public License 2.0
372 stars 105 forks source link

How to define the transpose of system matrix #1566

Closed Hznnn closed 4 years ago

Hznnn commented 4 years ago

ART Equation x^(k+1) = x^k + lambda * AT(b - A(x))/ATA

For low-dose CT reconstruction, how do I define a full-view fan-beam projection process A and AT without using kaczmarz function.

ozanoktem commented 4 years ago

Honestly, I don't understand your question. In ODL, Kaczmarz iterates (and any other iterative and/or optimisation based scheme) do not require information about how A (and A*) are digitised.

Regarding the projection operator A (and its transpose/adjoint A*), in ODL you typically use a helper function to construct A. This helper function needs a specification of the tomographic acquisition geometry.

Hznnn commented 4 years ago

How do I construct the projection operator A (and its transpose/adjoint A*) by using helper function.

adler-j commented 4 years ago

For constructing the operator, look at the examples here: https://github.com/odlgroup/odl/tree/master/examples/tomo

For finding the adjoint, simply call operator.adjoint on the constructed operator.

Hznnn commented 4 years ago

Are adjoint and transpose equal? In fan beam projection, how to define a geometry with projection number 720 and detector unit number 860?

ozanoktem commented 4 years ago

Are adjoint and transpose equal?

For reconstruction, it is the adjoint you need. In most cases the adjoint coincides with the transpose.

ozanoktem commented 4 years ago

In fan beam projection, how to define a geometry with projection number 720 and detector unit number 860?

I suggest you check the documentation: https://odlgroup.github.io/odl/generated/odl.tomo.geometry.conebeam.FanBeamGeometry.html

adler-j commented 4 years ago

Quick answer is

geometry = odl.tomo.cone_beam_geometry(space, src_radius, det_radius, num_angles=720, det_shape=860)