def __init__(self, I, radius, eps): self.I = to_32F(I) self.radius = radius self.eps = eps self.rows = self.I.shape[0] self.cols = self.I.shape[1] self.chs = self.I.shape[2]
def test_color(): image = cv2.imread('data/Lenna.png') image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) noise = (np.random.rand(image.shape[0], image.shape[1], 3) - 0.5) * 50 image_noise = image + noise radius = [1, 2, 4] eps = [0.005] combs = list(itertools.product(radius, eps)) vis.plot_single(to_32F(image), title='origin') vis.plot_single(to_32F(image_noise), title='noise') for r, e in combs: GF = GuidedFilter(image, radius=r, eps=e) vis.plot_single(to_32F(GF.filter(image_noise)), title='r=%d, eps=%.3f' % (r, e))
def filter(self, p): p = to_32F(p) if len(p.shape) == 2: return self._Filter.filter(p) elif len(p.shape) == 3: channels = p.shape[2] ret = np.zeros_like(p, dtype=np.float32) for c in range(channels): ret[:, :, c] = self._Filter.filter(p[:, :, c]) return ret
def __init__(self, I, radius, eps): """ Parameters ---------- I: NDArray 2D guided image radius: int Radius of filter eps: float Value controlling sharpness """ self.I = to_32F(I) self.radius = radius self.eps = eps
def filter(self, p): """ Parameters ---------- p: NDArray Filtering input which is 2D or 3D with format HW or HWC Returns ------- ret: NDArray Filtering output whose shape is same with input """ p = to_32F(p) if len(p.shape) == 2: return self._Filter.filter(p) elif len(p.shape) == 3: channels = p.shape[2] ret = np.zeros_like(p, dtype=np.float32) for c in range(channels): ret[:, :, c] = self._Filter.filter(p[:, :, c]) return ret
def __init__(self, I, radius, eps): self.I = to_32F(I) self.radius = radius self.eps = eps