25dver1 / init.py
CoPilotXR's picture
Update init.py
34d5e67 verified
import os
from typing import Tuple
import cv2
import numpy.typing as npt
from config import (
NormalMapGenerator,
Planes,
RGBFlatten,
artifactFlatten,
grayscaleInv,
heightCreation,
kernels,
stampFill,
valueFill,
)
class Init_Planes:
def __init__(self, base_image: npt.NDArray, depth_image: npt.NDArray) -> None:
self.base_image = base_image
self.depth_image = depth_image
def separation(
self, depth: npt.NDArray
) -> Tuple[npt.NDArray, npt.NDArray, npt.NDArray]:
print("Starting separation...")
contrast = cv2.convertScaleAbs(depth, alpha=3, beta=-100)
colorIndex = RGBFlatten(contrast).initiate()
mask_list = []
for i in range(3):
mask_img = cv2.cvtColor(
Planes(colorIndex, i).create_planes(), cv2.COLOR_RGB2BGR
)
mask_list.append(mask_img)
return mask_list
def data_augmentation(self, mask_list: list):
print("Cleaning planes...")
cleaned_segments = []
for i in range(3):
fill_img = stampFill(mask_list[i], i).run()
clean_img = valueFill(fill_img).run()
cleaned_segments.append(clean_img)
return cleaned_segments
def normal_process(self, img: npt.NDArray):
print("Starting normal process...")
grayscale = grayscaleInv(img).run()
heightMap = heightCreation(grayscale, scale=0.5).run()
blurred_image_list = artifactFlatten(heightMap).run()
normal_maps = []
for image in blurred_image_list:
normal_map = NormalMapGenerator(image).generate_normal_map()
normal_maps.append(normal_map)
return normal_maps
def initiate_split(self) -> None:
mask_list = self.separation(self.depth_image)
cleaned_segments = self.data_augmentation(mask_list)
normal_maps = self.normal_process(self.base_image)
return cleaned_segments, normal_maps