Beispiel #1
0
        private void Classify_btn_Click(object sender, EventArgs e)
        {
            using (Bitmap ResizedInput = new Bitmap(InputPictureBox.Image, 28, 28))
            {
                RawImage28x28 NewInput = new RawImage28x28(ResizedInput, null);
                NewInput.Print();

                Knn?.Classify(Convert.ToInt32(Knn_KValue_Textbox.Text), NewInput);
                Kmeans?.Classify(NewInput);
            }
        }
Beispiel #2
0
        //Refresh results
        private void Kmeans_OnClassify(RawImage28x28 NewNode, IEnumerable <RawImage28x28> OrderedCenter, string MostTag)
        {
            Image OldBitmap = KmeansResultPictureBox.Image;

            KmeansResultPictureBox.Image = OrderedCenter.First().ToBitmap();
            KmeansResultNum_Label.Text   = MostTag;

            var TrainResultsEnumerator = OrderedCenter.GetEnumerator();

            foreach (var KmeansTrainedDataView in KmeansTrainedDataViews)
            {
                if (TrainResultsEnumerator.MoveNext())
                {
                    var TrainResult = TrainResultsEnumerator.Current;
                    KmeansTrainedDataView.SetValue(TrainResult.ToBitmap(), TrainResult.Tag, TrainResult.GetEuclideanDistance(NewNode));
                }
            }

            OldBitmap?.Dispose();
        }
Beispiel #3
0
        private void Knn_OnClassify(RawImage28x28 NewNode, IEnumerable <RawImage28x28> ClosestKPoints, string MostTag, IEnumerable <RawImage28x28> ClassifiedNodes)
        {
            Image OldBitmap = KnnResultPictureBox.Image;

            KnnResultPictureBox.Image = ClosestKPoints.First().ToBitmap();
            KnnResultNum_Label.Text   = MostTag;

            StringBuilder sb        = new StringBuilder();
            var           OrderTags = ClosestKPoints.GroupBy(x => x.Tag).OrderByDescending(group => group.Count());

            foreach (var OrderedTag in OrderTags)
            {
                sb.Append("Tag:");
                sb.Append(OrderedTag.Key);
                sb.Append("\tCount:");
                sb.AppendLine(OrderedTag.Count().ToString());
            }

            ClosestKCount_RichTextbox.Text = sb.ToString();

            OldBitmap?.Dispose();
        }
Beispiel #4
0
        public static RawImage28x28[] LoadData(string pixelFilePath, string labelFilePath)
        {
            int numImages = 60000;

            RawImage28x28[] result = new RawImage28x28[numImages];

            FileStream ifsPixels = new FileStream(pixelFilePath, FileMode.Open);
            FileStream ifsLabels = new FileStream(labelFilePath, FileMode.Open);

            BinaryReader brImages = new BinaryReader(ifsPixels);
            BinaryReader brLabels = new BinaryReader(ifsLabels);

            int magic1 = brImages.ReadInt32(); // stored as Big Endian

            magic1 = ReverseBytes(magic1);     // convert to Intel format

            int imageCount = brImages.ReadInt32();

            imageCount = ReverseBytes(imageCount);

            int numRows = brImages.ReadInt32();

            numRows = ReverseBytes(numRows);
            int numCols = brImages.ReadInt32();

            numCols = ReverseBytes(numCols);

            int magic2 = brLabels.ReadInt32();

            magic2 = ReverseBytes(magic2);

            int numLabels = brLabels.ReadInt32();

            numLabels = ReverseBytes(numLabels);


            byte[] pixels = new byte[RawImage28x28.Height * RawImage28x28.Width];

            // each image
            for (int di = 0; di < numImages; ++di)
            {
                int cnt = 0;
                for (int i = 0; i < 28; ++i) // get 28x28 pixel values
                {
                    for (int j = 0; j < 28; ++j)
                    {
                        int b = brImages.ReadByte();
                        pixels[cnt++] = Convert.ToByte((b > 0 ? 255 : 0));
                    }
                }

                byte lbl = brLabels.ReadByte(); // get the label

                RawImage28x28 dImage = new RawImage28x28(pixels, lbl.ToString());
                result[di] = dImage;
            } // each image

            ifsPixels.Close(); brImages.Close();
            ifsLabels.Close(); brLabels.Close();

            return(result);
        } // LoadData