基於matlab的互資訊熵匹配演算法

2021-07-16 05:50:13 字數 4171 閱讀 4328

影象資訊熵是一種特徵統計形式,它反映了影象中平均資訊量的多少。影象的一維熵表示影象中灰度分布的聚集特徵所包含的資訊量,令i表示影象中灰度為i的畫素所佔的比例,則定義灰度影象的一元灰度熵為: h=

∑i=0

255pij

logpij

影象一維熵可以表示影象灰度分布聚集特徵,卻不能反映影象灰度分布空間特徵,為了表徵這種空間特徵,可以在一維熵的基礎上引入能夠反映灰度分布空間特徵的特徵量來組成影象二維熵。選擇影象的領域灰度均值作為灰度分布的空間特徵量,與影象的畫素灰度組成特徵二元組,記為(i,j),其中i表示畫素的灰度值(0<=i<=255),j表示領域灰(0<=j<=255): pi

j=f(

i,j)

n2上式能反映某種畫素位置上的灰度值與其周圍畫素灰度分布的綜合特徵,其中

(1),f(i,j):特徵二元組(i,i)出現的頻數

(2),n:影象的尺度

定義離散的影象二維熵為: h=

∑i=0

255pij

logpij

構造的影象二維熵可以在影象所包含資訊量的前提下,突出反映影象中畫素位置的灰度資訊和畫素領域內灰度分布的綜合特徵。

