Esempio n. 1
0
        static void Main2(string[] args)
        {
            String projectPath    = "C:/Users/Mateusz/Documents/Visual Studio 2012/Projects/ConsoleApplication1/ConsoleApplication1/bin/Debug/assets/p01/";
            String dirPath        = "";
            String filenamePrefix = "out_";
            String filenameExt    = "bmp";
            String path;
            int    t0 = 1;
            int    tk = 3;

            List <List <Point> > _points = new List <List <Point> >();
            List <Edge>          _edges  = new List <Edge>();

            int slices_count = tk - t0 + 1;

            for (int t = t0; t <= tk; ++t)
            {
                path         = projectPath + dirPath + filenamePrefix + t + "." + filenameExt;
                int[,] image = Reader.fromFile(path);
                Point[] points = ImageProcessing.getVertex(image);

                int image_w = image.GetLength(0);
                int image_h = image.GetLength(1);

                SortedDictionary <String, Point> dict = new SortedDictionary <string, Point>();
                foreach (Point p in points)
                {
                    double angle = Math.Atan2(p.y - image_h / 2, p.x - image_w / 2);
                    dict.Add(angle.ToString(), p);
                }

                /**
                 * Save each slice vertexes at list, contains of connected points (understand as edges)
                 */
                String       prevKey     = "";
                String       firstKey    = null;
                List <Point> slicePoints = new List <Point>();
                foreach (KeyValuePair <String, Point> entry in dict)
                {
                    if (firstKey == null)
                    {
                        firstKey = entry.Key;
                    }
                    if (!prevKey.Equals(""))
                    {
                        Point beforePoint;
                        dict.TryGetValue(prevKey, out beforePoint);

                        _edges.Add(new Edge(beforePoint, entry.Value));
                    }
                    slicePoints.Add(entry.Value);
                    prevKey = entry.Key;
                }
                _edges.Add(new Edge(dict[prevKey], dict[firstKey]));
                _points.Add(slicePoints);
                slicePoints.Clear();
            }

            /**
             *
             * Now _edges stores all edges for loaded object, retrives by alone points. What about two white blobs? Region growing based algorithm.
             *
             */


            /**
             *
             * normalization
             *
             */
            //coordinates goes to around 0,0

            /**
             *
             * interpolation on z axis
             *
             */
        }