[Scipy-svn] r4129 - trunk/scipy/ndimage/src/segment

scipy-svn at scipy.org scipy-svn at scipy.org
Thu Apr 10 22:17:03 EDT 2008


Author: tom.waite
Date: 2008-04-10 21:16:58 -0500 (Thu, 10 Apr 2008)
New Revision: 4129

Modified:
   trunk/scipy/ndimage/src/segment/Segmenter_IMPL.c
Log:
Updates to region growing code

Modified: trunk/scipy/ndimage/src/segment/Segmenter_IMPL.c
===================================================================
--- trunk/scipy/ndimage/src/segment/Segmenter_IMPL.c	2008-04-10 22:59:42 UTC (rev 4128)
+++ trunk/scipy/ndimage/src/segment/Segmenter_IMPL.c	2008-04-11 02:16:58 UTC (rev 4129)
@@ -153,7 +153,6 @@
 	int offsetM1;
 	int offsetP1;
 	int values3x3[8];
-	int value;
 	int status;
 
 	offset = cols;
@@ -248,14 +247,12 @@
 	int  rOffsetP, rOffsetN;
 	int  Classes[4096];
 	int  dwImageSize, ptr;
-	int  HighZ, HighY, HighX, LowZ, LowX, LowY;
 	bool NewLabel;
 	bool Change;
 	bool connected;
 	int  T[27];
 	int  *ccompImage;
 	int  layerSize;
-	int  TargetArea;
 	int  count;
 	int  status;
 
@@ -828,7 +825,7 @@
 }
 
 
-void NI_ThinMorphoFilter(int regRows, int regColumns, int spadSize, int masks, unsigned short *J_mask, 
+int NI_ThinMorphoFilter(int regRows, int regColumns, int spadSize, int masks, unsigned short *J_mask, 
 	                 unsigned short *K_mask, unsigned char *Input, unsigned char *CInput, 
 	                 unsigned char *ErosionStage, unsigned char *DialationStage, 
 		         unsigned char *HMT, unsigned char *Copy){
@@ -1287,7 +1284,6 @@
 	int i, j;
 	int lawsLayer;
 	int column, row;
-	int offset;
 	int maskOffset[7];
 	int dataOffset[7];
 	float myImage[49];
@@ -1393,9 +1389,8 @@
 int NI_RoiCoOccurence(int samples, int rows, int cols, unsigned short *labelImage,
 	              unsigned short *rawImage, int *cocMatrix, int distance, int orientation){ 
 
-	int i, j, k;
+	int i, j;
 	int offset;
-	int sum;
 	int d_row;
 	int d_col;
 	int status;
@@ -1470,7 +1465,7 @@
 }
 
 int NI_GrowRegion2D(int rows, int cols, double *rawimage, unsigned short *label,
-                    objStruct expanded_ROI[], objStruct newgrow_ROI[], double cutoff, int Label,
+                    objStruct *expanded_ROI, objStruct *newgrow_ROI, double cutoff, int Label,
 		    int N_connectivity){
 
 	int i, j, p, m;
@@ -1478,6 +1473,10 @@
 	int offsetM, offsetP;
 	int status;
 	int T[8], count;
+	int LowX;
+	int LowY;
+	int HighX;
+	int HighY;
 	double value;
 	bool change;
 
@@ -1504,7 +1503,9 @@
 			    T[7] = label[offsetP+j+1];
 			    count = 0;
 	        	    for(p = 0; p < 8; ++p){
-			        count += T[p];
+			        if(T[p] == Label){
+			            count += T[p];
+			        }
 			    }	
 			    if(count > N_connectivity){
 	            		label[offset+j] = Label;
@@ -1518,6 +1519,11 @@
 	}
 
 	/* get new bounding box */
+	newgrow_ROI->Left   = expanded_ROI->Left + LowX;
+	newgrow_ROI->Right  = newgrow_ROI->Left + (HighX-LowX);
+	newgrow_ROI->Bottom = expanded_ROI->Bottom + LowY;
+	newgrow_ROI->Top    = expanded_ROI->Bottom + (HighY-LowY);
+	newgrow_ROI->Mass   = count;
 
 	status = 1;
 
@@ -1526,7 +1532,7 @@
 }
 
 int NI_GrowRegion3D(int layers, int rows, int cols, double *rawimage, unsigned short *label,
-                    objStruct expanded_ROI[], objStruct newgrow_ROI[], double cutoff, int Label,
+                    objStruct *expanded_ROI, objStruct *newgrow_ROI, double cutoff, int Label,
 		    int N_connectivity){
 
 	int i, j, k, m, p;
@@ -1599,7 +1605,9 @@
 
 			        count = 0;
 	        	        for(p = 0; p < 26; ++p){
-			            count += T[p];
+			            if(T[p] == Label){
+			                count += T[p];
+				    }
 			        }	
 			        if(count > N_connectivity){
 		        	    label[lOffset+rOffset+k]= Label;
@@ -1613,7 +1621,6 @@
 	    if(!change) break;
 	}
 
-
         LowX       = 32767;
 	LowY       = 32767;
 	LowZ       = 32767;
@@ -1646,8 +1653,14 @@
 	    }
 	}
 
+	newgrow_ROI->Left   = expanded_ROI->Left + LowX;
+	newgrow_ROI->Right  = newgrow_ROI->Left + (HighX-LowX);
+	newgrow_ROI->Bottom = expanded_ROI->Bottom + LowY;
+	newgrow_ROI->Top    = newgrow_ROI->Bottom + (HighY-LowY);
+	newgrow_ROI->Front  = expanded_ROI->Front + LowZ;
+	newgrow_ROI->Back   = expanded_ROI->Front + (HighZ-LowZ);
+	newgrow_ROI->Mass   = count;
 
-
 	status = 1;
 
 	return(status);




More information about the Scipy-svn mailing list