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樓: 同意上面.......................... 計算原理如下 假設一副二值 其背景是黑色的,而邊緣是白色的,而且白色邊緣中不包含黑色的點,就如附件中的那個影象。程式原始碼如下 step 1 clear all clci imread test.bmp 讀入 bwi im2bw i,0.5 轉化為二值影象 l bwlabel bwi,4 將四連通區... 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... 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 中 左除 會按照最...
如何用matlab計算二值化圖中白色區域的畫素點個數
求問如何用matlab對影象中的一塊四邊形區域進行處理,比如進行傅利葉變化
如何用matlab解決這道題目,如何用matlab解決這道題目