Jumat, 02 Januari 2015

teknik KDE kernel density estimation

Mengapa solusi hampiran menjadi hal yang disukai oleh para engineer? Karena bila galat tidak terlalu besar maka bila algoritma tersebut bisa diterapkan (metode numerik) akan menghemat waktu komputasi secara signifikan.

Salah satu contoh kasusnya adalah menghitung grafik histogram pada citra menggunakan teknik KDE kernel density estimation


 
Contoh penggunakan KDE untuk proses pencocokan pada algoritma mean shift. Mean shift sering digunakan untuk melacak keberadaan objek yang bergerak / object tracking berdasarkan PDF (probabilty density function) menggunakan teknik yang sama dengan KDE





clc;clear all;close all;
X = imread('D:/pohon.bmp');
if ndims(X)==3
    X = rgb2gray(X);
end

X=double(X);
X=sort(X(:));
Np= 50;
[xi3,f3] = mkde(X,Np,0.01);
figure,
subplot(1,2,1),imhist(uint8(X)),title('fungsi imhist matlab');
subplot(1,2,2),plot(xi3,f3),title('hampiran dengan menggunakan KDE');   


function [xi,f] = mkde(X,Np,h)
%%menghitung kde dengan function normal
%%oleh mulkan.ms@gmail.com
%%update : september 2014
%%X matrix
%%Np panjang / nilai maksimal
%%h tingkat smooth



Sigma           = std(X);%%menghitung variance
X               = X/Sigma; %%normalisasi
Maksimal        = max(X(:)); %%cari nilai maksimal
Minimal         = min(X(:)); %%cari nilai minimal

b               = (Maksimal-Minimal)/(Np-1.0); 
T               = Minimal+b*(1:Np); %%titik yang akan ditest

N               = size(X,1)*size(X,2);
c               = sqrt(2*pi)*N*h;

for i = 1:Np     
      a = 0;
      for j = 1:N        
         b      = (T(i)-X(j))/h;
         a      = a+exp(-b*b*0.5);        
        Y(i)    = a/c;    
     
      end
end
xi      = 1:Np;
f       = Y; 

end

       
Posting Komentar