Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Extracting pixel values from an image under a polygon (region of interest)

  • To: mathgroup at smc.vnet.net
  • Subject: [mg115342] Re: Extracting pixel values from an image under a polygon (region of interest)
  • From: Matthias Odisio <matthias at wolfram.com>
  • Date: Sat, 8 Jan 2011 03:38:29 -0500 (EST)

Mac,

On 1/7/11 3:10 AM, Mac wrote:
> I've tried solving this general scientific image processing problem
> for some time, alas without success. Given an image and a polygon with
> coordinates describing a region of interest, I would like to extract
> all the image pixels falling completely within the boundaries of the
> polygon (not necessarily a square).
> 
> As an illustrative example consider the following synthetic image +
> region of interest marked in red
> 
> img = Graphics[{Raster[RandomReal[{0, 1}, {10, 10}]], Red,
>    Opacity[0.5], Polygon[{{0.9, 0.9}, {4, 4.1}, {7, 4.1}, {8, 1}}]},
>   Frame -> True]
> 
> I would like to extract all the values of img falling within the
> boundary of the red polygon. The real world problem I face is that I
> have a radar map of the earth's surface with the pixel values
> representing the radar intensity and would like to extract and analyse
> all pixels falling within a specific region (say for instance
> Greenland). Despite the advances in image processing in Mathematica 8
> I still do not see a solution. There is no PixelTake function or
> similar....
> 
> Anway, any help would be much appreciated.
> 
> Mac

This is possible in version 8:


Create an image:

img = RandomImage[{0, 1}, {100, 100}];

Draw a polygon on top of it using the FE right click menu (Graphics
Editing>Drawing Tools)

Select the image, and extract the mask of the polygon using again the
FE right click menu (Graphics Editing>Create mask)

Make a binary image from the resulting graphics object:
mask = Binarize[previousresult, 0];

Extract the corresponding pixels in the original image:
Extract[ImageData[img], Position[ImageData[mask], 1]]


Note that with small images (say, 10 by 10), the rasterized graphic
mask may not have the same dimensions as the image. That is a bug
which will be fixed in a future release of Mathematica.


Matthias Odisio
Wolfram Research


  • Prev by Date: Re: Extracting pixel values from an image under a polygon (region of interest)
  • Next by Date: Re: Augmenting Mathematica documentation - a serious proposal
  • Previous by thread: Re: Extracting pixel values from an image under a polygon (region of interest)
  • Next by thread: Re: Extracting pixel values from an image under a polygon (region of interest)