abhishekrs4's picture
added image_colourization_cgan module
4a5aa3d
import os
import skimage
import numpy as np
from skimage.transform import resize
from skimage.io import imread, imsave
from skimage.color import rgb2lab, lab2rgb, rgb2gray
def resize_image(img, image_size=(320, 320)):
"""
---------
Arguments
---------
img : ndarray
ndarray of shape (H, W, 3) or (H, W) i.e. RGB and grayscale respectively
image_size : tuple of ints
image size to be used for resizing
-------
Returns
-------
resized image ndarray of shape (H_resized, W_resized, 3) or (H_resized, W_resized)
if RGB returns resized image ndarray in range [0, 255]
if grasycale returns resized image ndarray in range [0, 1]
"""
img_resized = resize(img, image_size)
return img_resized
def convert_rgb2gray(img_rgb):
"""
---------
Arguments
---------
img_rgb : ndarray
ndarray of shape (H, W, 3) i.e. RGB
-------
Returns
-------
grayscale image ndarray of shape (H, W)
"""
img_gray = rgb2gray(img_rgb)
return img_gray
def convert_lab2rgb(img_lab):
"""
---------
Arguments
---------
img_lab : ndarray
ndarray of shape (H, W, 3) i.e. Lab
-------
Returns
-------
RGB image ndarray of shape (H, W, 3) i.e. RGB space
"""
img_rgb = lab2rgb(img_lab)
return img_rgb
def convert_rgb2lab(img_rgb):
"""
---------
Arguments
---------
img_rgb : ndarray
ndarray of shape (H, W, 3) i.e. RGB
-------
Returns
-------
Lab image ndarray of shape (H, W, 3) i.e. Lab space
"""
img_lab = rgb2lab(img_rgb)
return img_lab
def apply_image_ab_post_processing(img_ab):
"""
---------
Arguments
---------
img_ab : ndarray
pre-processed ndarray of shape (H, W, 2) i.e. ab channels in Lab space in range [-1, 1]
-------
Returns
-------
post-processed ab channels ndarray of shape (H, W, 2) in range [-110, 110]
"""
img_ab = img_ab * 110.0
return img_ab
def apply_image_l_pre_processing(img_l):
"""
---------
Arguments
---------
img_l : ndarray
ndarray of shape (H, W) i.e. L channel in Lab space in range [0, 100]
-------
Returns
-------
pre-processed L channel ndarray of shape (H, W) in range [-1, 1]
"""
img_l = (img_l / 50.0) - 1
return img_l
def apply_image_ab_pre_processing(img_ab):
"""
---------
Arguments
---------
img_ab : ndarray
ndarray of shape (H, W, 2) i.e. ab channels in Lab space in range [-110, 110]
-------
Returns
-------
pre-processed ab channels ndarray of shape (H, W, 2) in range [-1, 1]
"""
img_ab = (img_ab) / 110.0
return img_ab
def concat_images_l_ab(img_l, img_ab):
"""
---------
Arguments
---------
img_l : ndarray
ndarray of shape (H, W, 1) i.e. L channel
img_ab : ndarray
ndarray of shape (H, W, 2) i.e. ab channels
-------
Returns
-------
Lab space ndarray of shape (H, W, 3)
"""
img_lab = np.concatenate((img_l, img_ab), axis=-1)
return img_lab
def read_image(file_img):
"""
---------
Arguments
---------
file_img : str
full path of the image
-------
Returns
-------
ndarray of shape (H, W, 3) for RGB or (H, W) for grayscale
"""
img = imread(file_img)
return img
def save_image_rgb(file_img, img_arr):
"""
---------
Arguments
---------
file_img : str
full path of the image
img_arr : ndarray
image ndarray to be saved, of shape (H, W, 3) for RGB or (H, W) for grasycale
"""
imsave(file_img, img_arr)
return
def rescale_grayscale_image_l_channel(img_gray):
"""
---------
Arguments
---------
img_gray : ndarray
grayscale image of shape (H, W) in range [0, 1]
-------
Returns
-------
L channel ndarray of shape (H, W) in range [0, 100]
"""
img_l_rescaled = (img_gray) * 100.0
return img_l_rescaled