+0.5.4-b3 - 6/1/2000
+ Added support for 64-bit (IA64) CPU
+ Removed broken B-spline interpolation
+ Added support for cygwin platform under Windows 2000
+
0.5.4-b2 - 5/16/2000
Added compile-time configuration of endian order
--with-html-dir=PATH Set directory of html files
--with-x use the X Window System for interactive graphics
-Platforms Supported
--------------------
+
+PLATFORM SPECIFIC NOTES
+=======================
+
+Platforms Tested
+----------------
Recent development is with GNU/Linux. I have tested compilation on
-FreeBSD v4.0, BSD/OS v3.0, and Solaris v8, and Microsoft Visual C++ v6.
+FreeBSD v4.0, BSD/OS v3.0, and Solaris v8 (gcc 32-bit), and IA64 (gcc)
+, and Microsoft Windows 2000 (Visual C++ 6.0 and cygwin).
Microsoft Windows Installation
------------------------------
Run make.bat from the root directory
+CYGWIN v1.1.0
+-------------
+The file /usr/i686-pc-wygwin/include/cygwin/in.h has a bug. The line
+ struct in_addr6 sin6_addr;
+should be deleted.
+getopt_long appears broken, configure.in checks for cygwin to use
+bundled version of getopt_long.
Basic Installation
==================
There is a sample shell script installed called 'sample-ctrec'.
-HDF FILE FORMAT
-===============
-
-If the HDF library is compiled into CTSim, it will be used for the
-raysum and image files.
-
-Reconstruction Groups
----------------------
-Group Name="Recon"
- SubDataset="ReconParam"
- SubGroup="Proj"
- SubDataset="Raysum"
- SubDataset="Geometry"
- SubGroup="Phantom"
- SubDataset "FImage"
- SubGroup="Reconstr"
- SubDataset "FImage"
-
-Image Dataset
--------------
-Name="FImage"
-DataType: FLOAT
-Attributes:
- "XSize" DOUBLE : X size of pixel in world coordinates
- "YSize" DOUBLE : Y size of pixel in world coordinates
-
-
-Raysum Group
--------------
-Group Name="Proj"
-Proj Dataset
- Name="Raysum"
- DataType: FLOAT
- Dim: 2 (nviews x ndet)
- Attributes:
-Geometry Dataset
- Name="Geometry"
- DataType: FLOAT
- Dim: 1 (nviews x 1)
- Data: For each view, store view_angle
- Attributes:
- "GEOMCODE" INT : Geometry Code
- "DETSTART"
- "DETINC"
- "ROTSTART"
- "ROTINC"
CLOSING
=======
kevin@rosenberg.net
+
+MISCELLANEOUS
+=============
+
Integrate low-level X11 graphics, replace all low-level driver code in
libgraph. All the high-level graphics routines are in place.
-Make data file formats cross-platform compatible
+Make SDF file format cross-platform compatible
Integrate audio drivers into libcio -- used for the interactive CT display.
+PROPOSED MENU STRUCTURE
+=======================
+File
+ New
+ Phantom
+ Open
+ SDF
+
+Process
+ Simulate CT process (active only when phantom outline shown)
+ Rasterize Phantom (active only when phantom outline shown)
+ Reconstruct CT data (active only when raysum data is shown)
+
+Filter
+ (Various single and dual image transformations)
+
+Compare
+ Compare 2 images
+ 2D grayscale subtraction
+ 1D column plots
+ Single Image statistics
+
+PROPOSED HDF FILE FORMAT
+========================
+
+If the HDF library is compiled into CTSim, it will be used for the
+raysum and image files.
+
+Reconstruction Groups
+---------------------
+Group Name="Recon"
+ SubDataset="ReconParam"
+ SubGroup="Proj"
+ SubDataset="Raysum"
+ SubDataset="Geometry"
+ SubGroup="Phantom"
+ SubDataset "FImage"
+ SubGroup="Reconstr"
+ SubDataset "FImage"
+
+Image Dataset
+-------------
+Name="FImage"
+DataType: FLOAT
+Attributes:
+ "XSize" DOUBLE : X size of pixel in world coordinates
+ "YSize" DOUBLE : Y size of pixel in world coordinates
+
+
+Raysum Group
+-------------
+Group Name="Proj"
+Proj Dataset
+ Name="Raysum"
+ DataType: FLOAT
+ Dim: 2 (nviews x ndet)
+ Attributes:
+Geometry Dataset
+ Name="Geometry"
+ DataType: FLOAT
+ Dim: 1 (nviews x 1)
+ Data: For each view, store view_angle
+ Attributes:
+ "GEOMCODE" INT : Geometry Code
+ "DETSTART"
+ "DETINC"
+ "ROTSTART"
+ "ROTINC"
/* Define if you have the vprintf function. */
#undef HAVE_VPRINTF
+/* Define as __inline if that's what the C compiler calls it. */
+#undef inline
+
/* Define to `long' if <sys/types.h> doesn't define. */
#undef off_t
/* Define if your <sys/time.h> declares struct tm. */
#undef TM_IN_SYS_TIME
+/* Define if your processor stores words with the most significant
+ byte first (like Motorola and SPARC, unlike Intel and VAX). */
+#undef WORDS_BIGENDIAN
+
/* Define if the X Window System is missing or not being used. */
#undef X_DISPLAY_MISSING
/* Define for X11 library */
#undef HAVE_X11
+/* The number of bytes in a double. */
+#undef SIZEOF_DOUBLE
+
+/* The number of bytes in a float. */
+#undef SIZEOF_FLOAT
+
+/* The number of bytes in a int. */
+#undef SIZEOF_INT
+
+/* The number of bytes in a long. */
+#undef SIZEOF_LONG
+
+/* The number of bytes in a short. */
+#undef SIZEOF_SHORT
+
/* Define if you have the htonl function. */
#undef HAVE_HTONL
-dnl Process this file with autoconf to produce a configure script.
+IZEOFdnl Process this file with autoconf to produce a configure script.
dnl Must reset CDPATH so that bash's cd does not print to stdout
dnl CDPATH=
AC_INIT(src/ctrec.c)
-AM_INIT_AUTOMAKE(ctsim,0.5.4-b2)
+AM_INIT_AUTOMAKE(ctsim,0.5.4-b3)
AM_CONFIG_HEADER(config.h)
dnl Checks for programs.
AC_PROG_CC
AC_PROG_CXX
+
+dnl AC_MSG_CHECKING([that the compiler works])
+dnl AC_TRY_RUN([ main(int ac, char **av) { return 0; } ], AC_MSG_RESULT(yes), AC_MSG_RESULT(no) AC_MSG_ERROR(Could not compile and run even a trivial ANSI C program - check CC.), AC_MSG_ERROR(Could not compile and run even a trivial ANSI C program - check CC.))
+
dnl Check for C operation
AC_CANONICAL_HOST
-dnl AC_C_BIGENDIAN
-dnl AC_C_INLINE
-dnl AC_CHECK_SIZEOF(int)
-dnl AC_CHECK_SIZEOF(long int)
-dnl AC_CHECK_SIZEOF(float)
-dnl AC_CHECK_SIZEOF(double)
+AC_C_BIGENDIAN
+AC_C_INLINE
+AC_CHECK_SIZEOF(short, 2)
+AC_CHECK_SIZEOF(int, 4)
+AC_CHECK_SIZEOF(long, 4)
+AC_CHECK_SIZEOF(float, 4)
+AC_CHECK_SIZEOF(double, 8)
AC_MSG_CHECKING(endian)
CFLAGS="$CFLAGS -DENDIAN_LOW=1 -DENDIAN_HIGH=0"
AC_MSG_RESULT(low)
;;
-sparc* | mot*)
+sparc* | mot* | ia64*)
endian=high
CFLAGS="$CFLAGS -DENDIAN_LOW=0 -DENDIAN_HIGH=1"
AC_MSG_RESULT(high)
;;
*)
- AC_MSG_ERROR([Unknown host cpu $host_cpu
-Can't set endian])
+ AC_MSG_WARN([Unknown host cpu $host_cpu. Can't set endian])
;;
esac
AC_CHECK_FUNCS(strtod strtol snprintf htonl)
AC_CHECK_FUNC(basename)
AC_CHECK_FUNC(setjmp)
-AC_CHECK_FUNC(getopt_long,
-[
- getopt_long=true
-],
-[
+if ${OSTYPE} == "cygwin" ; then
getopt_long=false
+else
+ AC_CHECK_FUNC(getopt_long, [ getopt_long=true ], [ getopt_long=false ])
+fi
+if test getopt_long == "false" ; then
my_includes="$myincludes -I../getopt"
AC_DEFINE(HAVE_GETOPT_LONG)
ctlibs_base="$ctlibs_base -lgetopt"
LDFLAGS="$LDFLAGS -L../getopt"
AM_CONDITIONAL(INCLUDED_GETOPT_LONG, test 1==1)
-])
+fi
AC_ADD_GCC_CFLAGS([-Wall])
fi
done
AC_MSG_RESULT($lamdir)
+else
+ AC_MSG_RESULT([no])
fi
AC_MSG_CHECKING([for web access])
** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: ir.h,v 1.16 2000/05/24 22:48:17 kevin Exp $
+** $Id: ir.h,v 1.17 2000/06/03 06:29:08 kevin Exp $
** $Log: ir.h,v $
+** Revision 1.17 2000/06/03 06:29:08 kevin
+** *** empty log message ***
+**
** Revision 1.16 2000/05/24 22:48:17 kevin
** First functional version of SDF library for X-window
**
void usage (const char *program);
/* From reconstr.c */
-IMAGE *image_reconst (IMAGE *im, RAYSUM *rs, int filt_type, double filt_param, const InterpolationType interp_type, int interp_param, const BackprojType backproj_type, int const ir_trace);
+IMAGE *image_reconst (IMAGE *im, RAYSUM *rs, const FilterType filt_type, double filt_param, InterpolationType interp_type, int interp_param, const BackprojType backproj_type, int const ir_trace);
/* From bproj.c */
void backproj_init (const RAYSUM *rs, IMAGE *im, const BackprojType bproj_method);
** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: kstddef.h,v 1.10 2000/05/16 04:33:17 kevin Exp $
+** $Id: kstddef.h,v 1.11 2000/06/03 06:29:08 kevin Exp $
** $Log: kstddef.h,v $
+** Revision 1.11 2000/06/03 06:29:08 kevin
+** *** empty log message ***
+**
** Revision 1.10 2000/05/16 04:33:17 kevin
** Updated documentation
**
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
******************************************************************************/
+
/******************************************************************************
*
* FILE IDENTIFICATION
/* netorder.c */
void *strreverse (void *dest, const void *src, size_t n);
-int read_nlong (unsigned long int *n, int fd);
-int write_nlong (unsigned long int const *n, int fd);
+#if SIZEOF_SHORT == 4
+int read_n32bint (unsigned short *n, int fd);
+int write_n32bint (unsigned short const *n, int fd);
+#elif SIZEOF_LONG == 4
+int read_n32bint (unsigned long *n, int fd);
+int write_n32bint (unsigned long const *n, int fd);
+#else
+int read_n32bint (unsigned int *n, int fd);
+int write_n32bint (unsigned int const *n, int fd);
+#endif
int read_nfloat (float *f, int fd);
int write_nfloat (float const *f, int fd);
int read_ndouble (double *d, int fd);
-\input texinfo @c -*-texinfo-*-
+input texinfo @c -*-texinfo-*-
@c %**start of header
@setfilename ctsim.info
@settitle CTSim Manual
@comment node-name, next, previous, up
@menu
-* Computed Tomgraphy Overview:: The first chapter is the
- only chapter in this sample.
+* Computed Tomography Overview:: The first chapter
+* Algorithms:: Algorithms used by this program
* Concept Index:: This index has two entries.
@end menu
-@node Computed Tomgraphy Overview, Concept Index, Top, Top
+@node Computed Tomography Overview, Algorithms, Top, Top
@comment node-name, next, previous, up
-@chapter Computed Tomgraphy Overview
-@cindex Sample index entry
+@chapter Computed Tomography Overview
+@cindex Overview
+
+@section Overview
+Computed Tomography is a process to reconstruction internal images of
+an object by taking projection data through that object.
-This is the contents of the first chapter.
@cindex Another sample index entry
Here is a numbered list.
an Info file; and @TeX{} typesets it for a printed
manual.
-@node Concept Index, , Computed Tomgraphy Overview, Top
+@node Algorithms , Concept Index , Computed Tomography Overview , Top
+
+@section Theory
+This is great.
+
+@node Concept Index, , Algorithms , Top
@comment node-name, next, previous, up
@unnumbered Concept Index
** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: sdf2img.c,v 1.4 2000/05/24 22:50:04 kevin Exp $
+** $Id: sdf2img.c,v 1.5 2000/06/03 06:29:57 kevin Exp $
** $Log: sdf2img.c,v $
+** Revision 1.5 2000/06/03 06:29:57 kevin
+** *** empty log message ***
+**
** Revision 1.4 2000/05/24 22:50:04 kevin
** Added support for new SGP library
**
sdf2d_to_gif (im, out_file, opt_scale, opt_scale, densmin, densmax);
#endif
else if (opt_format == O_FORMAT_DISP) {
- int gid = image_display_scale (im, opt_scale, densmin, densmax);
+#if HAVE_SGP
+ image_display_scale (im, opt_scale, densmin, densmax);
cio_kb_getc();
- g2_close(gid);
+ sgp2_close(sgp2_get_active_win());
+#endif
}
else
{