コード例 #1
0
ファイル: Form1.cs プロジェクト: G-NighT/Hopfield
        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;
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: G-NighT/Hopfield
        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;
        }
コード例 #3
0
ファイル: Form1.cs プロジェクト: G-NighT/Hopfield
        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);
        }
コード例 #4
0
ファイル: Form1.cs プロジェクト: G-NighT/Hopfield
 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);
 }
コード例 #5
0
ファイル: Form1.cs プロジェクト: G-NighT/Hopfield
 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);
         }
     }
 }