資源簡介
基于灰度梯度共生矩陣,計算混合熵對圖像實現分類

代碼片段和文件信息
%圖像塊計算灰度共生矩陣
clc;
close?all;
clear?all;
???
gray=256;
I?=?imread(‘lena.bmp‘);
[mn]=size(I);
Energy?=?zeros(mn);
Entropy?=?zeros(mn);
entropy?=?[];
R?=?8;
C?=?8;
%劃分成8*8圖像塊
for?u?=?1:8:m-7
????for?v?=?1:8:n-7
????????IN?=?I(u:u+7v:v+7);
????????
????????%采用平方求和計算梯度矩陣
????????GM=zeros(RC);
????????for?i=1:R-1
????????????for?j=1:C-1
%?????????????????n_GM=(IN(ij+1)-IN(ij))^2+(IN(i+1j)-IN(ij))^2+(IN(ij)-IN(i+1j+1))^2;
?????????????????n_GM=(IN(ij+1)-IN(ij))^2+(IN(i+1j)-IN(ij))^2;
????????????????GM(ij)=sqrt(double(n_GM));
????????????end
????????end
????????GM(1:end-1C)?=?GM(1:end-1C-1);
????????GM(R1:end-1)?=?GM(R-11:end-1);
????????GM(endend)?=?GM(end-1end-1);
????????%找出最大值最小值
????????n_min=min(GM(:));
????????n_max=max(GM(:));
????????%把梯度圖象灰度級離散化
????????%設置新的灰度級為new_gray
????????new_gray=128;
????????
????????%新的梯度矩陣為new_GM
????????new_GM=zeros(RC);
????????new_GM=uint8((GM-n_min)/(n_max-n_min)*(new_gray-1));
????????%?計算灰度梯度共生矩陣
????????H=zeros(graynew_gray);
????????for?i?=?1:R
????????????for?j?=1:C
????????????????x?=?IN(ij);
????????????????y?=?new_GM(ij);
????????????????H(x+1y+1)?=?H(x+1y+1)+1;
????????????end
????????end
????????%歸一化灰度梯度矩陣?H_basic
????????H_basic=H/(R*C);
????????
????????%計算能量?T5
????????T5=0;
????????for?i=1:gray
????????????for?j=1:new_gray
????????????????T5=T5+H_basic(ij)^2;
????????????end
????????end
????????
????????%計算混合熵?T13
????????T13=0;
????????for?i=1:gray
????????????for?j=1:new_gray
????????????????if(H_basic(ij)~=0)
????????????????????T13=T13-H_basic(ij)*log2(H_basic(ij));
????????????????end
????????????end
????????end
???????
????????Energy(u:u+7v:v+7)?=?T5;
????????Entropy(u:u+7v:v+7)?=?T13;
????????entropy?=?[entropy?T13];
????end
end
figure;imshow(I);
%figure;imagesc(Energy);colorbar;
figure;imagesc(Entropy);colorbar;
%分為c類,每類數量平均
en?=?sort(entropy);
classpic?=?ones(mn);
%分為2類
%?c?=?2;
%?fenwei_loc?=?round(length(en)*0.5);
%?thre?=?en(fenwei_loc);
%?%小于門限值的圖像塊標記為1,大于門限值的圖像塊標記為2
%?loc?=?find(Entropy>thre);
%?classpic(loc)?=?2;
%分為c類
c?=?4;
%分位點
fp?=?(1:(c-1))*(1/c);
floc?=?length(en)*fp;
thre?=?[min(en)?en(floc)?max(en)];
for?i?=?1:length(thre)-1
????mint?=?thre(i);
????maxt?=?thre(i+1);
????loc?=?find(Entropy>=mint&Entropy<=maxt);
????classpic(loc)?=?i;
end
figure;imagesc(classpic);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2560??2015-12-16?19:51??test_gray_gradient.m
- 上一篇:自控第五版習題答案胡松濤
- 下一篇:ComToCom電腦串口互傳文件軟件
評論
共有 條評論