2011-07-08 22 views

Trả lời

3

Nó sẽ gần như thời gian thực trong iPhone 4 và chuyển tiếp. iPhone 3GS sẽ là một chút choppy. iPhone 3 và trước không được khuyến cáo.

55

Giờ đây, Core Image đã xuất hiện trên iOS trong một thời gian, chúng tôi có thể nói về một số con số hiệu suất khó. Tôi đã tạo một ứng dụng chuẩn như một phần của thử nghiệm cho khuôn khổ GPUImage của mình và đã lập cấu hình hiệu suất của các bộ lọc dựa trên CPU thô, bộ lọc Hình ảnh lõi và bộ lọc GPUImage với nguồn cấp dữ liệu video trực tiếp. Sau đây là những lần (tính theo mili giây) cầm mỗi người để áp dụng một bộ lọc gamma duy nhất trên một khung 640x480 video từ camera của iPhone (đối với hai mô hình phần cứng khác nhau chạy hai phiên bản hệ điều hành khác nhau):

   iPhone 4 (iOS 5) | iPhone 4S (iOS 6) 
------------------------------------------------ 
CPU   458 ms (2.2 FPS)  183 ms (5.5 FPS) 
Core Image 106 ms (6.7 FPS)  8.2 ms (122 FPS) 
GPUImage  2.5 ms (400 FPS)  1.8 ms (555 FPS) 

Đối với lõi hình ảnh, điều này chuyển thành tối đa là 9,4 FPS cho một bộ lọc gamma đơn giản trên iPhone 4, nhưng cũng hơn 60 FPS cho cùng trên iPhone 4S. Đây là về trường hợp bộ lọc Ảnh lõi đơn giản nhất mà bạn có thể thiết lập, vì vậy hiệu suất chắc chắn sẽ thay đổi với các hoạt động phức tạp hơn. Điều này dường như chỉ ra rằng Core Image không thể xử lý trực tiếp đủ nhanh để phù hợp với tốc độ máy ảnh của iPhone trên iPhone 4 chạy iOS 5, nhưng với iOS 6, nó xử lý video nhanh hơn để lọc trực tiếp trên iPhone 4S trở lên .

Nguồn cho các điểm chuẩn này có thể được tìm thấy trong my GitHub repository), nếu bạn muốn xem nơi tôi có những con số này.

Tôi đã cập nhật câu trả lời này từ bản gốc của mình, điều này quá quan trọng đối với hiệu suất của Core Image. Bộ lọc tông màu nâu đỏ tôi đã sử dụng làm cơ sở so sánh không thực hiện hoạt động tương tự như của riêng tôi, vì vậy nó là một điểm chuẩn nghèo nàn. Hiệu năng của các bộ lọc Core Image cũng được cải thiện đáng kể trong iOS 6, điều này đã giúp chúng hoạt động nhanh hơn đủ để xử lý video trực tiếp trên iPhone 4S trở lên. Ngoài ra, tôi đã tìm thấy một số trường hợp, like large-radius blurs, trong đó Core Image vượt trội hơn khung GPUImage của tôi.

câu trả lời trước, cho hậu thế:

Như với bất kỳ câu hỏi hoạt động liên quan, câu trả lời sẽ phụ thuộc vào sự phức tạp của bộ lọc của bạn, kích thước hình ảnh được lọc, và các đặc tính hiệu suất của thiết bị bạn' đang chạy lại.

Vì hình ảnh lõi đã có sẵn trong một thời gian trên máy Mac, tôi có thể chỉ cho bạn Core Image Programming Guide làm tài nguyên để tìm hiểu khung. Tôi không thể nhận xét về các yếu tố cụ thể cho iOS, được cung cấp cho NDA nhưng tôi thực sự khuyên bạn nên xem video cho WWDC 2011 Phiên 422 - Sử dụng hình ảnh lõi trên iOS và Mac OS X.

Ảnh chính (chủ yếu) sử dụng GPU để xử lý hình ảnh, vì vậy bạn có thể xem các trình xử lý OpenGL ES 2.0 nhanh như thế nào xử lý xử lý hình ảnh trên các thiết bị hiện có. Tôi did some work in this area recently và thấy rằng iPhone 4 có thể xử lý 60 FPS bằng cách sử dụng trình đổ bóng đơn giản trên video thời gian thực được cho ăn ở mức 480 x 320. Bạn có thể tải xuống ứng dụng mẫu của mình ở đó và cố gắng tùy chỉnh kích thước đầu vào và/hoặc video xác định xem thiết bị cụ thể của bạn có thể xử lý quá trình xử lý này ở tốc độ khung hình tốt hay không. Core Image có thể tăng thêm một chút chi phí, nhưng nó cũng có một số tối ưu hóa thông minh cho cách nó tổ chức các chuỗi bộ lọc.

Các thiết bị tương thích chậm nhất sẽ có iPhone 3G S và iPod thế hệ thứ 3, nhưng chúng không chậm hơn nhiều so với iPhone 4. iPad 2 thổi chúng đi với sức mạnh xử lý mảnh lớn của nó.

+0

Bạn đã sử dụng loại CIContext nào cho bảng so sánh ở trên? CPU hay GPU dựa trên? BTW: Tôi chỉ có một cái nhìn thoáng qua về khung GPUImage của bạn và nó trông tuyệt vời! GJ! –

+1

@ Błażej - dựa trên GPU, theo như tôi có thể nói. Tôi đã phải xác minh những con số đó, nhưng có vẻ như Core Image đang quá tải GPU khi xử lý trên iPhone 4. Có vẻ như Core Image được nhắm vào các thiết bị dựa trên A5 mới hơn, chứ không phải iPhone 3G S, iPhone 4, hoặc iPad gốc. –

+0

Xin chào Brad, Vì cả Core Image và GPUImage (dựa trên tên) là tính toán dựa trên GPU, nên GPUImage nhanh hơn nhiều? – tom

6

IMHO, Ảnh lõi luôn là tùy chọn đầu tiên của bạn kể từ iOS6.0. Có một số tính năng tốt mà bạn sẽ thích, chẳng hạn như:

  1. Hỗ trợ thông số đầu vào hình ảnh lõi glTexture2d;
  2. Thông số đầu ra hình ảnh lõi hỗ trợ glTexture2d;
  3. Bạn có thể chọn chỉ sử dụng CI với GPU; init ví dụ CIContext. _CIglContext = [CIContext contextWithEAGLContext:_glContext options:opts];
  4. Nhiều bộ lọc hiện có sẵn cho nền tảng iOS, 93 bộ lọc hoặc hơn?
  5. Bạn có thể chọn xử lý bộ đệm độc quyền với CPU khi ứng dụng của bạn tạm thời chạy trong nền, mặc dù không được khuyến nghị.

Đây là tất cả được đề cập trong video phiên WWDC2012, phần Hình ảnh lõi. Có một cái nhìn, có thể bạn sẽ tìm thấy giải pháp của bạn ở đó.

Các vấn đề liên quan