arnaucube
arnaucube/galdricPublic Self-hosted repository
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}