OpenCV (58) --- Реализация алгоритма микродермабразии лица

OpenCV
OpenCV (58) --- Реализация алгоритма микродермабразии лица

Принцип микродермабразии лица

Микродермабразия лица — самый простой косметический эффект. В основном делится на веснушки, прыщи, осветление темных кругов и другие шаги. Благодаря предыдущему исследованию я считаю, что каждый может с первого взгляда увидеть, что нам нужно сделать, чтобы распознать эффект микродермабразии лица.

Потому что после дермабразии загрязнения на лице в основном исчезают, и можно сказать, что теряются детали. Затем необходимо использовать функцию фильтра. Процесс фильтрации заключается во вводе значения каждого пикселя изображения в фильтр для получения гладкого изображения.

И наши обычно используемые фильтры включают средний фильтр, фильтр Гаусса и двусторонний фильтр Какой фильтр мы должны выбрать?

Прежде всего, средний фильтр определенно приведет к тому, что изображение будет слишком размытым, потому что среднее значение окружающих пикселей используется для замены исходного значения пикселя, поэтому оно исключается. Во-вторых, принцип фильтрации по Гауссу аналогичен фильтрации по среднему, за исключением того, что коэффициент шаблона фильтра Гаусса будет уменьшаться с увеличением расстояния от центра шаблона.Хотя степень размытия изображения может быть уменьшена, информация о краях изображение будет потеряно.

Тогда остается только один фильтр, двусторонний фильтр. Поскольку он одновременно сочетает в себе эффект суперпозиции фильтра верхних частот и фильтра усеченного среднего, он может гарантировать, что изображение не будет сильно размытым, а также может сохранить информацию о краях изображения.

Шаги принципа микродермабразии лица делятся на следующие 3 шага:

  1. фильтрация изображений
  2. слияние изображений
  3. повышение резкости изображения

Т.к. вне зависимости от вышеперечисленных трех видов фильтрации, это вызовет определенное размытие (только кто лучше в относительном выражении), поэтому необходимо совмещать и повышать резкость изображения. Таким образом, некоторые детали изображения могут быть сохранены для повышения реалистичности изображения.

Среди них функция, используемая для слияния изображений, — это функция взвешивания изображений cv2.addWeighted(). Слияние представляет собой исходное изображение и изображение, отфильтрованное двойным проходом.

Наконец, повышение резкости изображения работает с использованием библиотеки PIL, используя ее функцию ImageEnhance.Sharpness() для автоматической настройки резкости и контрастности изображения.

Осознайте эффект микродермабразии лица

Теперь, когда мы полностью усвоили принцип микродермабразии лица. Далее, давайте непосредственно реализуем эффект микродермабразии человеческого лица.Конкретный код выглядит следующим образом:

# 人脸磨皮
def facial_dermabrasion_effect(fileName):
    img = cv2.imread(fileName)
    blur_img = cv2.bilateralFilter(img, 31, 75, 75)
    #图像融合
    result_img = cv2.addWeighted(img, 0.3, blur_img, 0.7, 0)
    cv2.imwrite("58_1.jpg", result_img)

    image = Image.open("58_1.jpg")
    # 锐度调节
    enh_img = ImageEnhance.Sharpness(image)
    image_sharped = enh_img.enhance(1.5)
    # 对比度调节
    con_img = ImageEnhance.Contrast(image_sharped)
    image_con = con_img.enhance(1.15)
    image_con.save("58_2.jpg")

    img1 = cv2.imread("58.jpg")
    img2 = cv2.imread("58_2.jpg")
    cv2.imshow("1", img1)
    cv2.imshow("2", img2)
    cv2.waitKey()
    cv2.destroyAllWindows()


if __name__ == "__main__":
    facial_dermabrasion_effect("58.jpg")

После запуска эффект следующий:

磨皮效果

Параметры этого кода можно регулировать, а не постоянный слой.Заинтересованные читатели могут настроить параметры, чтобы попробовать эффект.Конечно, микродермабразия лица просто выглядит более гладкой. В сочетании с эффектом отбеливания ниже вы можете добиться красоты камеры.