-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmaximal_entropy.m
36 lines (33 loc) · 1.27 KB
/
maximal_entropy.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function [f ] = maximal_entropy(histo,dims)
%maximal_entropy táto funkcia vytvorí funkciu pre výpočet hodnoty maximálnej
%entropie v obraze
%Vstupom je histogram a pocet prahov
%Vystupom je funkcia, ktora pocíta hodnotu maximálnej entropie v obraze
pixle=sum(histo);
H{1}=@(t)-sum(((histo(1:t(1))/pixle)/sum((histo(1:t(1))/pixle))).*log2((histo(1:t(1))/pixle)/sum((histo(1:t(1))/pixle))));
for d=2:dims
%je tu nastavená spätná vazba, to znamená, že keď volám funkciu f, najprv
%sa mi vytvorí H a v hačku už je vložená premenná, s ktorou pracuje a v
%jačku beriem vždy len jedno t, t(d), lenže do výpočtu v t sa tiež posúva
%len toto t, ale tam potrebujem 2 hodnoty t
% p{d}=@(t)(histogram((t(d-1)+1):t(d))/pixle);
H{d}=@(t)-sum(((histo((t(d-1)+1):t(d))/pixle)/sum((histo((t(d-1)+1):t(d))/pixle))).*log2((histo((t(d-1)+1):t(d))/pixle)/sum((histo((t(d-1)+1):t(d))/pixle))));
end
H{dims+1}=@(t)-sum(((histo((t(d)+1):256)/pixle)/sum((histo((t(d)+1):256)/pixle))).*log2((histo((t(d)+1):256)/pixle)/sum((histo((t(d)+1):256)/pixle))));
% Napísanie funkcie zo struktury
A='';
for ii=1:dims+1
if ii==dims+1
b=['H{%1.0f}(t)'] ;
B=sprintf(b,ii);
str=[A,B];
else
b=['H{%1.0f}(t)+'];
B=sprintf(b,ii);
str=[A,B];
A=str;
end
end
konecne=['@(t)',str];
f=str2func(konecne);
end