Vì sao iphone chụp ảnh đẹp hơn anroid

Kể từ đầu năm 2019, chúng ta bắt đầu chứng kiến sự ra đời của những mẫu smartphone sở hữu camera có độ phân giải cao [gọi là khủng ở thời điểm lúc bấy giờ] là 48MP, điển hình là Redmi Note 7, Note 7 Pro của Xiaomi khi chỉ là chiếc smartphone giá rẻ, tầm trung nhưng lại sở hữu những cảm biến có số chấm lớn như vậy. Tiếp đó, hãng tiếp tục mang những cảm biến có độ phân giải cao hơn lên những chiếc điện thoại cùng phân khúc là Redmi Note 8 [64MP] và mới hơn là Mi CC9 Pro [108MP].

Tương tự Xiaomi, các nhà sản xuất smartphone Android khác cũng gia nhập cuộc đua này. Đến thời điểm hiện tại, gần như toàn bộ các mẫu smartphone Android [trừ Google] đều sở hữu camera sau từ 48MP trở lên, cao nhất hiện tại là 108MP trên các mẫu flagship của Samsung, Xiaomi, OnePlus,... Trên bảng xếp hàng DxOmark, các tên tuổi xếp đầu đa số là những thiết bị sở hữu “số chấm” khủng, hiếm có chiếc điện thoại nào sử dụng cảm biến có độ phân giải nhỏ mà vẫn chen chân vào được, ngoại trừ Apple, lí do thì mình sẽ phân tích ở phần sau.

Có thể thấy, các hãng smartphone Android đang sử dụng lí thuyết “càng nhiều càng tốt” để dần bóp méo về sự thật về nhiếp ảnh, tái lập lại câu chuyện của 2 thập niên về trước, từ thời máy ảnh số mới bắt đầu phổ biến khiến nhiều người trong chúng ta dễ dàng sa vào cái bẫy rằng “điện thoại có số chấm càng cao thì chụp hình càng đẹp”.

Đi ngoài cuộc chiến, Apple và Google đã chứng mình rằng: Số chấm camera không quyết định chất lượng chụp ảnh!

Mặc cho thị trường di động đang đổ xổ trong cuộc đua về độ phân giả, vẫn có 2 cái tên kiên định với những quyết định và hướng đi riêng của mình, đó là tập trung vào thuật toán phần mềm. Đầu tiên, chúng ta hãy cùng tìm hiểu về bản chất của độ phân giải camera trước khi phân tích những yếu tố đằng sau đó cũng như lí do tại sao Apple và Google lại mặc kệ đối thủ nhé.

Về cơ bản, con số Megapixel được tính bằng công thức “rộng x cao”. Ví dụ, camera với độ phân giải 1280×1024 sẽ có kết quả rộng x cao là 1,310,720 Pixel, tương dương với 1.3 MP. Thông thường, một bức ảnh có độ phân giải đủ chi tiết sẽ không cần số megapixel quá lớn. Vì vậy, số chấm lớn chưa hẳn sẽ chụp tốt, việc chụp ảnh đẹp hay xấu là do sự cân bằng của nhiều yếu tố, bao gồm các thuật toán, phần mềm và chất lượng cảm biến camera.

Ngược lại, camera có càng nhiều megapixel thì càng có nhiều dữ liệu phải xử lý hơn đồng nghĩa với việc thời gian xử lý hình ảnh sẽ chậm hơn, đồng thời cũng làm giảm thời lượng pin, đặc biệt là khi sử dụng các tính năng cần phải xử lý nhiều như là HDR, Night Mode hay chế độ chân dung. Bên canh đó, nó còn làm tiêu tốn bộ nhớ lưu trữ hơn.

Do điện thoại có kích thước nhỏ cho nên cảm biến camera của nó cũng sẽ nhỏ. Và cảm biến cũng có giới hạn của chính nó, để có thể thu được nhiều chi tiết và tận dụng hết số megapixel thì cần phải có một ống kính có chất lượng cực kì tốt và nếu chất lượng ống kính không được tốt thì cảm biến sẽ không thể tận dụng hết được số megapixel.

Google đã chứng mình rằng, khi thuật toán camera quá xuất sắc, số chấm trở nên vô nghĩa. Điều này đã được thể hiện từ chiếc Google Pixel 2 với khả năng tái tạo màu sắc, độ chi tiết và chụp đêm cực kỳ xuất sắc mặc cho độ phân giải cảm biến chính chỉ là 12.2MP. Tiếp nối đó là thế hệ Google Pixel 3, 4 và 5 với thuật toán phần mềm ngày càng được cải tiến, chất ảnh trở nên chân thực và bắt mắt hơn, khả năng chụp đêm ấn tượng, đồng thời có thể chụp ảnh góc rộng chỉ bằng phần mềm.

