高斯判别算法GDA(吴恩达机器学习c#实践,生成高斯模板显示同心椭圆马氏距离,二)
先看以下是個什么?
真看不出什么,對比一下還行,還是看不出來,我們讓馬氏距離放大十倍等于15,高斯值放大1000倍等于4的像素加以阻擋指示出來,使用白色。
同心橢圓:(為什么協(xié)方差矩陣?0值改0.5,,不是水平方向的橢圓?而是135度的橢圓?)
下面是C#對這個協(xié)方差矩陣改變后的高斯模板的計算:
//協(xié)方差矩陣
? ? ? ? ? ? // ?a*a ? P*a*d====3.3 ? 0.5
? ? ? ? ? ? // ?P*a*d ? d*d====0.5 ? 3.3
? ? ? ? ? ? int nWidowSize = 11;
? ? ? ? ? ? double nSigma = 3.3;
? ? ? ? ? ? double[] pdKernal_2 = new double[11 * 11];
? ? ? ? ? ? double P = 0.5 / 3.3;
? ? ? ? ? ? ///二維高斯函數(shù)公式 ? ? ??
? ? ? ? ? ? // ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? x*x+y*y ? ? ? ? ? ? ? 2*P*x*y ? ? ? ? ? ?/// ??
? ? ? ? ? ? // ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(1-P*P)^(-1)( ?--------------- ?- ? ------------- ?)*(-1/2 ) ? ? ? ?/// ??
? ? ? ? ? ? // ?1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? nSigma*nSigma ? ? ?nSigma*nSigma ? ? ? ? ?/// ??
? ? ? ? ? ? // ---------------- *(sqrt(1-P*P))^(-1) ?*e ? ? ? ? ? ? ? ? ? ? ? ? ? /// ??
? ? ? ? ? ? // 2*pi*nSigma*nSigma ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /// ??
? ? ? ? ? ? /// ??
? ? ? ? ? ? int nCenter = (nWidowSize) / 2;
? ? ? ? ? ? for (int i = 0; i < nWidowSize; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? for (int j = 0; j < nWidowSize; j++)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? int nDis_x = i - nCenter;
? ? ? ? ? ? ? ? ? ? int nDis_y = j - nCenter;
? ? ? ? ? ? ? ? ? ? double temp = (nDis_x * nDis_x + nDis_y * nDis_y - 2 * P * nDis_x * nDis_y)/(1-P*P);
? ? ? ? ? ? ? ? ? ? temp = temp / (nSigma * nSigma);
? ? ? ? ? ? ? ? ? ? double r = Math.Sqrt(temp);//馬氏距離
? ? ? ? ? ? ? ? ? ? double 指數(shù) = Math.Exp(-(1 / 2.0) * temp);
? ? ? ? ? ? ? ? ? ? double 系數(shù) = 1/Math.Sqrt(1 - P * P);
? ? ? ? ? ? ? ? ? ? double temp2 = 系數(shù)*指數(shù) / (2 * 3.1415926 * nSigma * nSigma);
? ? ? ? ? ? ? ? ? ? pdKernal_2[i + j * nWidowSize] = (int)(temp2 * 1000);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
下一節(jié),橢圓畫法,以及旋轉橢圓的畫法。
總結
以上是生活随笔為你收集整理的高斯判别算法GDA(吴恩达机器学习c#实践,生成高斯模板显示同心椭圆马氏距离,二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高数三重积分+离散二元关系+线代矩阵解线
- 下一篇: 求助 救救孩子吧