互資訊是資訊論理的一種有用資訊量,它可以看成是乙個隨機變數中包含的關於另乙個隨機變數的資訊量,或者說是隨機變數由已知另乙個隨機變數而減少的不肯定性。設兩個隨機變數(x,y)的聯合分布為p(x,y),邊際分布分別為p(x),p(y),互資訊 i(x,y)是聯合分布p(x,y)與乘積分布p(x)p(y)的相對熵,即: i(

temp=imcrop(formerimg,[j,i,c2-1,r2-1]); %座標、寬度、高度(除座標所在列和行)

h2=entropy(temp); %擷取影象的資訊熵

h=unite_entropy(target,temp); %目標和擷取影象的聯合資訊熵;

i=h1+h2-h; %求互資訊。

if(i>=a)

a=i;

y=i;

x=j; %記錄互資訊熵最大值的點

endend

endzuobiao=[y,x,y+r2,x+c2]; % 目標在原圖中的左上角、右下角的座標

a5=rectangleonimage(formerimg,zuobiao,1,1);% 加框函式

subplot(2,2,1);

imshow(formerimg);

title('原影象');

subplot(2,2,2);

imshow(target);

title('目標影象');

subplot(2,2,3);

imshow(a5);

title('匹配後的圖');

tocunite_entropy 計算聯合熵函式

function

enter = unite_entropy

( img1,img2 )

%計算兩幅影象的聯合熵

% img1,img2是兩幅影象

[m,n]=size(img1);

temp=zeros(256,256);

%對影象的灰度值成對地統計

for m=1:m;

for n=1:n;

if img1(m,n)==255

i=256;

else

i=img1(m,n)+1;

endif img2(m,n)==255

j=256;

else

j=img2(m,n)+1;

endtemp(i,j)=temp(i,j)+1;

endendc=sum(sum(temp));

temp=temp./c;

%由熵的定義做計算

enter=0;

%for i=1:256

% for j=1:256

if temp(i,j)==0;

enter=enter;

else

% enter=enter-temp(i,j)*log2(temp(i,j));

enter= -sum(sum(temp.*(log2(temp+(temp==0)))));

end% end

%end

enter;

end

加框函式(matlab裡面有可以替代的函式)
function

ent=rectangleonimage

(pic,sw,n,c)

% sw表示矩形框的左上角、右下腳點的在影象中的位置座標值

% n 表示框線的寬度

% c 表示框線的顏色,c=1 白色或紅色,c=2黑色或綠色,c=3藍色,c=其他值 表示將原顏色取反。

x0=sw(1);y0=sw(2);x1=sw(3);y1=sw(4);

[p q ch]=size(pic);

%讀取影象矩陣的頁面數,ch=1表示256灰度影象,ch=3表示24位彩色影象

if ch==1

if c==1

pic(x0:x1,y0:y0+n)=255;

pic(x0:x1,y1-n:y1)=255;

pic(x0:x0+n,y0:y1)=255;

pic(x1-n:x1,y0:y1)=255;

elseif c==2

pic(x0:x1,y0:y0+n)=0;

pic(x0:x1,y1-n:y1)=0;

pic(x0:x0+n,y0:y1)=0;

pic(x1-n:x1,y0:y1)=0;

else

pic(x0:x1,y0:y0+n)=255-pic(x0:x1,y0:y0+n); %取反

pic(x0:x1,y1-n:y1)=255- pic(x0:x1,y1-n:y1);

pic(x0:x0+n,y0:y1)=255-pic(x0:x0+n,y0:y1);

pic(x1-n:x1,y0:y1)=255-pic(x1-n:x1,y0:y1);

endend

if ch==3

if c==1

r=[255,0,0];

pic(x0:x1,y0:y0+n,1:3)=r;

pic(x0:x1,y1-n:y1,1:3)=r;

pic(x0:x0+n,y0:y1,1:3)=r;

pic(x1-n:x1,y0:y1,1:3)=r;

elseif c==2

g=[0,255,0];

pic(x0:x1,y0:y0+n,1:3)=g;

pic(x0:x1,y1-n:y1,1:3)=g;

pic(x0:x0+n,y0:y1,1:3)=g;

pic(x1-n:x1,y0:y1,1:3)=g;

elseif c==3

b=[0,0,255];

pic(x0:x1,y0:y0+n,1:3)=b;

pic(x0:x1,y1-n:y1,1:3)=b;

pic(x0:x0+n,y0:y1,1:3)=b;

pic(x1-n:x1,y0:y1,1:3)=b;

else

%顏色取反

pic(x0:x1,y0:y0+n,1:3)=255-pic(x0:x1,y0:y0+n,1:3);

pic(x0:x1,y1-n:y1,1:3)=255-pic(x0:x1,y1-n:y1,1:3);

pic(x0:x0+n,y0:y1,1:3)=255-pic(x0:x0+n,y0:y1,1:3);

pic(x1-n:x1,y0:y1,1:3)=255-pic(x1-n:x1,y0:y1,1:3);

endend

ent=pic;

熵和互資訊

讀文獻想要算通道容量的時候,遇到了需要用到熵和互資訊相關的推導,所以找紀佬要來資訊理論的課件拿來看了看,在這裡也是乙個記錄。先搬上來兩個定義。熵的定義 互資訊量的定義 好的,掌握到這裡基本上就ok了,但是在資訊理論研究中我們還是要經常用一點條件互資訊的東西,那麼可以用這個venn圖來看。圖轉侵刪 這...

1 互資訊 資訊熵 條件互資訊 相關

參考於 資訊量可以被看成在學習 x 的值的時候的 驚訝程度 如果有人告訴我們乙個相當不可能的時間發生了,我們收到的資訊要多於我們被告知某個很可能發生的事件發生時收到的資訊。如果我們知道某件事情一定會發生,那麼我們就不會接收到資訊。於是,我們對於資訊內容的度量將依賴於概率分布p x 因此我們想要尋找乙...

熵,條件熵,互資訊,交叉熵

定義 用來度量資訊的不確定程度。解釋 熵越大,資訊量越大。不確定程度越低,熵越小,比如 明天太陽從東方公升起 這句話的熵為0,因為這個句話沒有帶有任何資訊,它描述的是乙個確定無疑的事情。例子 假設有隨機變數x,用來表達明天天氣的情況。x可能出現三種狀態 1 晴天2 雨天 3 陰天 每種狀態的出現概率...