|
|
import random |
|
|
import cv2 |
|
|
from .guided_filter import FastGuidedFilter |
|
|
|
|
|
|
|
|
class TileDetector: |
|
|
|
|
|
def __init__(self): |
|
|
pass |
|
|
|
|
|
def __call__(self, image): |
|
|
blur_strength = random.sample([i / 10. for i in range(10, 201, 2)], k=1)[0] |
|
|
radius = random.sample([i for i in range(1, 40, 2)], k=1)[0] |
|
|
eps = random.sample([i / 1000. for i in range(1, 101, 2)], k=1)[0] |
|
|
scale_factor = random.sample([i / 10. for i in range(10, 181, 5)], k=1)[0] |
|
|
|
|
|
ksize = int(blur_strength) |
|
|
if ksize % 2 == 0: |
|
|
ksize += 1 |
|
|
|
|
|
if random.random() > 0.5: |
|
|
image = cv2.GaussianBlur(image, (ksize, ksize), blur_strength / 2) |
|
|
if random.random() > 0.5: |
|
|
filter = FastGuidedFilter(image, radius, eps, scale_factor) |
|
|
image = filter.filter(image) |
|
|
return image |
|
|
|