1

Matlab ファジー ツールボックスを使用して、HSV 色空間でのカラー イメージ セグメンテーションに取り組んでいます。目標は、RGB 画像を読み取る -> hsv に変換する -> H、S、V 値をファジー システムの入力として使用し、このピクセルが属するクラス (ここでは 16 の定数出力色) を見つけることです。ここにファジーシステムがあります:

「推論手順は、ゼロ次の高木・菅野モデルに基づいているため、各ファジー規則の帰結部分は、セット {黒、白、赤、オレンジなど} の鮮明な離散値になります。このモデルには 10 があるため、色相のファジー セット、彩度の 5 つ、明度の 4 つ、このモデルに必要なルールの総数は 10*5*4=200 です。(1)

問題は、プログラムでこの行を使用して出力値を取得すると

segimg=reshape(evalfis([h s v],hsvRuleSugeno),imgh,imgw);

出力は私の定数クラスではありません。なぜなら、非ファジフィケーションにセントロイドを使用し、以下に示すように、出力としてそれに依存できないからです!

私は多くの論文やウェブサイトを検索しますが、誰も説明していないほど簡単だと思います! 何かが足りないか、おそらく十分な知識がありません。この問題を理解するのを手伝ってくれませんか?

参照: (1): ファジー ロジックを使用した人間の知覚ベースのカラー セグメンテーション、Lior Shamir Department of Computer Science、Michigan Tech。

4

2 に答える 2

1

このペーパーでは、セクション 2.3 で計算プロセスについて説明しています。から取得した非離散値または重心値は必要ありませんevalfis。出力として 16 のクラスの 1 つを与える必要があるすべてのルールを作成したと仮定しています。これは、各出力クラスが少なくとも 1 つのルールに関連付けられていることを意味します。この論文によると、次のことを行う必要があります。

  1. 各出力クラスに関連付けられたルールを含む 16 のグループを作成します。黄色に 1 つのグループ、白に 1 つ、黒に 1 つのグループなど...
  2. すべてのルールの強度を計算します。
  3. 各グループについて、そのグループに含まれるすべてのルールの強度値の合計を見つけます。
  4. 次に、含まれているルールの強度の累積合計が最大のグループを見つけます。

これを達成するために、重心ベースの非ファジィ化された値に頼ることはできません。以下のドキュメントを確認しましたがevalfis、上記のアルゴリズムを実行できるはずのスクリプトです。アイデアは、各ルールの強度を収集し、ルールの出力クラスに基づいてルールをグループに並べ替え、次に各グループの合計を見つけて最大値を見つけることです。

[output, IRR, ORR, ARR] = evalfis(input, fismat)
m = cat(2, ORR, ARR);
m = sortrows(m, 1)

r = [];
for l = 2 : size(m, 1)
    if m(l, 1) ~= m(l - 1, 1)
        r = cat(1, r, m(l - 1, :));
    else
        m(l, 2) = m(l, 2) + m(l - 1, 2);
    end
end

if size(m, 1) >= 2
    r = cat(1, r, m(size(m, 1), :));
end

% r now contains the final class to be choosen
disp(r)
于 2012-12-23T23:28:13.563 に答える