2

このような配列に画像ファイルを読み込みました

A = imread(fileName);

そして今、シャノンエントロピーを計算したいと思います。maltab にある shannon エントロピーの実装は、ファイルが 256 バイト レベルで構成されていると見なすバイト レベルのエントロピー分析です。

wentropy(x,'shannon')

しかし、65536 レベルで構成されるファイルを表示する必要があるバイグラム エントロピー分析を実行する必要があります。誰かがこれを達成するための良い方法を提案してくれますか?

4

2 に答える 2

5

確率変数のエントロピーは、次の式を使用して計算できます。 ここに画像の説明を入力

はどこp(x)ですかProb(X=x)

一連のn観測値を指定すると、すべての x 値の範囲(x1, x2, .... xn)を計算します (この場合、すべての値の間で合計します。これを行う最も簡単な方法は、P(X=x)(0 and 65535)hist

byteLevel = 65536
% count the observations

observationHist = hist(observations, byteLevel);
% convert to a probability
probXVal = observationHist ./ sum(observationHist);  

% compute the entropy
entropy = - sum( probXVal .* log2(probXVal) );

ファイル交換には、チェックアウトする価値のある実装がいくつかあります。

wentropy256バイトレベルを使用しているのはどこですか?ドックのどこにも見当たりませんか?Matlab では、カラー画像のピクセルには 3 つのチャネル (R、G、B) があり、各チャネルには 8 ビット (または 256 バイト レベル?) が必要であることを思い出してください。

また、各チャネルがバインドされているため、次のように to[0 256)からのマッピングを作成できます。P(R=r,G=g,B=b)P(X=x)

data = imageData(:,:,1);
data = data + (imgData(:,:,2) * 256);
data = data + (imgData(:,:,3) * 256 * 256);

data各チャネルが独立している画像の総エントロピーを計算するために使用できると思います。

于 2012-11-12T16:19:50.633 に答える