0

我可以在 Albumentations 库中使用 AutoContrast 吗?也就是说,使最暗的像素变黑,使最亮的像素变白。我看到了 RandomBrightnessContrast 之一,但是当我将对比度参数选择为 0 时它是正确的吗?

4

1 回答 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 回答