[Scipy-svn] r4074 - trunk/scipy/ndimage
scipy-svn at scipy.org
scipy-svn at scipy.org
Wed Apr 2 21:09:07 EDT 2008
Author: tom.waite
Date: 2008-04-02 20:09:04 -0500 (Wed, 02 Apr 2008)
New Revision: 4074
Modified:
trunk/scipy/ndimage/_segmenter.py
Log:
added binary edge filter
Modified: trunk/scipy/ndimage/_segmenter.py
===================================================================
--- trunk/scipy/ndimage/_segmenter.py 2008-04-03 01:08:45 UTC (rev 4073)
+++ trunk/scipy/ndimage/_segmenter.py 2008-04-03 01:09:04 UTC (rev 4074)
@@ -150,6 +150,64 @@
return horz_DGFilter, vert_DGFilter, img_means
+def binary_edge(label_image, ROI):
+ """
+ binary_edge_image = binary_edge(label_image, ROI)
+
+ takes the ROI dictionary with the blob bounding boxes and generates
+ the binary edge for each blob. The ROI mask is used to isolate
+ the binary edges for later use (e.g. contour tracing).
+
+ Parameters
+ ----------
+
+ label_image : {nd_array}
+ an image with labeled regions from get_blobs() method
+
+ ROI : {dictionary}
+ Region of Interest structure that has blob bounding boxes
+
+ Returns
+ ----------
+
+ binary_edge_image : {nd_array}
+ edge image for each ROI combined into a single image
+
+ """
+
+ [rows, cols] = label_image.shape
+ binary_edge_image = NP.zeros(rows*cols, dtype=NP.uint16).reshape(rows, cols)
+ number_regions = ROI.size
+ indices = range(0, number_regions)
+ for i in indices:
+ left = ROI[i]['Left']-2
+ right = ROI[i]['Right']+2
+ bottom = ROI[i]['Bottom']-2
+ top = ROI[i]['Top']+2
+ Label = ROI[i]['Label']
+ if left < 0:
+ left = 0
+ if bottom < 0:
+ bottom = 0
+ if right > cols-1:
+ right = cols-1
+ if top > rows-1:
+ top = rows-1
+
+ roi_rows = top-bottom
+ roi_cols = right-left
+ label_region = NP.zeros(roi_rows*roi_cols, dtype=NP.uint16).reshape(roi_rows, roi_cols)
+ input = NP.zeros(roi_rows*roi_cols, dtype=NP.uint16).reshape(roi_rows, roi_cols)
+ # load the labeled region
+ label_region[0:roi_rows, 0:roi_cols][label_image[bottom:top, left:right]==Label] = 1
+ S.binary_edge(label_region, input)
+ input[0:roi_rows,0:roi_cols][input[0:roi_rows,0:roi_cols]==1] = Label
+ binary_edge_image[bottom:top,left:right] = binary_edge_image[bottom:top,left:right] + \
+ input[0:roi_rows,0:roi_cols]
+
+ return binary_edge_image
+
+
def mat_filter(label_image, thin_kernel, ROI=None):
"""
mat_image = mat_filter(label_image, thin_kernel, ROI=None)
@@ -241,14 +299,14 @@
return mat_image
-def texture_filter(raw_image, label_image, laws_kernel, ROI=None, dc_thres=1.0,
- mean_feature=1, verbose=0):
+def laws_texture_filter(raw_image, label_image, laws_kernel, ROI=None, dc_thres=1.0,
+ mean_feature=1, verbose=0):
"""
- texture_images = texture_filter(raw_image, label_image, laws_kernel, ROI=None, verbose=1)
+ texture_images = laws_texture_filter(raw_image, label_image, laws_kernel, ROI=None, verbose=1)
.
OR
.
- texture_filter(raw_image, label_image, laws_kernel, ROI=None, verbose=0)
+ laws_texture_filter(raw_image, label_image, laws_kernel, ROI=None, verbose=0)
Parameters
----------
@@ -301,10 +359,10 @@
indices = range(0, number_regions)
filters = range(0, layers)
for i in indices:
- left = ROI[i]['L']
- right = ROI[i]['R']
- bottom = ROI[i]['B']
- top = ROI[i]['T']
+ left = ROI[i]['Left']
+ right = ROI[i]['Right']
+ bottom = ROI[i]['Bottom']
+ top = ROI[i]['Top']
Label = ROI[i]['Label']
rows = top-bottom
cols = right-left
More information about the Scipy-svn
mailing list