Принцип отбеливания лица
Принцип отбеливания лица понятен, это обработка изображений в цветовом пространстве, поэтому нам нужно проектировать через цветовое пространство.
Однако давайте сначала обратимся к следующим шагам обработки PS для отбеливания изображения:
- Сначала создайте новый слой и установите для этого слоя белый цвет.
- Затем смешайте белый слой с исходным изображением с помощью цвета альфа-канала, что сделает изображение белым в целом.
Через операцию PS мы можем примерно узнать, что нам нужно создать изображение того же размера и размерности, что и исходное изображение, а затем присвоить все значения белому цвету, а затем наложить два изображения через взвешенную сумму изображения изображений.
Тем не менее, здесь, очевидно, много проблем.В PS, хотя мы создали полностью белый слой, мы можем обрезать или использовать инструмент кисти, чтобы сделать только белое наложение на персонаже. Если мы сделаем это в программе, все изображение станет белым, и эффект будет очень неудовлетворительным.
Затем нам нужно рассмотреть новую идею для достижения эффекта отбеливания лица.
Согласно статье «Алгоритм двухэтапного повышения контрастности для цифровых изображений», таблица сопоставления используется для повышения уровня цвета исходного изображения, при этом яркость на обоих концах изображения относительно ослаблена, а середина усилена. , что создаст хороший эффект отбеливания, а также сделает изображение белым более естественным.
Здесь мы предоставляем таблицу отображения отбеливания Color_list:
Color_list = [
1, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 31, 33, 35, 37, 39,
41, 43, 44, 46, 48, 50, 52, 53, 55, 57, 59, 60, 62, 64, 66, 67, 69, 71, 73, 74,
76, 78, 79, 81, 83, 84, 86, 87, 89, 91, 92, 94, 95, 97, 99, 100, 102, 103, 105,
106, 108, 109, 111, 112, 114, 115, 117, 118, 120, 121, 123, 124, 126, 127, 128,
130, 131, 133, 134, 135, 137, 138, 139, 141, 142, 143, 145, 146, 147, 149, 150,
151, 153, 154, 155, 156, 158, 159, 160, 161, 162, 164, 165, 166, 167, 168, 170,
171, 172, 173, 174, 175, 176, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
204, 205, 205, 206, 207, 208, 209, 210, 211, 211, 212, 213, 214, 215, 215, 216,
217, 218, 219, 219, 220, 221, 222, 222, 223, 224, 224, 225, 226, 226, 227, 228,
228, 229, 230, 230, 231, 232, 232, 233, 233, 234, 235, 235, 236, 236, 237, 237,
238, 238, 239, 239, 240, 240, 241, 241, 242, 242, 243, 243, 244, 244, 244, 245,
245, 246, 246, 246, 247, 247, 248, 248, 248, 249, 249, 249, 250, 250, 250, 250,
251, 251, 251, 251, 252, 252, 252, 252, 253, 253, 253, 253, 253, 254, 254, 254,
254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 256]
Реализовать отбеливание лица
Так как вам был дан принцип отбеливания лица и цветовая карта отбеливания. Далее мы можем добиться эффекта отбеливания лица, конкретный код выглядит следующим образом:
def face_whitening(fileName):
img = cv2.imread(fileName)
img = cv2.bilateralFilter(img, 19, 75, 75)
height, width, n = img.shape
img2 = img.copy()
for i in range(height):
for j in range(width):
b = img2[i, j, 0]
g = img2[i, j, 1]
r = img2[i, j, 2]
img2[i, j, 0] = Color_list[b]
img2[i, j, 1] = Color_list[g]
img2[i, j, 2] = Color_list[r]
cv2.imwrite("59_1.jpg",img2)
image = Image.open("59_1.jpg")
# 锐度调节
enh_img = ImageEnhance.Sharpness(image)
image_sharped = enh_img.enhance(1.2)
# 颜色均衡调节
con_img = ImageEnhance.Contrast(image_sharped)
image_con = con_img.enhance(1.2)
image_con.save("59_2.jpg")
img1 = cv2.imread("58.jpg")
img2 = cv2.imread("59_2.jpg")
cv2.imshow("1", img1)
cv2.imshow("2", img2)
cv2.waitKey()
cv2.destroyAllWindows()
if __name__ == "__main__":
face_whitening("58.jpg")
После запуска эффект следующий: