# Convert image to numpy array for pixel manipulation
img_array = np.array(image)
# Define region around the mouth to clean (based on observation)
# These values may need adjustment depending on precise image characteristics
cleaned_img_array = img_array.copy()
# Approximate region: rows 450 to 550, cols 250 to 400 (manual approximation)
# We'll blur this area slightly to reduce visibility of milk residue
y1, y2 = 450, 550
x1, x2 = 250, 400
# Apply a slight blur to the selected region
region = Image.fromarray(cleaned_img_array[y1:y2, x1:x2])
region = region.filter(ImageFilter.GaussianBlur(radius=2))
# Replace cleaned region in the original image
cleaned_img_array[y1:y2, x1:x2] = np.array(region)
# Convert back to PIL image
cleaned_image = Image.fromarray(cleaned_img_array)
# Apply retro-style filter: increase contrast, add warmth, fade effect
# Step 1: Increase contrast
enhancer = ImageEnhance.Contrast(cleaned_image)
contrast_image = enhancer.enhance(1.3)
# Step 2: Add warmth by increasing red and decreasing blue
r, g, b = contrast_image.split()
r = r.point(lambda i: min(255, i + 15))
b = b.point(lambda i: max(0, i - 10))
warm_image = Image.merge("RGB", (r, g, b))
# Step 3: Add a slight faded effect by lowering saturation
enhancer = ImageEnhance.Color(warm_image)
faded_image = enhancer.enhance(0.8)
# Step 4: Add grain by blending with random noise
noise = np.random.normal(0, 15, (faded_image.size[1], faded_image.size[0], 3)).astype(np.uint8)
noise_img = Image.fromarray(np.clip(np.array(faded_image) + noise, 0, 255).astype(np.uint8))
# Final retro image
final_image = noise_img
# Display the result
final_image.show()