如何用matlab計算已知影象的熵

2021-09-07 16:12:21 字數 2382 閱讀 1512

1樓:存在

function entr=yentropy(a)a=uint8(a); %這裡a為8位的單色影象或24為的rgb彩色影象

[m n l]=size(a);

entr=0;

for k=1:l

hi=zeros(1,256);

for i=1:m

for j=1:n

hi(a(i,j,k)+1)=hi(a(i,j,k)+1)+1; %求每種值的在影象**現的次數

endend

hi=sort(hi,'descend');

hi=hi./m./n; %求概率

en=0.0;

for i=1:256

if hi(i)>0

en=en-hi(i).*log2(hi(i)); %概率不為0 累加求熵

else

i=257; %否則停止

endend

entr=entr+en;

endentr=entr/l; %當l=1時a為單色影象;

當l=3時a為彩色影象,三個頁面的熵平均.

2樓:匿名使用者

什麼是「已經影象」?如果是一般的影象檔案,可以直接用imread讀進來就行的。在你給的原始碼中只要讓變數a儲存讀進來的資料就可以了,i.

不過這個程式寫的效率很低,雖然很容易看懂。

3樓:匿名使用者

資訊沒有丟失,是不會影響影象的資訊熵的~~~不能識別就換個格式就ok了~~

如何用c++語言計算一幅影象資訊的熵

4樓:匿名使用者

1、熵是描述區域的隨機程度的,p=σc*logc,c是灰度概率值,當影象均勻時,各灰度值的概率基本相等,熵可以達到最大

2、例程:

#include

#include

int i,j;

double rowsum(double table[4],int nrow)//定義第i行的邊際概率函式

{for(i=0;i

5樓:匿名使用者

給你乙個參考吧,希望有幫助:

熵的計算c++程式

#include

#include

int i,j;

double rowsum(double table[4],int nrow)//定義第i行的邊際概率函式

return 0;

}double liesum(double table[4][4],int nlie)//定義第j列的邊際概率函式

return 0;

}void main()

,,,};

for ( i=0;i<4;i++)//輸出概率矩陣

cout<

rowsum(p,4);//呼叫函式輸出第i行的邊際概率

for (i =0;i<4;i++)

cout<

liesum(p,4);//呼叫函式輸出第j列的邊際概率

for ( j =0;j<4;j++)

cout<

// double p[4][4];

double h1=0.0;

for( i=0;i<4;i++)

double h2=0.0;

for( j=0;j<4;j++)

double h3=0.0;

for(i=0;i<3;i++)

for(j=0;j<4;j++)

h3+=p[4][1]*(log(1.0/p[4][1])/log(2.0));

cout<<"x的熵:h(x)="<

cout<<"y的熵:h(y)="<

cout<<"(x,y)的熵:h(x,y)="<

cout<

cout<<"條件熵:h(x|y)="<

cout<<"條件熵:h(y|x)="<

cout<<"互資訊:i(x;y)="<

/* int size=4;//定義聯合概率p為維陣列

double *p;

p=new double[size];

for ( i=0;i<4;i++)//聯合概率計算

}for ( i=0;i<4;i++)//聯合熵的計算

}cout<<"聯合h(x,y)熵為"<

delete p; */}

6樓:

同意上面..........................

如何用matlab計算二值化圖中白色區域的畫素點個數

計算原理如下 假設一副二值 其背景是黑色的,而邊緣是白色的,而且白色邊緣中不包含黑色的點,就如附件中的那個影象。程式原始碼如下 step 1 clear all clci imread test.bmp 讀入 bwi im2bw i,0.5 轉化為二值影象 l bwlabel bwi,4 將四連通區...

求問如何用matlab對影象中的一塊四邊形區域進行處理,比如進行傅利葉變化

i6 imread c 1.bmp 讀入影象noisy imnoise i6,salt pepper 0.05 加入雜訊 nosiy noisy 1 30,1 30 選取一塊子影象 m,n size noisy f fftshift fft2 double noisy m1 floor m 2 n1...

如何用matlab解決這道題目,如何用matlab解決這道題目

a 0.04 0.04 0.12 0.56,1.56,0.32 0.24,1.24,0.28 y 3,1,0 x inv a y x就是結果。如何用matlab求解這道題目?求超線性方程組 rng b randi 10,3,1 a 1 1 1 1 1 2 x a b matlab 中 左除 會按照最...