示例#1
0
        //zrobienie obrazow z plikow
        private static TextureImage GetImage(string name, bool ifTime, bool ifDFT)
        {
            Bitmap labelbmp = new Bitmap(name);

            double[,] labelPhoto = new double[labelbmp.Height, labelbmp.Width];

            for (int i = 0; i < labelbmp.Height; i++)
            {
                for (int j = 0; j < labelbmp.Width; j++)
                {
                    labelPhoto[i, j] = labelbmp.GetPixel(i, j).R; //tu nie dziele jeszcze
                }
            }

            TextureImage img = new TextureImage();

            img.Image = labelPhoto;
            img.Label = name;
            return(img);
        }
示例#2
0
        //przypisanie labeli dla danych par obraz testowy - obraz z odpowiednimi labelami
        private static List <BasicImage> LabelImages(Tuple <TextureImage, TextureImage> tuple, bool ifTime, bool ifDFT)
        {
            TextureImage label = tuple.Item1;
            TextureImage test  = tuple.Item2;

            List <BasicImage> list = new List <BasicImage>();
            int division           = 8; //8 kolumn i 8 rzedow - 64 kwadraty
            int squareHeight       = label.Image.GetLength(0) / division;
            int squareWidth        = label.Image.GetLength(1) / division;

            int squareWidthNumber  = 0;
            int squareHeightNumber = 0;

            string labelName = "notLabeled";
            double topColor  = 0;

            int k = 0;

            while (squareWidthNumber < division && squareHeightNumber < division)
            {
                //szukanie najczesciej wystepujacego koloru w kwadracie
                List <double> colors = new List <double>();
                for (int x = squareHeight * squareHeightNumber; x < squareHeight * (squareHeightNumber + 1); x++)
                {
                    for (int y = squareWidth * squareWidthNumber; y < squareWidth * (squareWidthNumber + 1); y++)
                    {
                        colors.Add(label.Image[x, y]);
                    }
                }

                //wybranie najczestszego
                topColor = colors.GroupBy(i => i).OrderByDescending(grp => grp.Count()).Select(grp => grp.Key).First();

                if (topColor == 224)
                {
                    labelName = "linen";
                }
                if (topColor == 160)
                {
                    labelName = "salt";
                }
                if (topColor == 96)
                {
                    labelName = "straw";
                }
                if (topColor == 32)
                {
                    labelName = "wood";
                }

                //Debug.WriteLine("Dodano label: " + labelName);

                //kwadrat 64 z testowego zbioru z labelem ktory ostatecznie trafia do listy
                double[,] photo = new double[squareHeight, squareWidth];

                for (int i = 0; i < squareHeight; i++)
                {
                    for (int j = 0; j < squareWidth; j++)
                    {
                        photo[i, j] = test.Image[i + squareHeight * squareHeightNumber, j + squareWidth * squareWidthNumber] / 255.0; //wczesniej nie bylo konwersji
                    }
                }

                TextureImage texture = new TextureImage(photo, labelName, ifTime, ifDFT);
                list.Add(texture);
                //texture.SaveToFile();

                Console.WriteLine("Dodano testowy obrazek: " + k + "/" + division * division);
                k++;

                squareWidthNumber++;
                if (squareWidthNumber == division)
                {
                    squareWidthNumber = 0;
                    squareHeightNumber++;
                }
            }
            return(list);
        }
示例#3
0
        public static List <BasicImage> TestImages(bool ifTime, bool ifDFT)
        {
            List <BasicImage> Photos = new List <BasicImage>(); //ostateczna lista

            TextureImage label1 = new TextureImage();
            TextureImage test1  = new TextureImage();
            TextureImage label2 = new TextureImage();
            TextureImage test2  = new TextureImage();
            TextureImage label3 = new TextureImage();
            TextureImage test3  = new TextureImage();

            string[] testPhotos = Directory.GetFiles("texture-test/");

            foreach (string name in testPhotos)
            {
                switch (name)
                {
                case "texture-test/label1.bmp":
                    label1 = GetImage(name, ifTime, ifDFT);
                    break;

                case "texture-test/test1.bmp":
                    test1 = GetImage(name, ifTime, ifDFT);
                    break;

                case "texture-test/label2.bmp":
                    label2 = GetImage(name, ifTime, ifDFT);
                    break;

                case "texture-test/test2.bmp":
                    test2 = GetImage(name, ifTime, ifDFT);
                    break;

                case "texture-test/label3.bmp":
                    label3 = GetImage(name, ifTime, ifDFT);
                    break;

                case "texture-test/test3.bmp":
                    test3 = GetImage(name, ifTime, ifDFT);
                    break;
                }
            }

            Tuple <TextureImage, TextureImage> tuple1 = new Tuple <TextureImage, TextureImage>(label1, test1);
            Tuple <TextureImage, TextureImage> tuple2 = new Tuple <TextureImage, TextureImage>(label2, test2);
            Tuple <TextureImage, TextureImage> tuple3 = new Tuple <TextureImage, TextureImage>(label3, test3);

            Photos.AddRange(LabelImages(tuple1, ifTime, ifDFT));
            Console.WriteLine("Pierwszy obraz testowy wczytany");
            Photos.AddRange(LabelImages(tuple2, ifTime, ifDFT));
            Console.WriteLine("Drugi obraz testowy wczytany");
            Photos.AddRange(LabelImages(tuple3, ifTime, ifDFT));
            Console.WriteLine("Trzeci obraz testowy wczytany");

            Stream          stream    = File.Open("TestTextures.xml", FileMode.Create);
            BinaryFormatter formatter = new BinaryFormatter();

            formatter.Serialize(stream, Photos);
            stream.Close();

            return(Photos);
        }