/// <summary>
        /// process ndwi image and extract streams
        /// </summary>
        static void StreamExtractionTest4LargeImage_BatchProcess()
        {
            string intputDirectoryName = @"~\StreamExtraction\output_ndwi\";

            string[] files = System.IO.Directory.GetFiles(intputDirectoryName);
            for (int i = 0; i < files.Length; i++)
            {
                if (System.IO.Path.GetExtension(files[i]) == ".img" && files[i].Contains("normalized_ratio_blue2_nir8"))
                {
                    Console.WriteLine("-------------------------------------------------");
                    Console.WriteLine("start process: {0}", files[i]);

                    //process ndwi image
                    StreamExtraction se = new StreamExtraction(files[i]);
                    se.ProcessLargeImage1Spectral2Edge(1.25f, EdgeDetector.Canny, 20, 40, 5, 7, 500, 1.10f, 5, 10, 1.45f);


                    Console.WriteLine("--------------------END--------------------------");
                }
            }
        }
        //only extract large streams
        static void ExtractLargeStreams(string inputFileName)
        {
            StreamExtraction se = new StreamExtraction(inputFileName);

            string outputFileName = (System.IO.Path.GetFileNameWithoutExtension(inputFileName).Split('-'))[0];

            // string path = System.IO.Path.GetDirectoryName(inputFileName) + "\\";
            string path = @"~\StreamExtraction\multioutput\watermask\";

            //increase this threshold for extracting lakes ~1.55
            //for streams, usually ~1.25; change for each strip
            float  globalThreshold = 1.25f;
            string gt = Convert.ToString(globalThreshold).Split('.')[0] + Convert.ToString(globalThreshold).Split('.')[1];

            //increase this threshold for extracting lakes, ~5000, something very large
            //for streams, usually ~500, change for each strip
            int    sizeThrshold = 500;
            string outputLargeRiverFileName_withoutFilter = path + outputFileName + "_" + Convert.ToString(gt) + "_" + Convert.ToString(sizeThrshold) + "_watermask.img";

            se.ExtractLargeStreams(globalThreshold, sizeThrshold, outputLargeRiverFileName_withoutFilter);

            GC.Collect();
            GC.WaitForPendingFinalizers();
        }