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