X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=libctsim%2Fphantom.cpp;h=ec5d0dcf6e0525cc38af1f1365091dbb81889e4b;hp=e28074f5917f5555c0c017f9a62a4e6ef3c02d82;hb=a95e41ac40cd2f3a4401d921618604cf33f2a904;hpb=fff4beb84fcc84e65e4feb457e2ed25c7774cff4 diff --git a/libctsim/phantom.cpp b/libctsim/phantom.cpp index e28074f..ec5d0dc 100644 --- a/libctsim/phantom.cpp +++ b/libctsim/phantom.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: phantom.cpp,v 1.2 2000/06/19 19:54:23 kevin Exp $ +** $Id: phantom.cpp,v 1.3 2000/06/19 20:08:09 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -58,13 +58,13 @@ Phantom::create (const int phmid) switch (phmid) { case O_PHM_HERMAN: - std_herman(); + addStdHerman(); break; case O_PHM_ROWLAND: - std_rowland(); + addStdRowland(); break; case O_PHM_BROWLAND: - std_rowland_bordered (); + addStdRowlandBordered (); break; case O_PHM_UNITPULSE: m_composition = P_UNIT_PULSE; @@ -238,21 +238,18 @@ Phantom::show (void) const * draw () */ -#ifdef HAVE_SGP void Phantom::draw (void) const { +#ifdef HAVE_SGP for (PElemIterator i = m_listPElem.begin(); i != m_listPElem.end(); i++) sgp2_polyline_abs ((*i)->xOutline(), (*i)->yOutline(), (*i)->nOutlinePoints()); -} #endif +} /* NAME - * std_rowland Make head phantom of S.W. Rowland - * - * SYNOPSIS - * std_rowland () + * addStdRowland Make head phantom of S.W. Rowland * * REFERENCES * S. W. Rowland, "Computer Implementation of Image Reconstruction @@ -261,7 +258,7 @@ Phantom::draw (void) const */ void -Phantom::std_rowland (void) +Phantom::addStdRowland (void) { addPElem("ellipse", 0.0000, 0.0000, 0.6900, 0.9200, 0.0, 1.00); addPElem("ellipse", 0.0000, -0.0184, 0.6624, 0.8740, 0.0, -0.98); @@ -277,17 +274,14 @@ Phantom::std_rowland (void) } void -Phantom::std_rowland_bordered (void) +Phantom::addStdRowlandBordered (void) { - std_rowland (); + addStdRowland (); addPElem ("ellipse", 0.000, 0.0000, 0.7500, 1.000, 0.0, 0.00); } /* NAME - * std_herman Standard head phantom of G. T. Herman - * - * SYNOPSIS - * std_herman () + * addStdHerman Standard head phantom of G. T. Herman * * REFERENCES * G. T. Herman, "Image Reconstructions from Projections: The Fundementals @@ -295,7 +289,7 @@ Phantom::std_rowland_bordered (void) */ void -Phantom::std_herman (void) +Phantom::addStdHerman (void) { addPElem("ellipse", 0.000, 1.50, 0.375, 0.3000, 90.00, -0.003); addPElem("ellipse", 0.675, -0.75, 0.225, 0.1500, 140.00, 0.010); @@ -326,18 +320,24 @@ Phantom::std_herman (void) * (total samples per pixel = nsample * nsample) */ +void +Phantom::convertToImagefile (ImageFile& im, const int in_nsample, const int trace) const +{ + convertToImagefile (im, in_nsample, trace, 0, im.nx()); +} + void -Phantom::convertToImagefile (ImageFile& im, const int colStart, const int colCount, const int in_nsample, const int trace) const +Phantom::convertToImagefile (ImageFile& im, const int in_nsample, const int trace, const int colStart, const int colCount) const { int nx = im.nx(); int ny = im.ny(); if (nx < 2 || ny < 2) return; + int nsample = in_nsample; if (nsample < 1) - nsample = 1; + nsample = 1; - int nsample = in_nsample; double dx = m_xmax - m_xmin; double dy = m_ymax - m_ymin; double xcent = m_xmin + dx / 2; @@ -369,7 +369,7 @@ Phantom::convertToImagefile (ImageFile& im, const int colStart, const int colCou ImageFileArray v = im.getArray(); double x_start = xmin + (colStart * xinc); - for (PElemConstIterator pelem = m_listPElem.begin; pelem != m_listPElem.end; pelem++) { + for (PElemConstIterator pelem = m_listPElem.begin(); pelem != m_listPElem.end(); pelem++) { double x, y, xi, yi; int ix, iy, kx, ky; for (ix = 0, x = x_start; ix < colCount; ix++, x += xinc) {