public ClusterAlgorithm(Set set, Proximity diss) { if (set == null || diss == null) throw new ArgumentNullException("Parametro Incorrecto en el constructor de la clase ClusterAlgorithm"); this.Set = set; this.Proximity = diss; }
public ClusterAlgorithm(Set set, Proximity diss) { if (set == null || diss == null) { throw new ArgumentNullException("Parametro Incorrecto en el constructor de la clase ClusterAlgorithm"); } this.Set = set; this.Proximity = diss; }
//OJO Excepciones porque dice que no puede acceder al fichero porque esta siendo usado por otro proceso //tbn da Excepcion porque dice que no existe el fichero. //Parece que el metis se demora un poco creandolo, debe ser algo de eso, y lo crea pero despues parece que empieza //a escribir sobre el y entonces es que me da la otra excepcion de que esta siendo usado por otra persona, es que todo //ocurre muy rapido, NUNCA ME HA DADO EXCEPCION EN EL MODO DEBUG public static Structuring BuildStructuringFromOutputFile(string inputfilename, Set Set, int ClustersCount, Proximity Proximity) { try { string folderpath = Utils.ExesFolderPath; string filename = inputfilename + ".part." + ClustersCount; string filepath = folderpath + Path.DirectorySeparatorChar + filename; //Dar tiempo a que el algoritmo Metis cree el fichero while (!File.Exists(filepath)) { } FileStream fs = null; bool ok = false; //Dar tiempo a que el algoritmo Metis termine de escribir sobre el fichero de salida while (!ok) { try { fs = new FileStream(filepath, FileMode.Open, FileAccess.Read); ok = true; } catch { } } StreamReader sr = new StreamReader(fs); Dictionary <string, Cluster> dic_clusters; try { //Crear Dictionary<string,Cluster> para poder construir la particion dic_clusters = new Dictionary <string, Cluster>(); string line; int vertex = 0; while ((line = sr.ReadLine()) != null) { int cluster = int.Parse(line); string nameOfCluster = "C-" + cluster; if (dic_clusters.ContainsKey(nameOfCluster)) { dic_clusters[nameOfCluster].AddElement(Set[vertex]); } else { Cluster c = new Cluster(nameOfCluster); c.AddElement(Set[vertex]); dic_clusters.Add(nameOfCluster, c); } vertex++; } } catch (Exception ex) { throw new Exception("Formato incorrecto del fichero de salida del algoritmo METIS \r\nInformacion Adicional: " + ex.Message); } finally { sr.Close(); fs.Close(); //Eliminar el fichero de entrada File.Delete(ExesFolderPath + Path.DirectorySeparatorChar + inputfilename); //Eliminar el fichero de salida File.Delete(filepath); } //Los numeros de las particiones comienzan con cero hasta el numero de particiones menos uno[0,...,P-1] return(new Partition() { Clusters = dic_clusters, Proximity = Proximity }); } catch { return(null); } }
public SPSegmentor(Set set, Proximity diss) : base(set, diss) { Name = "Super-pixel Segmentor"; ProximityType = ProximityType.Dissimilarity; }
public AgglomerativeWithLifetime(Set set, Proximity diss) : base(set, diss) { Name = "Agglomerative with Lifetime"; }
public NonHierarchical(Set set, Proximity diss) : base(set, diss) { Name = "Non Hierarchical"; }
public DivisiveWithLifetime(Set set, Proximity diss) : base(set, diss) { Name = "Divisive with Lifetime"; }
public Divisive(Set set, Proximity diss) : base(set, diss) { Name = "Divisive"; }
public Agglomerative(Set set, Proximity diss) : base(set, diss) { Name = "Agglomerative"; }
//OJO Excepciones porque dice que no puede acceder al fichero porque esta siendo usado por otro proceso //tbn da Excepcion porque dice que no existe el fichero. //Parece que el metis se demora un poco creandolo, debe ser algo de eso, y lo crea pero despues parece que empieza //a escribir sobre el y entonces es que me da la otra excepcion de que esta siendo usado por otra persona, es que todo //ocurre muy rapido, NUNCA ME HA DADO EXCEPCION EN EL MODO DEBUG public static Structuring BuildStructuringFromOutputFile(string inputfilename, Set Set, int ClustersCount, Proximity Proximity) { try { string folderpath = Utils.ExesFolderPath; string filename = inputfilename + ".part." + ClustersCount; string filepath = folderpath + Path.DirectorySeparatorChar + filename; //Dar tiempo a que el algoritmo Metis cree el fichero while (!File.Exists(filepath)) { } FileStream fs = null; bool ok = false; //Dar tiempo a que el algoritmo Metis termine de escribir sobre el fichero de salida while (!ok) { try { fs = new FileStream(filepath, FileMode.Open, FileAccess.Read); ok = true; } catch { } } StreamReader sr = new StreamReader(fs); Dictionary<string, Cluster> dic_clusters; try { //Crear Dictionary<string,Cluster> para poder construir la particion dic_clusters = new Dictionary<string, Cluster>(); string line; int vertex = 0; while ((line = sr.ReadLine()) != null) { int cluster = int.Parse(line); string nameOfCluster = "C-" + cluster; if (dic_clusters.ContainsKey(nameOfCluster)) { dic_clusters[nameOfCluster].AddElement(Set[vertex]); } else { Cluster c = new Cluster(nameOfCluster); c.AddElement(Set[vertex]); dic_clusters.Add(nameOfCluster, c); } vertex++; } } catch (Exception ex) { throw new Exception("Formato incorrecto del fichero de salida del algoritmo METIS \r\nInformacion Adicional: " + ex.Message); } finally { sr.Close(); fs.Close(); //Eliminar el fichero de entrada File.Delete(ExesFolderPath + Path.DirectorySeparatorChar + inputfilename); //Eliminar el fichero de salida File.Delete(filepath); } //Los numeros de las particiones comienzan con cero hasta el numero de particiones menos uno[0,...,P-1] return new Partition() { Clusters = dic_clusters, Proximity = Proximity }; } catch { return null; } }
public SPSegmentorKFIJO(Set set, Proximity diss) : base(set, diss) { Name = "Super-pixel Segmentor"; ProximityType = ProximityType.Dissimilarity; }
public Hierarchical(Set set, Proximity diss) : base(set, diss) { Name = "Hierarchical"; }