Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách thêm màu sắc (tint) vào ảnh xám bằng scikit-image trong Python

Để 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

  1. Đọc ảnh gốc bằng io.imread.
  2. Chuyển sang xám: color.rgb2gray.
  3. Chuyển xám sang RGB 3 kênh: color.gray2rgb.
  4. Định nghĩa bộ hệ số màu, ví dụ:
    • Đỏ: [0.7, 0, 0]
    • Vàng: [1, 0.9, 0]
  5. Nhân ảnh RGB với bộ hệ số (broadcasting).
  6. 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

  • rgb2gray chuyển RGB → grayscale theo công thức luminance chuẩn.
  • gray2rgb mở 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.