Hi Mario,
Can't you just draw a filled black polygon ?
on another note you might want to take a peek at the Orfeo Toolbox
http://www.orfeo-toolbox.org/otb/
Cheers
Norman
On May 11, 2009, at 1:08 PM, Mario Ceresa wrote:
Hello Sean,
thanks for your answer. You're right! I'm actively using shapely with
ITK ( http://www.itk.org/ ) as the main image processing software.
At first images are loaded and segmented with itk and then some
objects are converted to polygons. Eventually, I'd like to obtain all
the points that are inside those polygons to mask them with itk.
The slow part is exactly to find the points without using the bounding
box of the polygon because it would mask too much of the original
image.
Were you suggesting gimp or grass because they could be faster to do
the intersections or to do the actual masking?
Thanks and regards
Mario
On Mon, May 11, 2009 at 5:34 PM, Sean Gillies <sgill...@frii.com>
wrote:
Hi Mario,
Masking is probably better left to image or raster processing
software. If you can think of any way that Shapely might work better
with Gimp, GRASS, or whatever, do let me know.
Sean
On May 11, 2009, at 4:36 AM, Mario Ceresa wrote:
Hi everybody,
I'd like to remove all the pixeles from an image which are inside a
given polygon. The first idea that come into my mind was to generate
all the points which are in the bounding box and then check if they
actually are inside the polygon:
b = poly.bounds
xl = b[2] - b[0]
yl = b[3] - b[1]
points = (Point(i[0]+b[0],i[1]+b[1]) for i in
numpy.ndindex((xl,yl)))
ps = list((p.x,p.y) for p in points if poly.contains(p))
For this test b was (38.0, 1073.0, 679.0, 1977.0) which lead to
579464
points to be checked.
Actually this is quite slow so I cannot use it on larger images:
In [10]: %time a=list(iterops.contains(poly,points))
CPU times: user 43.82 s, sys: 0.21 s, total: 44.03 s
Wall time: 44.10 s
In [12]: %time a=list(iterops.disjoint(poly,points))
CPU times: user 42.64 s, sys: 0.20 s, total: 42.83 s
Wall time: 42.89 s
In [16]: %time a=[p for p in points if poly.contains(p)]
CPU times: user 42.45 s, sys: 0.16 s, total: 42.61 s
Wall time: 42.68 s
In [18]: %time a=map(poly.contains,points)
CPU times: user 37.98 s, sys: 0.15 s, total: 38.12 s
Wall time: 38.21 s
In [20]: %time a=map(poly.disjoint,points)
CPU times: user 37.91 s, sys: 0.20 s, total: 38.10 s
Wall time: 38.18 s
Is there a better way to do the same? Do you happen to know if the
new
prepared geometry could help speeding up a little?
Thanks and regards,
Mario
_______________________________________________
Community mailing list
Community@lists.gispython.org
http://lists.gispython.org/mailman/listinfo/community
_______________________________________________
Community mailing list
Community@lists.gispython.org
http://lists.gispython.org/mailman/listinfo/community
_______________________________________________
Community mailing list
Community@lists.gispython.org
http://lists.gispython.org/mailman/listinfo/community
_______________________________________________
Community mailing list
Community@lists.gispython.org
http://lists.gispython.org/mailman/listinfo/community