Circular neighborhood for ImageApply
- To: mathgroup at smc.vnet.net
- Subject: [mg115022] Circular neighborhood for ImageApply
- From: Adrian Boyko <adrianboyko at gmail.com>
- Date: Tue, 28 Dec 2010 06:52:36 -0500 (EST)
Usual disclaimer: I'm a casual home user of Mathematica, so please
forgive what might seem like silly questions.
I'm using ImageFilter like this:
ImageFilter[1.0*Count[Flatten[#], 0.]/Length[Flatten[#]] &,
ColorConvert[binaryImage, "Grayscale"], r]
I.e. I'm trying to replace each pixel with the ratio of 0 pixels and 1
pixels in its square neighborhood. I'm doing this because I'm trying to
find the center of disks (of an expected radius) in a scanned image, and
this works reasonably well. But, since I'm actually looking for disks I
think it would be better to find the ratio in the pixel's _disk_ (not
square) neighborhood. It seems like there ought to be a simple way to
work DiskMatrix[3] into my expression, and extra processing time isn't
an issue.
Any ideas? Is there some operator I can apply to # and DiskMatrix[3]
which would mask out the neighborhood values outside the disk? I think
ImageMultiply ought to work like an ImageAnd if all my pixel values are
0 or 1, but I haven't had any luck with it.
On a tangent, I have another filter that ought to be looking for the
ratio in a ring neighborhood between r1 and r2. Maybe the answer to my
first question will also tell me how to combine DiskMatrix[r1] and
DiskMatrix[r2] to get RingMatrix[r1,r2].
Any help will be greatly appreciated.
Thanks,
Adrian
P.S. I'm considering the upgrade to Mathematica 8. Since I have a
CUDA-compatible graphics card, is it safe to assume that version 8 will
_automatically_ utilize it when executing these sorts of operations? Or
would I need to code differently to take advantage of it?