private void RecognizeAndLoadPicture(Matrix recognizable) { // Берем 5 образцов - векторы длины, // кодированные биполярно, т.е. +1 и -1, // и распознаем "испорченный" образец - вектор той же длины. // Получаем матрицу, // умножаем ее на "испорченный" образец, // обрабатываем результат умножения (вектор) функцией знака SIGN, // и получаем подправленный образец. // Выполняем пока не получится. //Debug.WriteLine(recognizable.ToPrettyString()); Vector[] sampleVectors = bitmapFilePaths .Select(path => new Bitmap(path)) .Select(bitmap => bitmap.ToMatrix().ToVectorByColumns()) .ToArray(); Matrix weights = Recognizer.GenerateWeightsMatrix(sampleVectors); Vector inputVector = recognizable.ToVectorByColumns(); //Matrix recognized = Recognizer.RecognizeSynchronously(weights, inputVector, sampleVectors); Matrix recognized = Recognizer.RecognizeAsynchronously(weights, inputVector); Bitmap recognizedScaled = BitmapParser.Scale(recognized, times: DrawField.CellSize); picRecognized.Image = recognizedScaled; }
private void NoiseAndLoad(int pictureIndex) { int noise = trackBar1.Value; Bitmap noised = BitmapParser.Noise(new Bitmap(bitmapFilePaths[pictureIndex]), noise).ToBitmap(); Bitmap scaledNoised = BitmapParser.Scale(noised, times: DrawField.CellSize); picNoised.Image = scaledNoised; }
private void btnRecognizeNoised_Click(object sender, EventArgs e) { Matrix noised = BitmapParser.Noise(new Bitmap(GetSelectedBitmapFilePath()), ammount: trackBar1.Value); //Debug.WriteLine("На вход:"); //Debug.WriteLine(noised.ToPrettyString()); RecognizeAndLoadPicture(noised); }
private void LoadSamplePictures() { bitmapFilePaths = new[] { "m.bmp", "a.bmp", "k.bmp", "c.bmp", "i.bmp" }; picSample1.Image = BitmapParser.Scale(new Bitmap(bitmapFilePaths[0]), times: DrawField.CellSize); picSample2.Image = BitmapParser.Scale(new Bitmap(bitmapFilePaths[1]), times: DrawField.CellSize); picSample3.Image = BitmapParser.Scale(new Bitmap(bitmapFilePaths[2]), times: DrawField.CellSize); picSample4.Image = BitmapParser.Scale(new Bitmap(bitmapFilePaths[3]), times: DrawField.CellSize); picSample5.Image = BitmapParser.Scale(new Bitmap(bitmapFilePaths[4]), times: DrawField.CellSize); }
private void LoadImage(PictureBox pictureBox) { using (var ofd = new OpenFileDialog()) { if (ofd.ShowDialog() == DialogResult.OK) { string filePath = ofd.FileName; int index = int.Parse(pictureBox.Name.Substring(pictureBox.Name.Length - 1)) - 1; bitmapFilePaths[index] = filePath; pictureBox.Image = BitmapParser.Scale(new Bitmap(filePath), times: DrawField.CellSize); } } }