Normalisasi Deret Data pada Matrix di Library OpenCV

Posted: February 18, 2013 by Iman Rahmansyah Tayibnapis in C++, openCV

Dalam statistik dan aplikasi statistik, normalisasi dapat memiliki berbagai definisi. Dalam kasus yang paling sederhana, normalisasi peringkat artinya adalah nilai menyesuaikan nilai data- data yang diukur pada skala yang berbeda – beda menjadi skala umum. Dalam kasus yang lebih rumit, normalisasi dapat merujuk kepada penyesuaian yang lebih canggih dengan tujuannya adalah untuk membawa distribusi probabilitas seluruh nilai-nilai yang disesuaikan ke dalam keselarasan. Dalam kasus normalisasi skor, normasliasi merupakan penyelarasan distribusi menjadi distribusi normal.

Banyak sekali jenis normaliasi data dalam statistik, salah satunya adalah normalisasi skor standar. Normalisasi ini akan menormasliasi error dengan syarat parameter – parameternya diketahui.  Normalisasi skor standar  juga mengindikasikan  banyaknya  simpangan baku observasi atau datum yang nilainya di atas atau di bawah rata-rata.  Jika dirumuskan dalam matematika, nilai deret normalisasi itu sama dengan

 

dengan X merupakan deret data nilai,  μ sebagai nilai rata – rata , dan σ sebagai simpangan baku.

Salah satu cara untuk menerapkan normaslisasi skor standar pada Visual Studio C++ dapat menggunakan OpenCV. Dengan openCV dapat dilakukan normalisasi data terhadap suatu matriks pada suatu gambar atau kumpulan penulusaran sautu warna  pixel terntentu pada suatu rangakaian gambar atau video.

berikut contoh potongan program dari normaliasi data menggunakan openCV di Visual Studio C++

Mat temp_xit = Mat::zeros(1, i,CV_32FC3);
Scalar mean_xi,stddev_xi;
for(int j=0;j<i;j++){
	temp_xit.at(0,j)[0]=xit.at(0,j)[0];//xit merupakan suatu matriks data yang hendak dinormalisasi
	temp_xit.at(0,j)[1]=xit.at(0,j)[1];
	temp_xit.at(0,j)[2]=xit.at(0,j)[2];
}
meanStdDev(temp_xit, mean_xi, stddev_xi);
double meanR=0,meanG=0,meanB=0;
vector xR (i);
vector xG (i);
vector xB (i);

// Normalize the Raw Image
for (int j = 0; j < i; j++) {
	double u = (temp_xit.at(0,j)[0] - mean_xi.val[0])/stddev_xi.val[0];
	double v = (temp_xit.at(0,j)[1] - mean_xi.val[1])/stddev_xi.val[1];
	double w = (temp_xit.at(0,j)[2] - mean_xi.val[2])/stddev_xi.val[2];

	xR.at(j)=w;
	xG.at(j)=v;
	xB.at(j)=u;

	// Show norm value
	printf("Rn %3.3f  Gn %3.3f  Bn %3.3f  \n",w,v,u);

	meanR+=xit.at(0,j)[2];meanG+=xit.at(0,j)[1];meanB+=xit.at(0,j)[0];
}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s