Để chụp một bức ảnh, bạn đưa máy lên, nhấn nút chụp, và xem ngay thành quả tuyệt đẹp của mình. Nhưng ở đằng sau đó là một loạt các thao tác xử lý rất phức tạp để tổng hợp được ra hình ảnh từ những tia sáng chiếu vào cảm biến. Và đó cũng là thứ tạo nên sự khác biệt giữa một cái máy chụp ảnh đẹp vs ảnh xấu, dù cho chúng có dùng chung phần cứng camera với nhau.
Ảnh sau khi được chụp sẽ được xử lý rất nhiều
Nguyên lý cơ bản của máy ảnh thì chắc anh em cũng biết rồi ha, đó là hình ảnh ngoài đời sẽ được cho đi qua một loạt thấu kính để "hứng" được hình ảnh của anh em trên tấm phim, hoặc ở thời này là trên cảm biến ảnh.
Cảm biến ảnh là một tập hợp các diode nhạy sáng, khi có ánh sáng vào thì những diode này sẽ ghi nhận tín hiệu. Nhưng để cảm biến biết được khu vực nào có màu nào, người ta phải áp một lớp bộ lọc gọi là Bayer Filter lên trên. Bộ lọc này sẽ giúp từng pixel biết được nó đang ghi nhận màu nào trong ba màu RGB và trị số của màu là bao nhiêu (từ 0 cho đến 255).
![]()
Nhưng ngay khi vừa chụp xong, cái mà điện thoại hay máy ảnh thấy sẽ là như tấm ảnh đầu tiên bên dưới. Một đống rỗ xanh đỏ nằm trên tấm ảnh. Ít nhất thì bạn cũng thấy được hình dạng của các đối tượng trong hình, nhưng đó không phải là thứ mà người ta muốn xem. Ảnh là phải giống đời thực mới được.
Thế nên người ta mới phải dùng tới một số thuật toán nội suy để biến những ô xanh đỏ đó thành các mảng màu sắc đậm nhạt khác nhau. Những thuật toán này sử dụng phương pháp lấy các điểm lân cận nhau để biết chúng cần được xử lý ra sao, và máy sẽ biến đổi chúng thành tấm ảnh kết quả.
![]()
Camera processing pipeline là gì?
Có được tấm ảnh là mừng rồi. Nhưng chưa hết đâu, tấm ảnh vừa được xử lý xong chắc gì đã đủ nét, chắc gì đã đủ sáng, chắc gì đã đúng màu như những gì mắt bạn có thể thấy được. Còn rất nhiều bước nữa phải xử lý, ví dụ như:
- Chỉnh lại hiện tượng méo ảnh do thấu kính hình cầu gây ra
- Xử lý giảm nhiễu trên tấm ảnh
- Sự dụng thuật toán để điều chỉnh mức cân bằng trắng và chọn màu cho sát với thực tế
- Chỉnh lại độ sáng
- Chỉnh lại độ nét
- Áp dụng các điều chỉnh cuối cùng cho đẹp
- Có thể áp dụng thêm một số thuật toán AI nào đó vào nữa
- .... và còn nhiều bước khác
Bên dưới là hình ví dụ minh họa cho một pipeline xử lý hình ảnh chụp từ cảm biến vào (lấy từ GitHub)
![]()
Mỗi nhà sản xuất sẽ có những bước khác nhau trong quá trình xử lý ảnh sau khi chụp xong, gọi là camera image processing pipeline. Và chính điều này ảnh hưởng nhiều tới chất lượng tấm ảnh kết quả, vì nếu thuật toán ở các bước trung gian mà không tốt thì ảnh sẽ xấu đi rất nhiều. Bộ phận xử lý pipeline này có thể là CPU, nhưng trong các điện thoại hiện đại thì người ta sẽ nhờ tới CPU lẫn bộ xử lý tín hiện hình ảnh (ISP) để có tốc độ nhanh hơn, tiết kiệm pin hơn và thuật toán tốt hơn.
Mình lấy ví dụ, giả sử Apple và Samsung dùng chung 1 phần cứng như nhau, từ thấu kính cho đến cảm biến. Nhưng nếu trong quá trình xử lý pipeline, Apple làm bước chỉnh màu quá tệ thì ảnh cho ra sẽ xấu, hoặc nếu thuật toán khử noise của Samsung quá mạnh thì sẽ làm cho tấm ảnh bị bệt và không còn tự nhiên. Thuật toán mỗi hãng mỗi khác, trình độ, năng lực mỗi hãng mỗi khác, nên anh em sẽ thấy sự khác biệt trong "nước ảnh" của mỗi hãng.
Để giúp các nhà sản xuất, Qualcomm và những hãng làm chip thường có sẵn pipeline mẫu để họ triển khai hoặc chỉnh sửa. Nhưng không phải hãng nào cũng có thể chỉnh được đủ tốt. Xiaomi, mất bao năm mà vẫn cho ra ảnh rất chán, mãi tới con Xiaomi Mi Note 10 mới gọi là ổn đấy thôi.
Và để làm được một pipeline xử lý ảnh tốt không phải chuyện đơn giản. Bạn phải dành nhiều thời gian, sức người và tiền bạc để thử nghiệm, điều chỉnh. Sau khi đã có thuật toán thì phải đi chụp test thực tế rồi về chỉnh sửa tiếp cho tới khi ưng ý. Quá trình này lặp đi lặp lại và không hề đơn giản chút nào. Hình bên dưới là quá trình điều chỉnh camera của Essential Phone. Người ta mất tới 4 tháng để ra được một kết quả tạm được.
Đó là lý do mà các dòng smartphone đắt tiền chụp ảnh đẹp hơn (thậm chí là rất nhiều) so với các smartphone giá rẻ hơn. Do nguồn lực đầu tư vào sản phẩm khác nhau, dẫn tới chi phí khác nhau, và giá bán cũng khác nhau. Các máy cao cấp có thể thiết lập giá bán cao, vậy nên hãng mới cảm thấy đáng để đầu tư công sức, còn giá bán thấp quá thì đành hi sinh chất lượng ảnh vậy.
Trong thời gian gần đây, tình trạng này đã đỡ hơn rất nhiều. Các hãng Android xác định họ sẽ cần chiến đấu với nhau ở phân khúc tầm trung, thế nên họ đổ tiền, người và nguồn lực vào phân khúc này nhiều hơn, và người dùng chúng ta chính là những người hưởng lợi. Nhưng tất nhiên, vẫn luôn có sự chênh lệch về chất lượng ảnh giữa một cái điện thoại tầm trung và một cái máy đắt tiền.
Vì sao các nhà sản xuất không đem pipeline xử lý ảnh từ máy cao cấp xuống máy tầm trung?
Lý tưởng nhất đó là nhà sản xuất dồn hết tiền và người làm ra một pipeline xử lý ảnh cực đỉnh, sau đó đem áp dụng cho tất cả mọi chiếc điện thoại của họ. Vậy là xong, chỉ cần làm 1 lần và dùng lại được nhiều lần, cho nhiều model, quá sướng.
Nhưng đời đầu đơn giản thế. Khả năng xử lý của các máy cao cấp khác với các máy tầm trung hay giá rẻ. Nếu đem nguyên pipeline của con Galaxy S20 Ultra áp vào con Galaxy A51 thì sẽ mất thời gian hơn để xử lý, trải nghiệm của bạn không tốt vì từ khi chụp xong đến khi xem được ảnh quá lâu. Hồi xưa khi sử dụng Lumia 1020 mình từng bị vấn đề này, sau khi chụp thì phải đợi lâu ảnh mới được xử lý, thế nên mình không chụp ngay được tấm ảnh kế tiếp, bỏ lỡ nhiều khoảnh khắc đẹp, tất cả chỉ về CPU yếu.
Rồi phần cứng camera của mỗi con cũng khác nhau, thế nên pipeline cũng phải điều chỉnh lại cho khớp. Bạn chụp ảnh và xử lý hậu kỳ thì mỗi tấm cũng có một chút khác biệt đấy thôi, có phải tấm nào bạn chụp cũng đều như nhau cả đâu. Các thuật toán chạy trong pipeline cũng không khác gì.
Đó là lý do mà các máy tầm trung không thể chạy xử lý ảnh như cách mà các máy cao cấp có thể chạy.
Hi vọng qua bài này anh em hiểu được rằng để ra được một tấm ảnh thì cần những bước xử lý ra sao, và vì sao phần mềm lại trở nên cực kì quan trọng trong việc có được một tấm ảnh đẹp, nhất là trên smartphone. Cảm ơn anh em đã theo dõi.
Khóa đào tạo Power BI phân tích báo cáo để bán hàng thành công
KHÓA HỌC LẬP TRÌNH PYTHON TỪ CƠ BẢN ĐẾN CHUYÊN NGHIỆP