AI thật đơn giản – Image Transformations

Chào mọi người mình là Dũng đến từ team AI VTI-VN!
Theo series AI thật đơn giản - landmark face detection đây là bài đầu tiên giúp mn có kiến thức cơ bản để hiểu các module sắp tới của blog sau.

1. Giới thiệu về Image Transformations

Image Transformations là tâp hợp cách phép biến đổi hình ảnh cơ bản và nâng cao. Ứng dụng của biến đổi hình ảnh như:

  • Photoshop.
  • Nén ảnh.
  • Các nền tảng mạng xã hội.
  • vvv

Vậy câu hỏi ở đây là có bao nhiêu cách để biến đổi hình ảnh. Làm sao xây dựng hàm để sử dụng biến đổi hình ảnh cơ bản?

Blog này sẽ trả lời câu hỏi đó. Cụ thể chúng ta sẽ tìm hiểu về các phép biến đổi ảnh, nội suy song tuyến.

Các định nghĩa trong bài blog:

  • input: các hình ảnh đầu vào
  • output: kêt quả sau khi áp dụng biến đổi hỉnh ảnh đầu vào.
  • index: vị trí của pixel trên ảnh.

2. Phép biến đổi hình ảnh

Trong biến đổi hình ảnh có rất nhiều phép khác nhau tuy nhiên mình chỉ giới thiệu 4 phép biến đổi chính: rotate, scale, shear,translation(nonlinear).

Trước tiên chúng ta cùng thống nhất:

  • Một điểm điểm là một vector cột (2,1). trong đó các phần tử là index trong ảnh.

  • một ma trận biến đổi M có hình dạng : (2,2)

Vậy với ma trận M:

làm sao biến đổi điểm K với ma trận M?

Hãy nhớ về phép toán nhân 2 ma trận như sau:

Tức là với ma trận M như trên thì điểm K không thay đổi trong không gian.

Hãy làm tương tự với các phép biến đổi khác nhé!!!

Scaling

Giả sử ta có ma trận M như sau, hãy xem với ma trâin M này thì điểm K sẽ biến đổi như thế nào nhé:

Giả sử 0<p,q<=1 vậy điểm K sẽ gần gốc tọa hơn điểm K không? Tương tự với K lớn hơn 1 nhé !!!

Rotation

Vậy nếu chúng ta cần quay quanh tâm 1 góc θ thì phải làm sao. Mình không thể nhớ được đã học nó ở lớp mấy nhưng nó sẽ đơn giản như sau:

Giả sử 0<p,q<=1 vậy điểm K sẽ gần gốc tọa hơn điểm K không? Tương tự với K lớn hơn 1 nhé !!!

Shear

Có bao giờ bạn thắc mắc văn bản bình thường làm sao biến đổi thành chữ nghiêng được hay không?

Để làm được điều đó chúng ta cần dịch x đi 1 đoạn tỉ lệ với y hoặc y dịch 1 đoạn tỉ lệ với x. Đương nhiên với ví dụ trên chỉ cần biến đổi x thôi nhé 😀

Vậy là chúng ta đã xong các phép biến đổi cơ bản. v với phép dịch thì sao? rõ ràng là không thể vì nó là không phải là phép biến đổi tuyến tính. tuy nhiên nó lại là phép biến đổi cực kỳ quan trọng trong xử lý ảnh. Hãy theo dõi tiếp nhé !!!

Chúng ta sẽ cần biến đổi điểm K và M như sau:

Translation

Hãy ví dụ với phép ma trận M và K mới nhé 😀

3. Nội suy song tuyến (Bilinear Interpolation)

Khi một hình ảnh (tập hợp các điểm) được biến đổi thì đầu ra của nó sẽ là số thực, thế nhưng làm sao lấy được giá trị pixel khi nó là số thực (các index của ảnh bắt buộc phải là số nguyên).

Để giải quyết vấn đề này chúng ta cần nội suy song tuyến. Nội suy song tuyến sử dụng 4 điểm pixel lân cận để tìm cường độ màu phù hợp cho pixel đó. kết quả sẽ tạo màu phù hợp, chân thực hơn cho bức ảnh.

  • Ưu điểm: kết quả đầu ra trơn tru.

  • Nhược điểm: hình ảnh có thể bị mờ.

thuật toán:

Mục tiêu là tìm giá trị pixel ở điểm P vậy chỉ cần nội suy theo trục X sau đó là nội suy theo trục Y để tìm giá trị pixel phù hợp cho P: