mask = numpy.zeros(medical_image.shape, dtype=uint16)
mask[ numpy.logical_and( medical_image = lower, medical_image =
upper)] = 255
Where lower and upper are the threshold bounds. Here I' m marking the
array positions where medical_image is between the threshold bounds
with 255, where isn' t with 0. The question is: Is there a better
way to do that?
This will give you a True/False boolean mask:
mask = numpy.logical_and( medical_image = lower, medical_image =
upper)
And this a 0/255 mask:
mask = 255*numpy.logical_and( medical_image = lower, medical_image =
upper)
You can make the code a bit more terse/idiomatic by using the bitwise
operators, which do logical operations on boolean arrays:
mask = 255*((medical_image = lower) (medical_image = upper))
Though this is a bit annoying as the bitwise ops ( | ^ ~) have higher
precedence than the comparison ops ( = =), so you need to
parenthesize carefully, as above.
Zach
On Dec 2, 2010, at 7:35 AM, totonixs...@gmail.com wrote:
Hi all,
I' m developing a medical software named InVesalius [1], it is a free
software. It uses numpy arrays to store the medical images (CT and
MRI) and the mask, the mask is used to mark the region of interest and
to create 3D surfaces. Those array generally have 512x512 elements.
The mask is created based in threshold, with lower and upper bound,
this way:
mask = numpy.zeros(medical_image.shape, dtype=uint16)
mask[ numpy.logical_and( medical_image = lower, medical_image =
upper)] = 255
Where lower and upper are the threshold bounds. Here I' m marking the
array positions where medical_image is between the threshold bounds
with 255, where isn' t with 0. The question is: Is there a better way
to do that?
Thank!
[1] - svn.softwarepublico.gov.br/trac/invesalius
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion