Menu
CoddyTech

Hình ảnh dưới dạng mảng

Thuộc phần Dữ liệu và biểu đồ trong hành trình Machine Learning của Coddy. Bài học 29 trên 60.

Ảnh đen trắng là một lưới số, mỗi điểm ảnh có một độ sáng. Vì vậy, mảng 2D là một hình ảnh, và ax.imshow vẽ hình ảnh đó:

plus = np.array([[0, 0, 1, 0, 0],
                 [0, 0, 1, 0, 0],
                 [1, 1, 1, 1, 1],
                 [0, 0, 1, 0, 0],
                 [0, 0, 1, 0, 0]])
fig, ax = plt.subplots()
ax.imshow(plus, cmap="gray")
plt.show()

Ảnh 5 × 5 gồm dấu cộng màu trắng trên nền đen, mỗi điểm ảnh hiển thị giá trị của nó: 1 trên dấu cộng màu trắng, 0 ở các góc màu đen

cmap="gray" chọn bảng màu xám: giá trị nhỏ nhất là màu đen, giá trị lớn nhất là màu trắng. Hàng 0 được vẽ ở trên cùng, đúng như cách mảng được viết.

Ảnh thường lưu giá trị từ 0 (đen) đến 255 (trắng). Sau này trong hành trình này, một mô hình sẽ đọc các chữ số viết tay được lưu chính xác theo cách này.

challenge icon

Thử thách

Trung bình

Máy quét đọc một chữ cái được in nhưng lưu ảnh theo kiểu đảo màu: mực sáng trên giấy tối. Danh sách lồng nhau scan lưu độ sáng của từng pixel, từ 0 đến 255.

  1. Chuyển scan thành một mảng rồi đảo màu: mỗi pixel bằng 255 trừ đi giá trị của nó.
  2. Vẽ ảnh bằng bản đồ màu xám, đặt tiêu đề Letter E rồi hiển thị ảnh.

Ảnh của bạn sẽ trông như hình này, một chữ L được quét sau khi sửa:

Chữ L nhỏ màu đen trên nền trắng, cao 7 pixel và rộng 5 pixel, có tiêu đề Letter L

Chương trình của bạn không in ra gì cả. Coddy mô tả ảnh của bạn theo từng hàng.

Tự làm thử

import numpy as np
import matplotlib.pyplot as plt

scan = [[255, 255, 255, 255, 255],
        [255, 30, 0, 0, 0],
        [255, 0, 0, 0, 0],
        [255, 255, 255, 200, 0],
        [255, 0, 0, 0, 0],
        [255, 0, 0, 0, 15],
        [255, 255, 255, 255, 255]]

# Viết code của bạn bên dưới
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Dữ liệu và biểu đồ

Tự luyện tập: Trình biên dịch Python online