|
- import numpy as np
- import cv2
- from scipy import ndimage
- def get_normal_map(img):
- img = img.astype(np.float)
- img = img / 255.0
- img = - img + 1
- img[img < 0] = 0
- img[img > 1] = 1
- return img
-
-
- def get_gray_map(img):
- gray = cv2.cvtColor(img.astype(np.uint8), cv2.COLOR_BGR2GRAY)
- highPass = gray.astype(np.float)
- highPass = highPass / 255.0
- highPass = 1 - highPass
- highPass = highPass[None]
- return highPass.transpose((1, 2, 0))
-
-
- def get_light_map(img):
- gray = cv2.cvtColor(img.astype(np.uint8), cv2.COLOR_BGR2GRAY)
- blur = cv2.GaussianBlur(gray, (0, 0), 3)
- highPass = gray.astype(int) - blur.astype(int)
- highPass = highPass.astype(np.float)
- highPass = highPass / 128.0
- highPass = highPass[None]
- return highPass.transpose((1, 2, 0))
-
-
- def get_light_map_single(img):
- gray = img
- gray = gray[None]
- gray = gray.transpose((1, 2, 0))
- blur = cv2.GaussianBlur(gray, (0, 0), 3)
- gray = gray.reshape((gray.shape[0], gray.shape[1]))
- highPass = gray.astype(int) - blur.astype(int)
- highPass = highPass.astype(np.float)
- highPass = highPass / 128.0
- return highPass
-
-
- def get_light_map_drawer(img):
- gray = cv2.cvtColor(img.astype(np.uint8), cv2.COLOR_BGR2GRAY)
- blur = cv2.GaussianBlur(gray, (0, 0), 3)
- highPass = gray.astype(int) - blur.astype(int) + 255
- highPass[highPass < 0] = 0
- highPass[highPass > 255] = 255
- highPass = highPass.astype(np.float)
- highPass = highPass / 255.0
- highPass = 1 - highPass
- highPass = highPass[None]
- return highPass.transpose((1, 2, 0))
-
-
- def get_light_map_drawer2(img):
- ret = img.copy()
- ret = ret.astype(np.float)
- ret[:, :, 0] = get_light_map_drawer3(img[:, :, 0])
- ret[:, :, 1] = get_light_map_drawer3(img[:, :, 1])
- ret[:, :, 2] = get_light_map_drawer3(img[:, :, 2])
- ret = np.amax(ret, 2)
- return ret
-
-
- def get_light_map_drawer3(img):
- gray = img
- blur = cv2.blur(gray, ksize=(5, 5))
- highPass = gray.astype(int) - blur.astype(int) + 255
- highPass[highPass < 0] = 0
- highPass[highPass > 255] = 255
- highPass = highPass.astype(np.float)
- highPass = highPass / 255.0
- highPass = 1 - highPass
- return highPass
-
-
- def normalize_pic(img):
- img = img / np.max(img)
- return img
-
-
- def superlize_pic(img):
- img = img * 2.33333
- img[img > 1] = 1
- return img
-
-
- def mask_pic(img, mask):
- mask_mat = mask
- mask_mat = mask_mat.astype(np.float)
- mask_mat = cv2.GaussianBlur(mask_mat, (0, 0), 1)
- mask_mat = mask_mat / np.max(mask_mat)
- mask_mat = mask_mat * 255
- mask_mat[mask_mat < 255] = 0
- mask_mat = mask_mat.astype(np.uint8)
- mask_mat = cv2.GaussianBlur(mask_mat, (0, 0), 3)
- mask_mat = get_gray_map(mask_mat)
- mask_mat = normalize_pic(mask_mat)
- mask_mat = resize_img_512(mask_mat)
- super_from = np.multiply(img, mask_mat)
- return super_from
-
-
- def resize_img_512(img):
- zeros = np.zeros((512, 512, img.shape[2]), dtype=np.float)
- zeros[:img.shape[0], :img.shape[1]] = img
- return zeros
-
-
- def resize_img_512_3d(img):
- zeros = np.zeros((1, 3, 512, 512), dtype=np.float)
- zeros[0, 0: img.shape[0], 0: img.shape[1], 0: img.shape[2]] = img
- return zeros.transpose((1, 2, 3, 0))
-
-
- def denoise_mat(img, i):
- return ndimage.median_filter(img, i)
-
-
- def show_active_img_and_save_denoise(img, path):
- mat = img.astype(np.float)
- mat = - mat + 1
- mat = mat * 255.0
- mat[mat < 0] = 0
- mat[mat > 255] = 255
- mat = mat.astype(np.uint8)
- mat = ndimage.median_filter(mat, 1)
- cv2.imwrite(path, mat)
- return
-
-
-
-
- def show_active_img(name, img):
- mat = img.astype(np.float)
- mat = - mat + 1
- mat = mat * 255.0
- mat[mat < 0] = 0
- mat[mat > 255] = 255
- mat = mat.astype(np.uint8)
- cv2.imshow(name, mat)
- return
-
-
- def get_active_img(img):
- mat = img.astype(np.float)
- mat = - mat + 1
- mat = mat * 255.0
- mat[mat < 0] = 0
- mat[mat > 255] = 255
- mat = mat.astype(np.uint8)
- return mat
-
-
- def get_active_img_fil(img):
- mat = img.astype(np.float)
- mat[mat < 0.18] = 0
- mat = - mat + 1
- mat = mat * 255.0
- mat[mat < 0] = 0
- mat[mat > 255] = 255
- mat = mat.astype(np.uint8)
- return mat
-
-
- def show_double_active_img(name, img):
- mat = img.astype(np.float)
- mat = mat * 128.0
- mat = mat + 127.0
- mat[mat < 0] = 0
- mat[mat > 255] = 255
- cv2.imshow(name, mat.astype(np.uint8))
- return
-
-
- def debug_pic_helper():
- for index in range(1130):
- gray_path = 'data\\gray\\' + str(index) + '.jpg'
- color_path = 'data\\color\\' + str(index) + '.jpg'
-
- mat_color = cv2.imread(color_path)
- mat_color = get_light_map(mat_color)
- mat_color = normalize_pic(mat_color)
- mat_color = resize_img_512(mat_color)
- show_double_active_img('mat_color', mat_color)
-
- mat_gray = cv2.imread(gray_path)
- mat_gray = get_gray_map(mat_gray)
- mat_gray = normalize_pic(mat_gray)
- mat_gray = resize_img_512(mat_gray)
- show_active_img('mat_gray', mat_gray)
-
- cv2.waitKey(1000)
|