[Scipy-svn] r3501 - trunk/scipy/ndimage/tests

scipy-svn at scipy.org scipy-svn at scipy.org
Wed Nov 7 13:31:53 EST 2007


Author: oliphant
Date: 2007-11-07 12:31:53 -0600 (Wed, 07 Nov 2007)
New Revision: 3501

Added:
   trunk/scipy/ndimage/tests/test_segment.py
Removed:
   trunk/scipy/ndimage/tests/test_segmenter.py
Log:
Rename test for ndimage.segment

Copied: trunk/scipy/ndimage/tests/test_segment.py (from rev 3500, trunk/scipy/ndimage/tests/test_segmenter.py)

Deleted: trunk/scipy/ndimage/tests/test_segmenter.py
===================================================================
--- trunk/scipy/ndimage/tests/test_segmenter.py	2007-11-07 18:31:18 UTC (rev 3500)
+++ trunk/scipy/ndimage/tests/test_segmenter.py	2007-11-07 18:31:53 UTC (rev 3501)
@@ -1,142 +0,0 @@
-
-import numpy as N
-from numpy.testing import *
-import scipy.ndimage.segment as S
-
-inputname = 'slice112.raw'
-
-import os
-filename = os.path.join(os.path.split(__file__)[0],inputname)
-
-
-def shen_castan(image, IIRFilter=0.8, scLow=0.3, window=7, lowThreshold=220+2048, highThreshold=600+2048, dust=16):
-	labeledEdges, numberObjects = S.shen_castan_edges(scLow, IIRFilter, window, lowThreshold, highThreshold, image)
-	# allocated struct array for edge object measures. for now just the rect bounding box
-	ROIList = N.zeros(numberObjects, dtype=S.objstruct)
-	# return the bounding box for each connected edge
-	S.get_object_stats(labeledEdges, ROIList)
-	return labeledEdges, ROIList[ROIList['Area']>dust]
-
-def sobel(image, sLow=0.3, tMode=1, lowThreshold=220+2048, highThreshold=600+2048, BPHigh=10.0, apearture=21, dust=16):
-	# get sobel edge points. return edges that are labeled (1..numberObjects)
-	labeledEdges, numberObjects = S.sobel_edges(sLow, tMode, lowThreshold, highThreshold, BPHigh, apearture, image)
-	# allocated struct array for edge object measures. for now just the rect bounding box
-	ROIList = N.zeros(numberObjects, dtype=S.objstruct)
-	# return the bounding box for each connected edge
-	S.get_object_stats(labeledEdges, ROIList)
-	# thin (medial axis transform) of the sobel edges as the sobel produces a 'band edge'
-	S.morpho_thin_filt(labeledEdges, ROIList)
-	return labeledEdges, ROIList[ROIList['Area']>dust]
-
-def canny(image, cSigma=1.0, cLow=0.5, cHigh=0.8, tMode=1, lowThreshold=220+2048, highThreshold=600+2048,
-          BPHigh=10.0, apearture=21, dust=16):
-	# get canny edge points. return edges that are labeled (1..numberObjects)
-	labeledEdges, numberObjects = S.canny_edges(cSigma, cLow, cHigh, tMode, lowThreshold, highThreshold, 
-			                           BPHigh, apearture, image)
-	# allocated struct array for edge object measures. for now just the rect bounding box
-	ROIList = N.zeros(numberObjects, dtype=S.objstruct)
-	# return the bounding box for each connected edge
-	S.get_object_stats(labeledEdges, ROIList)
-	return labeledEdges, ROIList[ROIList['Area']>dust]
-
-def get_shape_mask(labeledEdges, ROIList):
-	# pass in Sobel morph-thinned labeled edge image (LEI) and ROIList
-	# GetShapeMask will augment the ROI list
-	# labeledEdges is the original edge image and overwritten as mask image
-	# maskImage is the mask that is used for blob texture / pixel features
-	S.build_boundary(labeledEdges, ROIList)
-	return 
-
-def get_voxel_measures(rawImage, labeledEdges, ROIList):
-	#
-	# pass raw image, labeled mask and the partially filled ROIList
-	# VoxelMeasures will fill the voxel features in the list
-	#
-	S.voxel_measures(rawImage, labeledEdges, ROIList)
-	return 
-
-def get_texture_measures(rawImage, labeledEdges, ROIList):
-	#
-	# pass raw image, labeled mask and the partially filled ROIList
-	# VoxelMeasures will fill the texture (Law's, co-occurence, Gabor) features in the list
-	#
-	S.texture_measures(rawImage, labeledEdges, ROIList)
-	return 
-
-def segment_regions():
-	# get slice from the CT volume
-	image = get_slice(filename)
-	# need a copy of original image as filtering will occur on the extracted slice
-    	sourceImage = image.copy()
-	# Sobel is the first level segmenter. Sobel magnitude and MAT (medial axis transform)
-	# followed by connected component analysis. What is returned is labeled edges and the object list
-    	labeledMask, ROIList = sobel(image)
-	# From the labeled edges and the object list get the labeled mask for each blob object
-    	get_shape_mask(labeledMask, ROIList)
-	# Use the labeled mask and source image (raw) to get voxel features 
-    	get_voxel_measures(sourceImage, labeledMask, ROIList)
-	# Use the labeled mask and source image (raw) to get texture features 
-	get_texture_measures(sourceImage, labeledMask, ROIList)
-	return sourceImage, labeledMask, ROIList
-
-def grow_regions():
-	# get slice from the CT volume
-	image = get_slice(filename)
-	regionMask, numberRegions = region_grow(image)
-	return regionMask, numberRegions 
-
-
-def region_grow(image, lowThreshold=220+2048, highThreshold=600+2048, open=7, close=7):
-	# morphology filters need to be clipped to 11 max and be odd
-	regionMask, numberRegions = S.region_grow(lowThreshold, highThreshold, close, open, image)
-	return regionMask, numberRegions
-          
-
-def get_slice(imageName='junk.raw', bytes=2, rows=512, columns=512):
-	# get a slice alrady extracted from the CT volume
-	#image = open(imageName, 'rb')
-	#slice = image.read(rows*columns*bytes)
-	#values = struct.unpack('h'*rows*columns, slice)
-	#ImageSlice = N.array(values, dtype=float).reshape(rows, columns)
-
-	ImageSlice = N.fromfile(imageName, dtype=N.uint16).reshape(rows, columns);
-
-	# clip the ends for this test CT image file as the spine runs off the end of the image
-	ImageSlice[505:512, :] = 0
-	return (ImageSlice).astype(float)
-
-def get_slice2(image_name='junk.raw', bytes=2, shape=(512,512)):
-        import mmap
-        file = open(image_name, 'rb')
-        mm = mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ)
-        slice = N.frombuffer(mm, dtype='u%d' % bytes).reshape(shape) 
-        slice = slice.astype(float)
-        slice[505:512,:] = 0
-        return slice
-
-def save_slice(mySlice, filename='junk.raw', bytes=4):
-	# just save the slice to a fixed file
-	slice = mySlice.astype('u%d' % bytes)
-        slice.tofile(filename)
-
-
-class TestSegmenter(NumpyTestCase):
-    def test_1(self):
-	image = get_slice(filename)
-	sourceImage = image.copy()
-	edges, objects = sobel(image)
-	get_shape_mask(edges, objects)
-	get_voxel_measures(sourceImage, edges, objects)
-	get_texture_measures(sourceImage, edges, objects)
-
-    def test_2(self):
-	sourceImage, labeledMask, ROIList = segment_regions()
-
-    def test_3(self):
-	regionMask, numberRegions = grow_regions()
-	regionMask.max()
-	#save_slice(regionMask, 'regionMask.raw')
-
-    
-if __name__ == "__main__":
-    NumpyTest().run()




More information about the Scipy-svn mailing list