// ReSharper restore InconsistentNaming #pragma warning restore 1591 #endregion #region Init and Disposal #if LANG_JP /// <summary> /// 初期化 /// </summary> /// <param name="nClusters"></param> /// <param name="covMatType"></param> /// <param name="termCrit"></param> #else /// <summary> /// Training constructor /// </summary> /// <param name="nClusters"></param> /// <param name="covMatType"></param> /// <param name="termCrit"></param> #endif public EM( int nClusters = DEFAULT_NCLUSTERS, EMCovMatType covMatType = EMCovMatType.Diagonal, TermCriteria? termCrit = null) { var termCrit0 = termCrit.GetValueOrDefault( TermCriteria.Both(DEFAULT_MAX_ITERS, Double.Epsilon)); ptr = NativeMethods.ml_EM_new(nClusters, (int)covMatType, termCrit0); }
// ReSharper restore InconsistentNaming #pragma warning restore 1591 #endregion #region Init and Disposal #if LANG_JP /// <summary> /// 初期化 /// </summary> /// <param name="nClusters"></param> /// <param name="covMatType"></param> /// <param name="termCrit"></param> #else /// <summary> /// Training constructor /// </summary> /// <param name="nClusters"></param> /// <param name="covMatType"></param> /// <param name="termCrit"></param> #endif public EM( int nClusters = DEFAULT_NCLUSTERS, EMCovMatType covMatType = EMCovMatType.Diagonal, TermCriteria?termCrit = null) { var termCrit0 = termCrit.GetValueOrDefault( TermCriteria.Both(DEFAULT_MAX_ITERS, Double.Epsilon)); ptr = NativeMethods.ml_EM_new(nClusters, (int)covMatType, termCrit0); }
/// <summary> /// 初期化 /// </summary> /// <param name="nclusters"></param> /// <param name="covMatType"></param> #else /// <summary> /// Training constructor /// </summary> /// <param name="nclusters"></param> /// <param name="covMatType"></param> #endif public CvEM(int nclusters, EMCovMatType covMatType) : this(nclusters, covMatType, new CvTermCriteria(100, double.Epsilon)) { }
/// <summary> /// 初期化 /// </summary> /// <param name="nclusters"></param> /// <param name="covMatType"></param> /// <param name="termCrit"></param> #else /// <summary> /// Training constructor /// </summary> /// <param name="nclusters"></param> /// <param name="covMatType"></param> /// <param name="termCrit"></param> #endif public CvEM(int nclusters, EMCovMatType covMatType, CvTermCriteria termCrit) { ptr = MLInvoke.cv_EM_new(nclusters, covMatType, termCrit); NotifyMemoryPressure(SizeOf); }
/// <summary> /// 初期化 /// </summary> /// <param name="_nclusters">混合数</param> /// <param name="_cov_mat_type">混合分布共変動行列のタイプ</param> /// <param name="_start_step">アルゴリズムをスタートする最初のステップ</param> /// <param name="_term_crit">処理の終了条件</param> /// <param name="_probs">確率p_i,kの初期値. start_step=EMStartStep.Eのときのみ使用する(その場合はnullであってはならない).</param> /// <param name="_weights">混合分布の重みπ_kの初期値. start_step=EMStartStep.Eのときのみ(nullでない場合は)使用する. </param> /// <param name="_means">混合分布の平均 a_kの初期値. start_step=EMStartStep.Eのときのみ使用する(その場合はnullであってはならない).</param> /// <param name="_covs">混合分布の共変動行列Skの初期値. start_step=EMStartStep.Eのときのみ(nullでない場合は)使用する.</param> #else /// <summary> /// Constructor /// </summary> /// <param name="_nclusters">The number of mixtures. Some of EM implementation could determine the optimal number of mixtures within a specified value range, but that is not the case in ML yet. </param> /// <param name="_cov_mat_type">The type of the mixture covariation matrices</param> /// <param name="_start_step">The initial step the algorithm starts from</param> /// <param name="_term_crit">Termination criteria of the procedure. </param> /// <param name="_probs">Initial probabilities p_i,k; are used (and must be not null) only when start_step=EMStartStep.E. </param> /// <param name="_weights">Initial mixture weights π_k; are used (if not null) only when start_step=EMStartStep.E. </param> /// <param name="_means">Initial mixture means a_k; are used (and must be not null) only when start_step=EMStartStep.E. </param> /// <param name="_covs">Initial mixture covariation matrices S_k; are used (if not null) only when start_step=EMStartStep.E. </param> #endif public CvEMParams(int _nclusters, EMCovMatType _cov_mat_type, EMStartStep _start_step, CvTermCriteria _term_crit, CvMat _probs, CvMat _weights, CvMat _means, CvMat[] _covs ) { unsafe { _data = new WCvEMParams() { nclusters = _nclusters, cov_mat_type = (int)_cov_mat_type, start_step = (int)_start_step, term_crit = _term_crit, probs = (_probs == null) ? null : _probs.CvPtr.ToPointer(), weights = (_weights == null) ? null : _weights.CvPtr.ToPointer(), means = (_means == null) ? null : _means.CvPtr.ToPointer(), //covs = (_means == null) ? null : (void**)_means.CvPtr, }; } Covs = _covs; }