我可以在 Albumentations 库中使用 AutoContrast 吗?也就是说,使最暗的像素变黑,使最亮的像素变白。我看到了 RandomBrightnessContrast 之一,但是当我将对比度参数选择为 0 时它是正确的吗?
问问题
49 次
1 回答
1
不幸的是,现在没有现成的自动对比度转换。您可以使用Lambda转换自己实现它:
def _autocontrast(img):
h = cv2.calcHist([img], [0], None, [256], (0, 256)).ravel()
for lo in range(256):
if h[lo]:
break
for hi in range(255, -1, -1):
if h[hi]:
break
if hi > lo:
lut = np.zeros(256, dtype=np.uint8)
scale_coef = 255.0 / (hi - lo)
offset = -lo * scale_coef
for ix in range(256):
lut[ix] = int(np.clip(ix * scale_coef + offset, 0, 255))
img = cv2.LUT(img, lut)
return img
transform = Lambda(image = lambda img: _autocontrast(img))
包含 Autocontrast 转换的PS Pull 请求正在审核中。你可以在 github 上为这个 PR 投票,以便向维护者强调它:)
于 2021-10-04T10:39:38.923 回答