Oct 6, 2013

Bộ lọc tuyến tính.

Đáng lí ra sẽ có bài về các phép tính trên từng pixel, nhưng vì hiện giờ đang học về filter. Nên sẽ nói về filter trước.

Bài viết dưới đây được lấy và tham khảm từ một số nguồn:

  • Khóa Computer Vision - Stanford.
  • Cuốn "Computer Vision - A Modern Approach".
  • Một số nguồn linh tinh khác sẽ được liệt kê sau.

Một ảnh thực chất là biểu diễn của một hàm từ không gian $R^2$ sang không gian $R^M$. Hàm này sẽ cho ta biết về cường độ của điểm ảnh tại vị trí (x, y). Chính vì vậy, khi $M=1$ ta được ảnh mức xám, khi $M=3$ ta sẽ được ảnh màu gồm 3 kênh. Tuy nhiên, vì một ảnh trong tự nhiên là một hàm có tập xác định là tập số thực, nhưng máy tính chỉ hiểu được ảnh ở miền là các số nguyên. Vì vậy ta cần một bước để chuyển ảnh từ không gian thực sang miền mà máy tính hiểu được. Phép biến đổi đó gọi là số hóa.

Số hóa bao gồm các 2 phép chính:

  1. Sampling.
  2. Quantization - lượng hóa.

Phép Sampling làm nhiệm vụ chuyển tập xác định từ số thực sang số nguyên. Đơn giản hơn, sampling là phép dùng 1 cái lưới rộng và trùm lên trên tấm ảnh. Mỗi ô của lưới được gọi là pixel.

Sau khi thực hiện xong Sampling, ta sẽ chỉ chọn đúng 1 màu duy nhất cho mỗi pixel của ảnh. Giá trị này là số nguyên. Việc chọn giá trị của pixel như thế nào, hay chia lưới như thế nào là một kỹ thuật riêng, và ... khá là hấp dẫn. Sẽ được bàn luận sau vậy.

Bộ lọc tuyến tính - Linear Filters

Một bộ lọc có chức năng chuyển một tấm ảnh thành một tấm ảnh mới, mà những pixel của ảnh mới là tổ hợp giá trị pixel của các ảnh cũ. Việc dùng các bộ lọc có tác dụng:

  • Rút trích những thông tin hữu ích từ ảnh.
  • Thay đổi hoặc tăng cường các thuộc tính của ảnh.

Để sử dụng filter, ta áp dụng công thức sau:

\[ g(x,y) = \sum_{k,l}f(i-k, j-l)h(k,l) \]

Trong đó $g(x,y)$ là ảnh kết quả. $f(x,y)$ là ảnh đầu vào, $h(k,l)$ là mặt nạ (mask) hay còn gọi là nhân (kernel).

Công thức phía trên có thể viết gọn thành:

\[ g = f \bigotimes g \]

Tham khảo:

  • Computer Vision - A Modern Approach
Còn tiếp.