private void button1_Click(object sender, EventArgs e) { Idx = (Idx + 1) % 9; Left = new Image <Rgb, byte>((Idx + 1) + "right.png").Resize(320, 240, INTER.CV_INTER_NN); Right = new Image <Rgb, byte>((Idx + 1) + "left.png").Resize(320, 240, INTER.CV_INTER_NN); Network = new MarkovNetwork(Left, Right); while (Network.Step > 1) { LogProbability maxProb = LogProbability.Zero; int afterMaxStepsCount = 0; while (afterMaxStepsCount < 5) { afterMaxStepsCount++; Network.HiggsStep(); UpdateImage(); var prob = Network.GetPotential(); if (prob > maxProb) { maxProb = prob; afterMaxStepsCount = 0; } } Network.ReduceStep(); } for (int i = 0; i < 100; i++) { Network.HiggsStep(); UpdateImage(); } }
public string PrintLogProbability() { StringBuilder sb = new StringBuilder(); int iteration = 1; sb.Append("Log Probability for iteration " + iteration.ToString().PadLeft(2) + ": "); sb.Append(LogProbability.ToString("F10")); sb.AppendLine(); return(sb.ToString()); }
public LogProbability GetPotential() { LogProbability prob = LogProbability.One; for (int y = 0; y < RightMap.GetLength(0); y += Step) { for (int x = 0; x < RightMap.GetLength(1); x += Step) { prob *= Net[y, x].GetRightDownProb(); } } return(prob); }