[Scipy-svn] r3956 - trunk/scipy/ndimage/src/register

scipy-svn at scipy.org scipy-svn at scipy.org
Fri Feb 22 20:41:58 EST 2008


Author: tom.waite
Date: 2008-02-22 19:41:56 -0600 (Fri, 22 Feb 2008)
New Revision: 3956

Modified:
   trunk/scipy/ndimage/src/register/Register_EXT.c
Log:
added integrated histogram based volume thresholding

Modified: trunk/scipy/ndimage/src/register/Register_EXT.c
===================================================================
--- trunk/scipy/ndimage/src/register/Register_EXT.c	2008-02-23 01:41:38 UTC (rev 3955)
+++ trunk/scipy/ndimage/src/register/Register_EXT.c	2008-02-23 01:41:56 UTC (rev 3956)
@@ -250,12 +250,58 @@
 
 }
 
+
+static PyObject *Register_ImageThreshold(PyObject *self, PyObject *args)
+{
+
+    /* set threshold from the volume integrated histogram */
+    int num;
+    int nd;
+    int type;
+    int itype;
+    int histogram_elements;
+    int	tindex;
+    npy_intp *dimsImage;
+    npy_intp *dimsHistogram;
+    unsigned short *image;
+    double *H;
+    double *IH;
+    double threshold;
+    PyObject *imgArray   = NULL;
+    PyObject *histogram  = NULL;
+    PyObject *ihistogram = NULL;
+	
+    if(!PyArg_ParseTuple(args, "OOOd", &imgArray, &histogram, &ihistogram, &threshold))
+	goto exit;
+
+    image = (unsigned short *)PyArray_DATA(imgArray);
+    /* reads dims as 0 = layers, 1 = rows, 2 = cols */
+    nd        = PyArray_NDIM(imgArray);
+    dimsImage = PyArray_DIMS(imgArray);
+    type      = PyArray_TYPE(imgArray);
+    num       = PyArray_SIZE(imgArray);
+
+    H  = (double *)PyArray_DATA(histogram);
+    IH = (double *)PyArray_DATA(ihistogram);
+    histogram_elements = PyArray_SIZE(histogram);
+
+    if(!NI_ImageThreshold((int)dimsImage[0], (int)dimsImage[1], (int)dimsImage[2], 
+		               image, H, IH, histogram_elements, threshold, &tindex))
+	    goto exit;
+
+exit:
+
+    return PyErr_Occurred() ? NULL : (PyObject*)Py_BuildValue("i", tindex); 
+
+}
+
 static PyMethodDef RegisterMethods[] =
 {
     { "register_histogram",       Register_Histogram,      METH_VARARGS, NULL },
     { "register_histogram_lite",  Register_HistogramLite,  METH_VARARGS, NULL },
     { "register_linear_resample", Register_LinearResample, METH_VARARGS, NULL },
     { "register_cubic_resample",  Register_CubicResample,  METH_VARARGS, NULL },
+    { "register_image_threshold", Register_ImageThreshold, METH_VARARGS, NULL },
     {  NULL, NULL, 0, NULL},
 };
 




More information about the Scipy-svn mailing list