def test_adjust_gamma(): # test assertion if gamma <= 0 with pytest.raises(AssertionError): transform = dict(type='AdjustGamma', gamma=0) build_from_cfg(transform, PIPELINES) # test assertion if gamma is list with pytest.raises(AssertionError): transform = dict(type='AdjustGamma', gamma=[1.2]) build_from_cfg(transform, PIPELINES) # test with gamma = 1.2 transform = dict(type='AdjustGamma', gamma=1.2) transform = build_from_cfg(transform, PIPELINES) results = dict() img = mmcv.imread( osp.join(osp.dirname(__file__), '../data/color.jpg'), 'color') original_img = copy.deepcopy(img) results['img'] = img results['img_shape'] = img.shape results['ori_shape'] = img.shape # Set initial values for default meta_keys results['pad_shape'] = img.shape results['scale_factor'] = 1.0 results = transform(results) inv_gamma = 1.0 / 1.2 table = np.array([((i / 255.0)**inv_gamma) * 255 for i in np.arange(0, 256)]).astype('uint8') converted_img = mmcv.lut_transform( np.array(original_img, dtype=np.uint8), table) assert np.allclose(results['img'], converted_img) assert str(transform) == f'AdjustGamma(gamma={1.2})'
def __call__(self, results): """Call function to process the image with gamma correction. Args: results (dict): Result dict from loading pipeline. Returns: dict: Processed results. """ results['img'] = mmcv.lut_transform( np.array(results['img'], dtype=np.uint8), self.table) return results
def test_lut_transform(self): lut_table = np.array(list(range(256))) # test assertion image values should between 0 and 255. with pytest.raises(AssertionError): mmcv.lut_transform(np.array([256]), lut_table) with pytest.raises(AssertionError): mmcv.lut_transform(np.array([-1]), lut_table) # test assertion lut_table should be ndarray with shape (256, ) with pytest.raises(AssertionError): mmcv.lut_transform(np.array([0]), list(range(256))) with pytest.raises(AssertionError): mmcv.lut_transform(np.array([1]), np.array(list(range(257)))) img = mmcv.lut_transform(self.img, lut_table) baseline = cv2.LUT(self.img, lut_table) assert np.allclose(img, baseline) input_img = np.array( [[[0, 128, 255], [255, 128, 0]], [[0, 128, 255], [255, 128, 0]]], dtype=np.float) img = mmcv.lut_transform(input_img, lut_table) baseline = cv2.LUT(np.array(input_img, dtype=np.uint8), lut_table) assert np.allclose(img, baseline) input_img = np.random.randint(0, 256, size=(7, 8, 9, 10, 11)) img = mmcv.lut_transform(input_img, lut_table) baseline = cv2.LUT(np.array(input_img, dtype=np.uint8), lut_table) assert np.allclose(img, baseline)