## How to compute the mean of two disjoint region ?

### Makrim (view profile)

on 1 May 2015
Latest activity Commented on by Image Analyst

on 2 May 2015

### Guillaume (view profile)

Suppose I have to fragment of an image J : J_out_1 et J_out_2.
J_out_1 = J(1:h,startj:i);
J_out_2 = J(1:h,k:endj);
I would like to compute the mean of the union of those two regions , is it possible ?
m_out = mean2(J_out_1 union J_out_2);

### Guillaume (view profile)

on 1 May 2015
Edited by Guillaume

### Guillaume (view profile)

on 1 May 2015

m_out = mean([J_out_1(:); J_out_2(:)])
would be one way to do it assuming the image has only one colour channel. If they are RGB images:
m_out = mean([reshape(J_out_1, 1, [], 3), reshape(J_out_2, 1, [], 3)])
Note that if the two regions are the same size, you could just concatenate them without any reshaping (by colon or reshape).

Makrim

### Makrim (view profile)

on 2 May 2015
excellent, that's what I am looking for.finally I have done it as follow :
m_out = mean2([J_out_1 , J_out_2]) ### Image Analyst (view profile)

on 1 May 2015

Why not just take the weighted mean of the two?
numerator = numel(J_out_1) * mean2(J_out_1) + numel(J_out_2) * mean2(J_out_2)
denominator = numel(J_out_1) + numel(J_out_2)
m_out = numerator / denominator
If you want, you could make a binary image and use that as a mask to extract all the pixels in just the two regions:
binaryImage = false(size(J));
binaryImage(1:h,startj:i) = true;
binaryImage(1:h,k:endj) = true;
m_out = mean(J(binaryImage))

Makrim

### Makrim (view profile)

on 2 May 2015
that's another way, Yes , thank you. by the way the idea of using Logical is also brilliant.
Image Analyst

### Image Analyst (view profile)

on 2 May 2015
You're welcome. Those ways will also work even if the two subimages don't have the same number of rows. So "h" could be different for each image and they would still work.