Re: Calculate the mean of many images [message #63658 is a reply to message #63654] |
Sun, 16 November 2008 00:54   |
Craig Markwardt
Messages: 1869 Registered: November 1996
|
Senior Member |
|
|
On Nov 16, 1:16 am, Bulrush <Wasit.Weat...@gmail.com> wrote:
> Hello,
> I know this topic has been posted several times. But I could not find
> my answer from these posted.
> My issue is: I have many images 2 bands in each, one image is QA image
> and the other one is data.
> I need to calculate the mean of good pixels. Let's say QA image tells
> me the location of good pixels, e.g. 1 for good pixels, and other for
> bad. There are also NaN values. So, if the pixels are "good" in 7
> images out of ten, then
> (pixel1+pixel2...+Pixel7) /7
I would loop over input images, and keep track of the cumulative sum
of the number of valid pixels (NPIX), and the cumulative sum of the
pixel values (SUM). Something like the following. Since there are
only a few images, there will be very little overhead in the FOR-loop.
Craig
npix = 0 & sum = 0
for i = 0, n_images-1 do begin
qa = ... the ith QA image ...
img = ... the ith image ...
mask = (qa EQ 1) AND (finite(img) EQ 1)
;; Sum valid pixels
npix += mask
wh = where(mask, ct)
if ct GT 0 then sum(wh) += img(wh)
endfor
;; Positions where there are good pixels
qa_avg = (npix GT 0)
wh = where(qa_avg EQ 1)
;; Compute average for valid pixels
avg = sum*0
avg(wh) = sum(wh) / npix(wh)
|
|
|