Spaces:
Sleeping
Sleeping
| import numpy as np | |
| from skimage import io | |
| from skimage.transform import resize | |
| import matplotlib.pyplot as plt | |
| import glob | |
| import h5py | |
| class MoleImages(): | |
| def __init__(self, dir=None): | |
| self.dir = dir | |
| self.size = None | |
| def resize_bulk(self, size=(128,128)): | |
| ''' | |
| Resize Images and create matrix | |
| Input: size of the images (128,128) | |
| Output: Numpy array of (size,num_images) | |
| ''' | |
| self.size = size | |
| X = [] | |
| image_list = glob.glob(self.dir) | |
| n_images = len(image_list) | |
| print('Resizing {} images:'.format(n_images)) | |
| for i, imgfile in enumerate(image_list): | |
| print('Resizing image {} of {}'.format(i+1, n_images)) | |
| img = io.imread(imgfile) | |
| img = resize(img, self.size) | |
| X.append(img) | |
| return np.array(X) | |
| def load_test_images(self, dir_b, dir_m): | |
| X = [] | |
| image_list_b = glob.glob(dir_b + '/*.png') | |
| n_images_b = len(image_list_b) | |
| print('Loading {} images of class benign:'.format(n_images_b)) | |
| for i, imgfile in enumerate(image_list_b): | |
| print('Loading image {} of {}'.format(i+1, n_images_b)) | |
| img = io.imread(imgfile) | |
| X.append(img) | |
| image_list_m = glob.glob(dir_m + '/*.png') | |
| n_images_m = len(image_list_m) | |
| print('Loading {} images of class benign:'.format(n_images_m)) | |
| for i, imgfile in enumerate(image_list_m): | |
| print('Loading image {} of {}'.format(i+1, n_images_m)) | |
| img = io.imread(imgfile) | |
| X.append(img) | |
| y = np.hstack((np.zeros(n_images_b), np.ones(n_images_m))) | |
| return np.array(X), y.reshape(len(y),1) | |
| def load_image_from_filename(self, filename, size=(128,128)): | |
| self.size = size | |
| img = io.imread(filename) | |
| img = resize(img, self.size, mode='constant') * 255 | |
| if img.shape[2] == 4: | |
| img = img[:,:,0:3] | |
| return img.reshape(1, self.size[0], self.size[1], 3) | |
| def load_image(self, img, size=(128,128)): | |
| self.size = size | |
| img = resize(img, self.size, mode='constant', anti_aliasing=True, | |
| anti_aliasing_sigma=None) * 255 | |
| if img.shape[2] == 4: | |
| img = img[:, :, 0:3] | |
| return img.reshape(1, self.size[0], self.size[1], 3) | |
| def save_h5(self, X, filename, dataset): | |
| ''' | |
| Save a numpy array to a data.h5 file specified. | |
| Input: | |
| X: Numpy array to save | |
| filename: name of h5 file | |
| dataset: label for the dataset | |
| ''' | |
| with h5py.File(filename, 'w') as hf: | |
| hf.create_dataset(dataset, data=X) | |
| print('File {} saved'.format(filename)) | |
| def load_h5(self, filename, dataset): | |
| ''' | |
| Load a data.h5 file specified. | |
| Input: filename, dataset | |
| Output: Data | |
| ''' | |
| with h5py.File(filename, 'r') as hf: | |
| return hf[dataset][:] | |
| def save_png(self, matrix, dir, tag='img', format='png'): | |
| for i, img in enumerate(matrix): | |
| if dir[-1] != '/': | |
| filename = dir + '/' + tag + str(i) + '.' + format | |
| else: | |
| filename = dir + tag + str(i) + '.' + format | |
| print('Saving file {}'.format(filename)) | |
| io.imsave(filename, img) | |
| if __name__ == '__main__': | |
| # benign = MoleImages('data/malignant/*.jpg') | |
| # ben_images = benign.resize_bulk() | |
| # print('Shape of benign images: ', ben_images.shape) | |
| # benign.save_h5(ben_images, 'benigns.h5', 'benign') | |
| benign = MoleImages() | |
| X = benign.load_h5('benigns.h5','benign') | |