private void FSI_Button_Click(object sender, RoutedEventArgs e) { var watch = Stopwatch.StartNew(); Gist gist = new Gist(); GistContainer gistcontainer = new GistContainer(); System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; gist.LMgist("D:/Codes/Petrel 2015 Plugin/LMgistPlugin1/Tester1/Resources/demo1.jpg", ref gistcontainer, 1); gist.LMgist("D:/Codes/Petrel 2015 Plugin/LMgistPlugin1/Tester1/Resources/demo3.jpg", ref gistcontainer, 2); System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default; watch.Stop(); var elapsedSec = watch.ElapsedMilliseconds / 1000.0; Console.Write("Distance13 : {0} elapsed time: {1}", gist.FindDistance(gistcontainer), elapsedSec); using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"D:/Codes/Petrel 2015 Plugin/LMgistPlugin1/Tester1/Resources/result.txt", true)) { file.WriteLine("Distance13 : {0} elapsed time: {1}", gist.FindDistance(gistcontainer), elapsedSec); } //gist.Print2DArray(gistcontainer.refImage, gistcontainer.refImageRows, gistcontainer.refImageCols); //gist.Print2DArray(gistcontainer.secondImage, gistcontainer.secondImageRows, gistcontainer.secondImageCols); Console.ReadKey(); }
private void FSI_Button_Click(object sender, RoutedEventArgs e) { Gist gist = new Gist(); var refgistdata = new GistData(); //System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.Title = "Locate the file to compare"; DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog. if (result == System.Windows.Forms.DialogResult.OK) // Test result. { string refImage = openFileDialog1.FileName; Image i = new Image(); BitmapImage src = new BitmapImage(); src.BeginInit(); src.UriSource = new Uri(refImage, UriKind.Relative); src.CacheOption = BitmapCacheOption.OnLoad; src.EndInit(); i.Source = src; i.Stretch = Stretch.Uniform; //int q = src.PixelHeight; // Image loads here sp0.Children.Clear(); // clear previous image sp0.Children.Add(i); gist.defaultOutputDirectory = defaultOutputDirectory; System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; gist.LMgist(refImage, true); refgistdata = gist.refImgGistData; globalrefgistdata = refgistdata; //save it for KNN Console.WriteLine("Done reading reference"); //Now compare refImage with precomputed gists FolderBrowserDialog infbd = new FolderBrowserDialog(); infbd.Description = "Select the directory that contains precomputed Image gists"; DialogResult result1 = infbd.ShowDialog(); if (result1 == System.Windows.Forms.DialogResult.OK) // Test result1. { string[] files = Directory.GetFiles(infbd.SelectedPath); List <GistData> gistdataforSort = new List <GistData>(); foreach (string path in files) { if (File.Exists(path)) { // This path is a file var gistdata = gist.JsonRead(path); var distance = gist.FindDistance(refgistdata, gistdata); var gistdataWithoutValue = new GistData(distance, gistdata.filename, gistdata.metadata); gistdataforSort.Add(gistdataWithoutValue); using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"D:/result.txt", true)) { file.WriteLine("{0} {1} {2}", distance, gistdata.filename, gistdata.metadata); } Console.WriteLine("D= {0} File= {1}", gist.FindDistance(refgistdata, gistdata), gistdata.filename); } else { Console.WriteLine("{0} is not a valid file or directory.", path); } } Console.WriteLine("Done FSI"); globalgistdatalist = gistdataforSort.OrderBy(o => o.distance).ToList(); //Now load the files in the stack panel for (int j = 0; j < globalgistdatalist.Count; j++) { if (j > 0) { if (globalgistdatalist[j].filename == globalgistdatalist[j - 1].filename && globalgistdatalist[j].distance == globalgistdatalist[j - 1].distance) { continue; } } Image img = new Image(); BitmapImage source = new BitmapImage(); source.BeginInit(); source.UriSource = new Uri(globalgistdatalist[j].filename, UriKind.Relative); source.CacheOption = BitmapCacheOption.OnLoad; source.DecodePixelWidth = 200; source.DecodePixelHeight = 200; source.EndInit(); img.Source = source; img.Stretch = Stretch.UniformToFill; int qq = source.PixelHeight; // Image loads here System.Windows.Controls.ToolTip tooltip = new System.Windows.Controls.ToolTip(); tooltip.Content = globalgistdatalist[j].metadata; img.ToolTip = tooltip; //sp1.Children.Add(img); //lv1.Items.Add(img); //imgrid.Source = source; //System.Windows.Controls.CheckBox checkbox = new System.Windows.Controls.CheckBox(); //checkbox.HorizontalAlignment = HorizontalAlignment.Left; //checkbox.VerticalAlignment = VerticalAlignment.Bottom; System.Windows.Controls.RadioButton radio1like = new System.Windows.Controls.RadioButton(); System.Windows.Controls.RadioButton radio2dislike = new System.Windows.Controls.RadioButton(); radio1like.VerticalAlignment = VerticalAlignment.Bottom; radio1like.Content = "Yes"; radio2dislike.VerticalAlignment = VerticalAlignment.Bottom; radio2dislike.HorizontalAlignment = System.Windows.HorizontalAlignment.Right; radio2dislike.Content = "No"; var grid = new Grid(); grid.Children.Add(img); grid.Children.Add(radio1like); grid.Children.Add(radio2dislike); lv1.Items.Add(grid); //if (checkbox.IsChecked == true) //{ // globalgistdatalist[j].IsSimilar = 1; // imgrid.Source = source; //} //else // globalgistdatalist[j].IsSimilar = -1; if (radio1like.IsChecked == true) { globalgistdatalist[j].IsSimilar = 1; } else if (radio2dislike.IsChecked == true) { globalgistdatalist[j].IsSimilar = -1; } Console.WriteLine("FSI: " + globalgistdatalist[j].filename + " " + globalgistdatalist[j].IsSimilar + " distance :" + globalgistdatalist[j].distance); } } System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default; } }
private void PCG_Button_Click(object sender, RoutedEventArgs e) { Gist gist = new Gist(); FolderBrowserDialog infbd = new FolderBrowserDialog(); // Set the help text description for the FolderBrowserDialog. infbd.Description = "Select Input image directory"; DialogResult result = infbd.ShowDialog(); FolderBrowserDialog outfbd = new FolderBrowserDialog(); outfbd.Description = "Select Output directory to save the image gist"; DialogResult result1 = outfbd.ShowDialog(); gist.defaultOutputDirectory = outfbd.SelectedPath; gist.defaultOutputDirectory = gist.defaultOutputDirectory + "\\"; this.defaultOutputDirectory = gist.defaultOutputDirectory; string[] files = Directory.GetFiles(infbd.SelectedPath); string[] imageExtensionList = { ".jpg", ".jpeg", ".png", ".bmp" }; //first create gistdata for every image files foreach (string path in files) { if (File.Exists(path) && (hasExtension(System.IO.Path.GetExtension(path), imageExtensionList))) { gist.LMgist(path); } } //Now for every .metadata file, update the corresponding gistdata in defaultOutputDirectory string[] gistdatafiles = Directory.GetFiles(outfbd.SelectedPath); for (int i = 0; i < gistdatafiles.Length; i++) { gistdatafiles[i] = gistdatafiles[i].Replace(defaultOutputDirectory, ""); } foreach (string path in files) { if (File.Exists(path) && System.IO.Path.GetExtension(path).Equals(".metadata", StringComparison.OrdinalIgnoreCase)) { string folder = System.IO.Path.GetDirectoryName(path); folder = folder + "\\"; string metadataFilenameOnly = path.Replace(folder, "").Replace(".metadata", ""); string jfilename = defaultOutputDirectory + metadataFilenameOnly; if (File.Exists(jfilename) /*&& gistdatafiles.Contains(metadataFilenameOnly)*/) { string metadatatext = System.IO.File.ReadAllText(@path); var jsonMeta = JsonConvert.SerializeObject(metadatatext, Formatting.Indented); string json = File.ReadAllText(@defaultOutputDirectory + metadataFilenameOnly); dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(json); jsonObj["metadata"] = jsonMeta; string output = Newtonsoft.Json.JsonConvert.SerializeObject(jsonObj, Newtonsoft.Json.Formatting.Indented); File.WriteAllText(@jfilename, output); } } } // Recurse into subdirectories of this directory. string[] subdirectoryEntries = Directory.GetDirectories(infbd.SelectedPath); foreach (string subdirectory in subdirectoryEntries) { gist.ProcessDirectory(subdirectory, gist); } Console.WriteLine("Done precomputing"); }