Computer vision (thị giác máy tính) cơ bản: máy "nhìn" ảnh thế nào?

  • author-image

    Nguyễn Đình Cường

  • blog-tag
  • blog-comment 0 comment
  • created-date 09 Nov, 2026
blog-thumbnail

Mở khóa điện thoại bằng khuôn mặt, quét mã QR, tự động nhận diện biển số, phân loại ảnh trong thư viện: tất cả đều là thị giác máy tính. Đây là lĩnh vực dạy máy tính hiểu nội dung hình ảnh và video. Bài này giới thiệu cách máy "nhìn" và những bước đầu tiên để bạn thử nghiệm.

Với máy tính, ảnh là gì?

Ảnh chỉ là một lưới các điểm ảnh (pixel). Ảnh xám là ma trận số, mỗi số là độ sáng từ 0 (đen) đến 255 (trắng). Ảnh màu thường có ba lớp: đỏ, lục, lam. Thị giác máy tính biến các con số này thành thông tin có nghĩa: đây là con mèo, vật thể nằm ở đâu, đường viền chỗ nào.

Các bài toán phổ biến

  • Phân loại ảnh: ảnh này thuộc loại nào (mèo, chó, xe)?
  • Phát hiện đối tượng: có những vật gì và nằm ở khung nào trong ảnh?
  • Phân đoạn ảnh: xác định từng điểm ảnh thuộc đối tượng nào.
  • Nhận dạng chữ (OCR): đọc chữ trong ảnh.
  • Nhận diện khuôn mặt: phát hiện và so khớp khuôn mặt.
  • Theo dõi chuyển động: bám theo vật thể qua các khung hình video.

Hai thế hệ phương pháp

Truyền thống: dùng thuật toán thiết kế thủ công như làm mờ, tìm cạnh, ngưỡng hóa, phát hiện đường viền. Nhanh, nhẹ, dễ giải thích, phù hợp bài toán điều kiện ổn định.

Học sâu: dùng mạng nơ-ron tích chập và các kiến trúc hiện đại học đặc trưng trực tiếp từ dữ liệu. Chính xác hơn nhiều trong điều kiện phức tạp nhưng cần nhiều dữ liệu gắn nhãn và tài nguyên tính toán.

Thử với OpenCV

OpenCV là thư viện mã nguồn mở phổ biến cho xử lý ảnh. Ví dụ Python đọc ảnh, chuyển sang xám và tìm cạnh:

import cv2

anh = cv2.imread("anh.jpg")
xam = cv2.cvtColor(anh, cv2.COLOR_BGR2GRAY)
mo = cv2.GaussianBlur(xam, (5, 5), 0)
canh = cv2.Canny(mo, 100, 200)

cv2.imwrite("canh.png", canh)
print("Kích thước ảnh:", anh.shape)

Bước làm mờ giúp giảm nhiễu trước khi tìm cạnh, một quy trình điển hình trong xử lý ảnh truyền thống.

Dùng mô hình học sâu có sẵn

Bạn hiếm khi cần huấn luyện từ đầu. Nhiều mô hình đã được huấn luyện sẵn có thể dùng trực tiếp hoặc tinh chỉnh với bộ dữ liệu nhỏ của bạn (transfer learning). Quy trình thường gặp:

  1. Chọn bài toán và xác định cách đo thành công.
  2. Thu thập và gắn nhãn dữ liệu đại diện cho môi trường thật.
  3. Chọn mô hình có sẵn phù hợp, thử trước khi tinh chỉnh.
  4. Đánh giá trên dữ liệu chưa từng thấy.
  5. Triển khai và theo dõi chất lượng theo thời gian.

Những khó khăn thực tế

  • Điều kiện thay đổi: ánh sáng, góc chụp, độ mờ làm mô hình giảm chất lượng.
  • Dữ liệu thiên lệch: mô hình hoạt động kém với nhóm đối tượng ít xuất hiện trong dữ liệu huấn luyện.
  • Chi phí gắn nhãn: thường là phần tốn kém nhất của dự án.
  • Chạy trên thiết bị yếu: cần thu nhỏ mô hình hoặc dùng phiên bản nhẹ.
  • Quyền riêng tư và đạo đức: đặc biệt với nhận diện khuôn mặt; cần minh bạch, xin phép và tuân thủ quy định.

Ý tưởng dự án nhỏ

  • Đếm số xe trong ảnh chụp từ camera giao thông (dữ liệu của bạn, đúng quy định).
  • Phân loại ảnh sản phẩm theo danh mục.
  • Đọc số trên đồng hồ điện bằng OCR.
  • Ứng dụng quét tài liệu: nhận biết khung giấy, nắn phẳng ảnh.

Câu hỏi thường gặp

Cần GPU để học thị giác máy tính không?

Không bắt buộc ở giai đoạn đầu. Xử lý ảnh với OpenCV chạy tốt trên CPU, và nhiều dịch vụ đám mây cho phép thử GPU khi cần huấn luyện mô hình lớn.

Bắt đầu với bộ dữ liệu nào?

Có nhiều bộ dữ liệu ảnh công khai phục vụ học tập. Hãy đọc điều khoản sử dụng và ưu tiên bộ nhỏ để thử nghiệm nhanh.

Kết luận

Thị giác máy tính biến điểm ảnh thành hiểu biết, bằng cả thuật toán truyền thống lẫn học sâu. Bạn có thể bắt đầu ngay với Python và OpenCV, rồi dần khám phá các mô hình dựng sẵn khi đã nắm vững khái niệm cơ bản.

Để học Python và nền tảng cần cho các dự án xử lý ảnh, mời bạn xem các khóa học tại codebem.com.

author_photo
Nguyễn Đình Cường

0 comment