Để thêm màu sắc (tint) vào ảnh xám (grayscale), ta chuyển ảnh xám về không gian RGB (mỗi kênh R,G,B giống nhau), sau đó nhân từng kênh với một hệ số màu (multiplier) mong muốn.
Các bước thực hiện
- Đọc ảnh gốc bằng
io.imread. - Chuyển sang xám:
color.rgb2gray. - Chuyển xám sang RGB 3 kênh:
color.gray2rgb. - Định nghĩa bộ hệ số màu, ví dụ:
- Đỏ:
[0.7, 0, 0] - Vàng:
[1, 0.9, 0]
- Đỏ:
- Nhân ảnh RGB với bộ hệ số (broadcasting).
- Hiển thị bằng
matplotlib.
Mã nguồn Python
import matplotlib.pyplot as plt
from skimage import io, color
path = "path/to/puppy_1.jpg"
orig_img = io.imread(path)
grayscale_img = color.rgb2gray(orig_img)
image = color.gray2rgb(grayscale_img)
red_multiplier = [0.7, 0, 0]
yellow_multiplier = [1, 0.9, 0]
fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(8, 4), sharex=True, sharey=True)
ax1.imshow(red_multiplier * image)
ax1.set_title('Ảnh gốc (tint đỏ)')
ax2.imshow(yellow_multiplier * image)
ax2.set_title('Ảnh tint vàng')
plt.show()
Giải thích
rgb2graychuyển RGB → grayscale theo công thức luminance chuẩn.gray2rgbmở rộng 1 kênh thành 3 kênh giống nhau.- Nhân với mảng multiplier shape
(3,)áp dụng broadcasting lên 3 kênh màu. - Kết quả: ảnh được "nhuộm" theo màu mong muốn.