You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
2.2 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. package main
  2. import (
  3. "fmt"
  4. "image"
  5. "io/ioutil"
  6. "strconv"
  7. "strings"
  8. )
  9. //each image is [][]float64, is a array of pixels
  10. type ImgDataset [][][]float64
  11. type Dataset map[string]ImgDataset
  12. func byteArrayToFloat64Array(b []byte) []float64 {
  13. var f []float64
  14. for i := 0; i < len(b); i++ {
  15. val, _ := strconv.ParseFloat(string(b[i]), 64)
  16. f = append(f, val)
  17. }
  18. return f
  19. }
  20. func readImage(path string) image.Image {
  21. //open image file
  22. dat, err := ioutil.ReadFile(path)
  23. check(err)
  24. pathSplited := strings.Split(path, ".")
  25. imageExtension := pathSplited[len(pathSplited)-1]
  26. imageRaw, err := dataToImage(dat, imageExtension)
  27. check(err)
  28. //resize the image to standard size
  29. image := Resize(imageRaw)
  30. return image
  31. /*
  32. //convert the image to histogram(RGBA)
  33. histogram := imageToHistogram(image)
  34. return histogram
  35. */
  36. }
  37. func readDataset(path string) []Dataset {
  38. var resultDatasets []Dataset
  39. dataset := make(Dataset)
  40. datasetED := make(Dataset)
  41. /*
  42. datasetG := make(Dataset)
  43. */
  44. folders, _ := ioutil.ReadDir(path)
  45. for _, folder := range folders {
  46. fmt.Println(folder.Name())
  47. var imgDataset ImgDataset
  48. var imgDatasetED ImgDataset
  49. /*
  50. var imgDatasetG ImgDataset
  51. */
  52. folderFiles, _ := ioutil.ReadDir(path + "/" + folder.Name())
  53. for _, file := range folderFiles {
  54. //get the image as original
  55. image := readImage(path + "/" + folder.Name() + "/" + file.Name())
  56. histogram := imageToHistogram(image)
  57. imgDataset = append(imgDataset, histogram)
  58. //get the image with EdgeDetection filter
  59. imageED := EdgeDetection(image)
  60. histogramED := imageToHistogram(imageED)
  61. imgDatasetED = append(imgDatasetED, histogramED)
  62. /*
  63. //get the image with Grayscale filter
  64. imageG := Grayscale(image)
  65. histogramG := imageToHistogram(imageG)
  66. imgDatasetG = append(imgDatasetG, histogramG)
  67. */
  68. }
  69. //add the foldername to the Dataset map
  70. dataset[folder.Name()] = imgDataset
  71. datasetED[folder.Name()] = imgDatasetED
  72. /*
  73. datasetG[folder.Name()] = imgDatasetG
  74. */
  75. }
  76. resultDatasets = append(resultDatasets, dataset)
  77. resultDatasets = append(resultDatasets, datasetED)
  78. /*
  79. resultDatasets = append(resultDatasets, datasetG)
  80. */
  81. return resultDatasets
  82. }