# How to compute the mean of two disjoint region ?

1 ビュー (過去 30 日間)
Makrim 2015 年 5 月 1 日
コメント済み: Image Analyst 2015 年 5 月 2 日
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 2015 年 5 月 1 日

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).
##### 1 件のコメント表示非表示 なし
Makrim 2015 年 5 月 2 日
excellent, that's what I am looking for.finally I have done it as follow :
m_out = mean2([J_out_1 , J_out_2])

サインインしてコメントする。

### その他の回答 (1 件)

Image Analyst 2015 年 5 月 1 日
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))
##### 2 件のコメント表示非表示 1 件の古いコメント
Image Analyst 2015 年 5 月 2 日
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.

サインインしてコメントする。

### カテゴリ

Find more on Image Processing Toolbox in Help Center and File Exchange

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by