Giter Site home page Giter Site logo

conrad's Introduction

CONRAD

CONRAD is a state-of-the-art software platform with extensive documentation. It is based on platform-independent technologies. Special libraries offer access to hardware acceleration such as CUDA and OpenCL. There is an easy interface for parallel processing. The software package includes different simulation tools that are able to generate 4-D projection and volume data and respective vector motion fields. Well known reconstruction algorithms such as FBP, DBP, and ART are included. All algorithms in the package are referenced to a scientific source.

Please visit https://www5.cs.fau.de/conrad/ for more information.

Support mailing list: [email protected]

conrad's People

Contributors

akmaier avatar alpreuhs avatar bastianbier avatar bergerma avatar btlorch avatar christopherfichtel avatar cjare avatar csyben avatar diveflo avatar frankster85 avatar ichichich22 avatar ix30ivih avatar jennifermaier avatar mapcreater avatar mathiasunberath avatar mephistoo avatar michaeldorner avatar patepriy avatar pelma24 avatar shintoras avatar thehamsta avatar tmgeimer avatar woife91 avatar wuerflts avatar yanyelu avatar yixinghuang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

conrad's Issues

how to config in matlab

When I run the MatlabCONRADtutorial.m, I encountered the following error:

java.lang.NoSuchMethodException: <unbound>=OpenCLBackProjector.setForceSmallVolume(Boolean);
	at java.beans.Statement.invokeInternal(Unknown Source)
	at java.beans.Statement.access$000(Unknown Source)
	at java.beans.Statement$2.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.beans.Statement.invoke(Unknown Source)
	at java.beans.Expression.getValue(Unknown Source)
	at com.sun.beans.decoder.ObjectElementHandler.getValueObject(Unknown Source)
	at com.sun.beans.decoder.NewElementHandler.getValueObject(Unknown Source)
	at com.sun.beans.decoder.ElementHandler.endElement(Unknown Source)
	at com.sun.beans.decoder.DocumentHandler.endElement(Unknown Source)
	at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
	at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
	at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
	at com.sun.beans.decoder.DocumentHandler$1.run(Unknown Source)
	at com.sun.beans.decoder.DocumentHandler$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at com.sun.beans.decoder.DocumentHandler.parse(Unknown Source)
	at java.beans.XMLDecoder$1.run(Unknown Source)
	at java.beans.XMLDecoder$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.beans.XMLDecoder.parsingComplete(Unknown Source)
	at java.beans.XMLDecoder.readObject(Unknown Source)
	at edu.stanford.rsl.conrad.utils.Configuration.loadConfiguration(Configuration.java:299)
错误使用 mat2Grid3D (line 13)
Java exception occurred:
java.lang.OutOfMemoryError: Java heap space


出错 OpenCLForwardProjection (line 11)
    volume = mat2Grid3D(volume);

出错 MatlabCONRADtutorial (line 43)
projections=OpenCLForwardProjection(vol);

Does this means the OpenCL is not set correctly?
I can set OpenCL in java.

How to use CONRAD released version.

Dear CONRAD's developer:

I am a student of Xi'Dian University in China. Firstly, thanks for reading this email.

Recently, I am interested in Cardiac CT Perfusion (CCTP). So I want to simulate cardiac and it's motion. CONRAD is a multifunctional software for medical physics. But I am newer for CT reconstruction and java. when I use CONRAD 1.0.8 released version to reconstruction the Cardiac Model, there is nothing to do after the following operations:

Click Conrad.bat -> CONRAD -> Create Numerical Phantom -> projection phantom.

I was wondering if you could offer me a simple example of tutorial of cardiac CT reconstruction for future study.

Thank you very much for your kind contribution and I am looking forward to your early reply.

Sincerely, yours

Lei Wang

Inconsistent use of coordinates in InterpolationOperators

interpolateLinear uses second coordinate (y) to extract a row from the grid:

public static float interpolateLinear(final Grid2D grid, double x, double y) {
    ...
    int lower = (int) Math.floor(y);
    ...

addInterpolateLinear uses first coordinate (i) to extract a row from the grid:

public static void addInterpolateLinear(final Grid2D grid, double i, double j, float val) {
    int lower = (int) Math.floor(i);
    ...

I did not change it myself because this might break a lot of code, which requires extensive testing.
Also, I don't know what's the preferred convetion in CONRAD.

Unsupported parent methods in MultiChannelGrid3D

MultiChannelGrid3D inherits from Grid3D but instead of using the internal buffer of its parent class, it used a Grid4D member to implement vector valued voxels.

public class MultiChannelGrid3D extends Grid3D {

    String [] channelNames;
    Grid4D multichannelData;

    public MultiChannelGrid3D(int width, int height, int depth, int channels) {
        // This will cause some parent methods to fail ( e.g. getSize() );
        // TODO Override necessary parent methods.
        super(0,0,0);
        multichannelData = new Grid4D(width, height, depth, channels);
        buffer = multichannelData.getSubGrid(0).getBuffer();
        //this(width, height, depth, true);
    }

However, implementing it this way has two major downsides:

  1. The internal buffer of Grid3D is initialized in super(0,0,0). However, being a Grid3D, MultiChannelGrid3D provides parent methods, that do not work on multi channel data, as they access the internal buffer which is never correctly filled nor used. Prior to my changes, getSize() would always return [0,0,0] and not as one would expect the size of multiChannelData. Many more parent function are not working properly atm.
  2. Realizing a vector valued image this way may cause "jumping" within the memory, as the channels represent the most outer dimension (i.e. each channel is represented in a separate Grid3D). While this is suitable for RGB images to separate the channels, it may not be a good choice for realizing grids, that feature vector valued voxels (e.g. deformation fields). Here, having the vector entries as the most inner dimension could be preferable for easier memory access.

MultiChannelGrid2D poses the same problems (being a Grid2D with a Grid3D member).
Possible solutions: Either override all Grid3D methods in MultiChannelGrid3D to properly handle multi-channel data, or implement a generic MultiChannelGridND (possibly inheriting from NumericGrid) class for MultiChannelGrid3D / MultiChannelGrid2D to inherit from.

Error in max method

Current code:
/**
* @param a
* @return maximum value of grid a
*/
public static double max(Grid3D a) {
return a.getGridOperator().min(a);
}

should be:

    return a.getGridOperator().max(a);

How to get simulation data

dear,
First, when I use the "Create Numerical Phantom", ImageJ shows the images. This is phantom or projection data? If it is projection data, how can I get the Original phantom?
Second, if I have an .raw phantom, how can I use CONRAD to get 360° projection data?
Looking forward to your reply and thanks very much.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.