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.
 
 

74 lines
1.6 KiB

package main
import (
"fmt"
"image"
"io/ioutil"
"strconv"
"strings"
)
//each image is [][]float64, is a array of pixels
type ImgDataset [][][]float64
type Dataset map[string]ImgDataset
func byteArrayToFloat64Array(b []byte) []float64 {
var f []float64
for i := 0; i < len(b); i++ {
val, _ := strconv.ParseFloat(string(b[i]), 64)
f = append(f, val)
}
return f
}
func readImage(path string) image.Image {
//open image file
dat, err := ioutil.ReadFile(path)
check(err)
pathSplited := strings.Split(path, ".")
imageExtension := pathSplited[len(pathSplited)-1]
imageRaw, err := dataToImage(dat, imageExtension)
check(err)
//resize the image to standard size
image := Resize(imageRaw)
return image
/*
//convert the image to histogram(RGBA)
histogram := imageToHistogram(image)
return histogram
*/
}
func readDataset(path string) map[string]ImgDataset {
dataset := make(Dataset)
folders, _ := ioutil.ReadDir(path)
for _, folder := range folders {
fmt.Println(folder.Name())
var imgDataset ImgDataset
folderFiles, _ := ioutil.ReadDir(path + "/" + folder.Name())
for _, file := range folderFiles {
//get the image as original
image := readImage(path + "/" + folder.Name() + "/" + file.Name())
histogram := imageToHistogram(image)
//get the image with EdgeDetection filter
imageED := EdgeDetection(image)
histogramED := imageToHistogram(imageED)
imgDataset = append(imgDataset, histogram)
imgDataset = append(imgDataset, histogramED)
}
//add the foldername to the Dataset map
dataset[folder.Name()] = imgDataset
}
return dataset
}