Tương tự, từ thế hệ iPhone 11 Series năm 2019, Apple đã quyết định chọn đi cùng hướng với Google khi tập trung cải tiến phần mềm, giúp nâng chất lượng chụp ảnh của iPhone lên một tầm cao mới, không phải bẽ mặt trước đối thủ như các thế hệ iPhone cũ. Tiếp đó, iPhone 12 Series tiếp tục được nâng cấp và mang đến khả năng chụp ảnh, quay phim cực kỳ bá đạo. Điển hình là dù chỉ sở hữu camera chính 12MP nhưng iPhone 12 Pro và iPhone 12 Pro Max vẫn lọt top 5 chiếc smartphone chụp ảnh đẹp nhất hiện nay, dựa theo số điểm của DxOMark.

Thay vì sử dụng những cảm biến có độ phân giải cao hơn, có thể thấy những ông lớn như Apple hay Google lại chọn cách giữ nguyên độ phân giải và cải thiện thêm về phần mềm để đem tới chất lượng hình ảnh tốt hơn. Rõ ràng khi mà số chấm camera chạm đến điểm bão hòa, sự khác biệt về chất lượng lại được quyết định bởi thuật toán.

Một yếu tố khác đang dần trở nên quan trọng trong cuộc đua nhiếp ảnh di động chính là AI, điểm mà các hãng smartphone đang tập trung phát triển. AI không những cải thiện khả năng lấy nét, xác định chủ thể mà còn điều chỉnh độ sáng, màu sắc, độ mờ của phông nền sao cho thật nhất, điều quan trọng trong những bức ảnh hiện nay trong việc chia sẻ lên mạng xã hội chứ không phải những bức ảnh quá sắc nét.

Apple và Google rõ ràng là đang chiếm ưu thế hơn ở mảng này khi họ là những người sở hữu nhiều dữ liệu người dùng nhất, đặc biệt là Google. Gã khổng lồ công nghệ này có Google Photos, nơi người dùng thường lưu trữ ảnh, Google Search Image hay Recapcha, giúp họ thu thập dữ liệu nhiều hơn, từ đó có thể dạy cho AI của mình những gì đúng với thực tế nhất. Cách làm của Apple cũng tương tự, vì vậy không quá khó hiểu khi chất lượng phần mềm của hai gã khổng lồ này lại bá đạo đến vậy.

Tạm kết

Trên đây là những giải thích về các yếu tố ảnh hưởng đến chất lượng chụp ảnh cũng như số chấm camera có thực sự là yếu tố sống còn trong cuộc đua trong làng nhiếp ảnh di động hay không. Có thể thấy, hướng đi của Google và Apple là đúng đắn, họ không cần phải phụ thuộc quá nhiều vào các nhà sản xuất phần cứng cảm biến camera, không cần phải đi khoe mẽ về số megapixel, tự họ có thể giúp mình trở thành người chiến thắng.

Xem thêm:

Why the image quality of iPhone is much better than Android?

2. Động cơ

Ngồi tranh luận với các ông anh và ông em trong nhóm về vấn đề performace giữa Android và iOS, nhớ lại chủ đề khá hay này đã từng đọc trên qiita và quyết định dịch lại cho mọi người.

3. Bài viết

Nếu là một fan công nghệ, các bạn sẽ thấy ngày ngày vẫn có những bài so sánh giữa máy Android và iPhone. Chúng ta không thể tóm gọn lại là thứ nào tốt hơn, tuy nhiên có một điều mà ai cũng ngầm hiểu chính là chất lượng ảnh trên Android luôn kém hơn khi so sánh với iPhone. Không cần quan tâm bạn sử dụng Facebook, Twitter hay Instagram, sau khi bạn chụp một tấm ảnh, thêm filter vào rồi chia sẻ lên mạng xã hội, những tấm ảnh này nếu được tạo ra bởi máy Android sẽ không mịn. Vậy tại sao?

Nhóm chúng tôi đã làm việc trong vấn đề này trong năm vừa rồi. Sau khi tiến hành nghiên cứ rất sâu, chúng tôi đã tìm thấy một lỗi nhỏ được tạo ra bởi Google. Mặc dù gọi là nhỏ, tuy nhiên độ ảnh hưởng của nó rất lớn [trên tất cả Android Apps liên quan tới hình ảnh] và vẫn tiếp tục tới tận ngày nay.

