def test_equalize_masked(self): img = torch.tensor(img_as_float(self.test_img)) mask = torch.zeros(self.test_img.shape, dtype=torch.bool) mask[50:150, 50:250] = 1 img_mask_eq = equalize_hist(img, mask=mask) img_eq = equalize_hist(img) cdf, bin_edges = cumulative_distribution(img_mask_eq) self.check_cdf_slope(cdf) self.assertFalse(torch.equal(img_eq, img_mask_eq))
def test_equalize_ubyte(self): with self.assertWarns(UserWarning): img = torch.tensor(img_as_ubyte(self.test_img)) img_eq = equalize_hist(img) cdf, bin_edges = cumulative_distribution(img_eq) self.check_cdf_slope(cdf)
def equalize_hist_demo(): image = torch.tensor(data.camera()) equ_image = equalize_hist(image) f, (ax1, ax2) = plt.subplots(1, 2) ax1.set_title("original image") ax1.get_xaxis().set_visible(False) ax1.get_yaxis().set_visible(False) ax1.imshow(image) ax2.set_title("after equalization") ax2.get_xaxis().set_visible(False) ax2.get_yaxis().set_visible(False) ax2.imshow(equ_image) f.show()
def __call__(self, img): hsv = color.rgb2hsv(img) hsv[:,:,2] = exposure.equalize_hist(hsv[:,:,2]) img = color.hsv2rgb(hsv) min_side = min(img.shape[:-1]) centre = img.shape[0] // 2, img.shape[1] // 2 img = img[centre[0] - min_side // 2:centre[0] + min_side // 2, centre[1] - min_side // 2:centre[1] + min_side // 2, :] img = transform.resize(img, (self.img_size, self.img_size)) img = np.rollaxis(img, -1) return img
def test_equalize_float(self): img = torch.tensor(img_as_float(self.test_img)) img_eq = equalize_hist(img) cdf, bin_edges = cumulative_distribution(img_eq) self.check_cdf_slope(cdf)
def test_equalize_uint8_approx(self): """Check integer bins used for uint8 images.""" img_eq0 = equalize_hist(self.test_img_int) img_eq1 = equalize_hist(self.test_img_int, nbins=3) self.assertTrue(torch.allclose(img_eq0, img_eq1))