Chủ Nhật, 30 tháng 1, 2022

Cơ bản về xử lý ảnh (Phần 1)

1. Giới thiệu

Xin chào hôm nay chúng ta sẽ cùng nhau đi qua bài đầu tiên về Computer Vision. Trước tiên, chúng ta cùng nhau tìm hiểu một số khái niệm cơ bản trước khi đi vào sâu hơn.

2. Phân loại ảnh

Bản chất của ảnh là ma trận với chiều cao và chiều rộng của ảnh là chiều cao và chiều rộng của ma trận. Mỗi vị trí trong ma trận được gọi là 1 pixel hay còn gọi là điểm ảnh. Vị trí này có thể là một số hoặc tuple.

Thông thường ảnh được chia thành 3 loại chính: Ảnh nhị phân, ảnh xám và ảnh màu.

Ảnh nhị phân (binary) là ảnh có giá trị mỗi pixel là 0 hoặc 1 (có thể là 255)

Ví dụ dưới đây ta có ảnh binary có kích thước 5x5

\begin{bmatrix} 0 & 1 & 0 & 1 & 0\\ 1 & 0 & 1 & 0 & 0\\ 1 & 1 & 1 & 0 & 0\\ 1 & 1 & 0 & 0 & 0\\ 1 & 0 & 0 & 0 & 0\\ \end{bmatrix}

Ảnh xám là ảnh có giá trị mỗi pixel nằm trong đoạn từ 0 đến 255 với mỗi pixel được gọi là cường độ xám

Ảnh màu là ảnh mà mỗi pixel là một tuple. Với mỗi tuple có 3 phần tử. Mỗi phần tử của tuple có giá trị từ 0 đến 255. Trong thực tế các màu sắc là sự phối hợp của 3 màu chủ đạo là: Red, Green và Blue. Phối các màu này với các cường độ khác nhau ta được một màu mới.

Ví dụ để được màu hồng ta phối 3 màu (red, green, blue) với giá trị là (131, 58, 115)

Đẻ được màu vàng ta phối các màu (red, green, blue) với giá trị (255, 255, 0)

Nếu muốn biết mã rgb của một màu nào đó các bạn có thể sử dụng tại đây

Như vậy tại mỗi pixel ta chỉ cần phối 3 giá trị của một tuple như trên ta sẽ được màu của điểm ảnh đó

Ví dụ ảnh rgb có kích thước 4x4

$$\begin{bmatrix} (1, 0, 255) & (255, 3, 255) & (255, 0, 255) & (5, 0, 255)\\ (3, 88, 255) & (137, 120, 0) & (254, 22, 251) & (2, 19, 255)\\ (255, 100, 255) & (255, 4, 255) & (255, 66, 7) & (255, 2, 255)\\ (255, 0, 4) & (255, 1, 6) & (255, 5, 255) & (255, 9, 9)\\ \end{bmatrix}$$

Thông thường để tiện cho việc lưu trữ và xử lý thì chúng ta tách thành các ma trận riêng với mỗi ma trận được gọi là 1 chanel. Như vậy ta có 3 channel là red channel, green channel và blue channel

Với ví dụ trên ta có thể tách thành 3 ma trận như sau:

$$\begin{bmatrix} 1 & 255 & 255 & 5\\ 3 & 137 & 254 & 2\\ 255 & 255 & 255 & 255\\ 255 & 255 & 255 & 255\\ \end{bmatrix}$$

Ma trận này được gọi là red channel. Các bạn để ý là đối với red channel mình lấy mỗi phần tử đầu tiên của tuple

Tương tự đối với green channel bằng việc lấy phần tử số 2 của tuple

$$\begin{bmatrix} 0 & 3 & 0 & 0\\ 88 & 120 & 22 & 19\\ 100 & 4 & 66 & 2\\ 0 & 1 & 5 & 9\\ \end{bmatrix}$$

Tươg tự đối với blue channel bằng việc lấy phần tử số 3 của tuple

$$\begin{bmatrix} 255 & 255 & 255 & 255\\ 255 & 0 & 251 & 255\\ 255 & 255 & 7 & 255\\ 4 & 6 & 255 & 9\\ \end{bmatrix}$$

Chồng 3 ma trận trên lại với nhau ta được một Tensor. Tensor là khái niệm mới. Trước giờ ta chỉ quen các khái niệm như matrix hay vector. Các bạn để ý chồng nhiều vector thì ta được 1 matrix. Như vậy chồng nhiều matrix ta được một tensor. Đối với tensor ta có một thông số mới ngoài chiều rộng và chiều cao ra ta còn có độ sâu của tensor nữa.

Như hình trên các bạn có thể thấy ảnh được biểu diễn bằng 1 tensor với chiều rộng là 4, chiều cao 4, chiều sâu là 3 kích thước tensor được ký hiệu là 4x4x3 hay tổng quát hơn là wxhxc với $w$ là chiều rộng của tensor, h là chiều cao của tensor, c là chiều sâu hay là số channel

3. Kết luận

Trên đây mình đã giới thiệu về cách phân loại ảnh phổ biến trong computer vision. Ở bài viết khác mình sẽ trình bày một số phép toán phổ biến trên ảnh trước khi đi vào sâu hơn về deep learning. Nếu có thắc mắc gì vui lòng để lại comment phía dưới

0 nhận xét:

Đăng nhận xét