3

私はmatlabを初めて使用するので、ここで明らかなことを求めている場合はご容赦ください。私が持っているのは、カラー写真画像(すべて同じ寸法)のコレクションです。私がやりたいのは、各ピクセルの色の中央値を計算することです。

matlabにメディアンフィルターがあることは知っていますが、私が知る限り、それは私が望むものを正確に実行しません。画像のコレクション全体の間の中央値を、個別のピクセルごとに計算したいからです。

したがって、たとえば、3つの画像がある場合、matlabで、これら3つの画像のどの色の値が中央値であるかを(ピクセルごとに)計算する必要があります。どうすればこれを行うことができますか、誰か知っていますか?


編集:私が思いついたものから、私はすべての画像を単一のマトリックスにロードする必要があります。マトリックスは4次元(高さ、幅、rgb、画像)である必要があり、各ピクセルと各色について、4次元(画像間)の中央値を見つけます。それは正しいですか(そして可能ですか)?そして、どうすればこれを行うことができますか?

4

2 に答える 2

7

あなたの直感は正しいです。たとえば、画像 image_1、image_2、image_3 がある場合、それらを 4 次元行列に割り当てることができます。

X(:,:,:,1) = image_1;
X(:,:,:,2) = image_2;
X(:,:,:,3) = image_3;

次に使用します。

Y=median(X,4);

中央値を取得します。

于 2012-02-18T16:04:42.797 に答える
2

私のコメントを完全な回答に拡張します。

@prototoastの答えはエレガントですが、各ピクセルのR、G、B値の中央値が個別に計算されるため、出力画像は非常に奇妙に見えます.

視覚的に意味のある明確な中央値を取得するには、中央値を取得する前に画像を白黒にキャストするのが最も簡単です。

rgb2gray()画像処理ツールボックスの は、色相と彩度を破棄しながら各ピクセルの輝度を保持する方法でこれを行います。

編集:

「RGB 中央値」を「デカルト座標の中間値」として定義したい場合、これは 3 つの画像に対して簡単に行うことができます。

C1=(r1,g1,b1)中央値の色 、 、C2=(r2,g2,b2)の3 つの可能な選択肢を持つ単一のピクセルを考えてみましょうC3=(r3,g3,b3)。通常、これらは 3D 空間で三角形を形成します。

D1_2=abs(C2-C1)D2_3=abs(C3-C2)、 の 3 つの色の間のピタゴラス距離をとりD1_3=abs(C3-C1)ます。

他の 2 つの色との距離が最も短い色を「中央値」として選択します。Triangle Inequalityのおかげで、 などの定義D1=D1_2+D1_3と取得min(D1,D2,D3)が機能するはずです。退化したケースに注意してください: 正三角形 (C1、C2、C3 等距離)、線 (C1、C2、C3 が互いに直線)、または点 (C1=C2=C3)。

4 つ以上の 3D ポイントのセットの "中央値" を定義するのは少し難しいため、3D 中央値に関するこの単純な考え方を 3 つ以上の画像に拡張するのは難しいことに注意してください。

編集 2

N 点の「中央値」を 3D 空間でそれらを囲む最小の球の中心として定義するには、次を試すことができます。

  1. {N} 内で最も離れている 2 つの点 N1 と N2 を見つけます。N1 と N2 の間の距離は、すべてのポイントを囲む最小の球の直径です。(証明: これよりも小さい球体では、N1 と N2 の両方を同時に囲むことはできません。)
  2. その場合、中央値は N1 と N2: の中間になりますM = (N1+N2)/2

編集 3 : 上記は、3 点が等距離でない場合にのみ機能します。math.stackexchange.com に問い合わせる必要があるかもしれません。

編集 4 : ウィキペディアが再びお届けします! 最小円問題境界球

于 2012-02-18T16:23:57.907 に答える