Vấn đề chính là libjpeg. Chúng ta đều biết rằng libjpeg được sử dụng rộng rãi với open source JPEG library. Android cũng sử dụng libjpeg để nén ảnh. Sau khi chọc sâu vào source code của Android, chúng tôi đã nhận ra 1 điều đó là thay vì sử dụng libjpeg trực tiếp, Android được dựa trên một engine ảnh open source có tên Skia. Skia là một engine tuyệt vời được duy trì bởi chính Google, tất cả chức năng ảnh đều được implement trong engine này, và nó được sử dụng rộng rãi bởi Google và các sản phẩm của công ty khác [ví dụ: Chrome, Firefox, Android..]. Skia đóng gói khá tốt libjpeg, bạn có thể dễ dàng develop tiện ích ảnh dựa trên engine này.

Khi sử dụng libjpeg để nén ảnh, optimize_coding là một parameter rất quan trọng. Trong tài liệu libjpeg.doc, chúng tôi tìm thấy đoạn giới thiệu sau về parameter này:

boolean optimize_coding Khi TRUE sẽ khiến compressor[máy nén] tính toán bảng coding Huffman tối ưu cho ảnh. Điều này yêu cầu việc pass thêm trên data cho nên sẽ tốn kha khá thời gian và bộ nhớ. Default sẽ là FALSE và thông báo cho compressor là hãy sử dụng bảng Huffman default hoặc được cung cấp. Trong hầu hết các trường hợp, các bảng tối ưu chỉ tiết kiệm được 1 vài phần trăm của kích cỡ file so với bảng default. Hãy lưu ý là khi giá trị là TRUE, bạn không cần phải cung cấp bảng Huffman và nếu bạn có cung cấp thì cũng sẽ bị ghi đè lên.

Theo tài liệu trên chúng ta cũng có thể thấy nếu cài đặt giá trị optimize_coding là TRUE sẽ tốn thời gian và bộ nhớ, cho nên default trong libjpeg là FALSE.

Mọi thứ có vẻ rất ổn về tài liệu, và thực tế thì libjpeg hoạt động rất ổn định. Tuy nhiên rất nhiều người quên rằng tài liệu này đã được viết vào 10 năm trước rồi. Tại thời điểm đó, khả năng tính toán và bộ nhớ bị giới hạn rất nhiều. Với những chiếc điện thoại và máy vi tính đời mới hiện nay, đó không phải là vấn đề nữa. Ngược lại, chúng ta quan tâm tới chất lượng hình ảnh [màn hình retina] và kích cỡ ảnh [cloud service].

Những kỹ sư Google làm việc trong dự án Skia đã không set parameter này, chính vì thế optimize_coding trong Skia luôn được giữ là FALSE, ngoài ra Skia cũng che giá trị cài đặt này đi và bạn không thể thay đổi nó. Đây đã trở thành một vấn đề rất lớn và chúng ta phải chịu đựng sử dụng hình ảnh chất lượng thấp mà kích cỡ file lại lớn.

Nhóm chúng tôi đã test optimize_coding trên rất nhiều hình ảnh khác nhau. Nếu bạn muốn chất lượng của hình ảnh sau khi nén được giữ nguyên, khi optimize_coding là FALSE thì kích cỡ file sẽ lớn hơn 5~10 lần khi so với optimize_coding là TRUE. Sự khác biệt này là rất rõ rệt.

Chúng tôi cũng đã so sánh việc nén jpeg giữa iOS và Android [cả 2 đều giấu optimize_coding parameter]. Với cùng các ảnh gốc, nếu bận muốn chất lượng giống nhau thì bạn cần kích cỡ gấp 5~10 lần trên Androdi khi so với iOS.

Kết quả đã rõ ràng, Apple biết độ quan trọng của optimize_coding và bảng Huffman, trong khi Google không quan tâm tới nó. [Apple sử dụng thuật toán bảng Huffman riêng, không giống như libjpeg hoặc libjpeg-turbo. Dường như Apple đã tinh chỉnh rất nhiều liên quan tới việc nén ảnh.]

Cuối cùng, chúng tôi đã quyết định không sử dụng các chức năng nén JPEG được cung cấp bởi Android, và compile dựa trên native library riêng đã phát triển dựa theo libjpeg-turbo [libjpeg-turbo cũng có cải thiện về performance]. Bây giờ chúng tôi đã có thể tiết kiệm 5~10 lần dung lượng ảnh và có chất lượng tốt hơn. Dự án đã thành công tuyệt vời.

Dự án của chúng tôi trên Github: //github.com/bither

Video liên quan

Chủ Đề