2014-06-11 13 views
23

Sự khác biệt chính giữa khung hình Core Image và GPUImage (ngoài GPUImage là nguồn mở) là gì? Trong nháy mắt giao diện của họ có vẻ khá giống nhau ... Áp dụng một loạt các bộ lọc cho một đầu vào để tạo ra một đầu ra. Tôi thấy một vài khác biệt nhỏ, chẳng hạn như dễ sử dụng LookupFilter mà GPUImage có. Tôi đang cố gắng tìm ra lý do tại sao một người nào đó sẽ chọn một trong những khác cho một ứng dụng lọc ảnh.Sự khác biệt chính giữa Core Image và GPUImage

+2

Bạn đã đọc bất kỳ thông tin nào trên tệp readme của GPUImage chưa? Đây là tất cả được nêu ở đó. –

+0

Cảm ơn .. Có an toàn khi giả sử xuất video đã lọc nhanh hơn so với hình ảnh lõi không? –

+0

GPUImage không nhất thiết phải nhanh hơn Core Image và ngược lại. Đôi khi nó là, đôi khi nó không phải là. Bạn sẽ thấy khung nào phù hợp với nhu cầu của bạn nhất. – lxt

Trả lời

75

Là tác giả của GPUImage, bạn có thể muốn lấy những gì tôi nói với một hạt muối. Trước tiên tôi phải nói rằng tôi có một số lượng lớn sự tôn trọng đối với nhóm Hình ảnh cốt lõi và cách họ tiếp tục cập nhật khuôn khổ. Tôi là một người dùng Core Image nặng trước khi tôi viết GPUImage và tôi đã tạo mẫu cho nhiều yếu tố thiết kế của mình dựa trên cách Core Image hoạt động trên Mac.

Cả hai khuôn khổ liên tục phát triển, do đó, so sánh được thực hiện hôm nay có thể không đúng trong vài tháng tới. Tôi có thể chỉ ra các khả năng và tiêu chuẩn hiện tại, nhưng không đảm bảo rằng sẽ không lật khi một trong hai chúng tôi cập nhật mọi thứ.

Triết lý của tôi với GPUImage là tạo một wrapper gọn nhẹ xung quanh các tứ giác OpenGL (ES) được kết xuất với các trình đổ bóng và để làm như vậy với giao diện đơn giản nhất có thể. Như tôi đã nói trước đó, tôi đã lấy các khía cạnh của Core Image mà tôi thực sự thích, nhưng tôi cũng đã thay đổi một phần giao diện của họ đã vấp ngã tôi trong quá khứ. Tôi cũng mở rộng mọi thứ một chút, trong đó Core Image chỉ đề cập đến xử lý hình ảnh, trong khi tôi móc trong phát lại phim, đầu vào máy ảnh, quay video và chụp ảnh.

Khi ban đầu tôi bắt đầu ý tưởng về điều này, Core Image chưa đến iOS. Vào thời điểm tôi phát hành nó, Core Image vừa được thêm vào iOS. Tuy nhiên, số lượng bộ lọc được hỗ trợ trên iOS tại thời điểm đó was fairly limited (không làm mờ, ví dụ) và Hình ảnh lõi trên iOS không cho phép bạn tạo hạt nhân tùy chỉnh giống như trên Mac.

GPUImage cung cấp phương tiện để thực hiện các hoạt động tăng tốc GPU tùy chỉnh trên hình ảnh và video trên iOS, trong đó Core Image không có. Hầu hết những người bắt đầu sử dụng nó đã làm như vậy vì lý do đó, bởi vì họ đã có một số hiệu ứng mà họ không thể làm với các bộ lọc Core Image stock.

Ban đầu, GPUImage cũng had significant performance advantages for many common operations. Tuy nhiên, nhóm Core Image đã có những cải tiến đáng kể về tốc độ xử lý với từng phiên bản iOS và mọi thứ đang rất gần ngay bây giờ. Đối với một số thao tác, GPUImage nhanh hơn và đối với những người khác, Core Image nhanh hơn. Họ tìm cách sử dụng một số pretty clever optimizations for things like blurs, mà tôi đã bắt đầu nhân rộng trong những thứ như GPUImageiOSBlurFilter của tôi. Chúng cũng kết hợp các hoạt động đa giai đoạn một cách thông minh, nơi tôi xử lý các bước lọc như các mục riêng biệt và riêng biệt. Trong một số trường hợp trên iOS, điều này mang lại cho tôi một lợi thế, và tôi đã cố gắng giảm thiểu hậu quả bộ nhớ của điều này gần đây, nhưng họ xử lý nhiều loại chuỗi bộ lọc tốt hơn tôi.

iOS 8 giới thiệu hỗ trợ hạt nhân tùy chỉnh trong Hình ảnh lõi trên iOS mà nó luôn có trên máy Mac. Điều này giúp bạn có thể viết các bộ lọc tùy chỉnh của riêng bạn và các hoạt động khác trong Core Image trên iOS, do đó sẽ không còn là lợi thế của GPUImage nữa. Tất nhiên, bất cứ ai muốn nhắm mục tiêu một phiên bản iOS cũ hơn sẽ vẫn bị giới hạn bởi những gì Core Image có thể thực hiện ở đó, nơi GPUImage có thể nhắm mục tiêu trở lại iOS 4.0. Core Image cũng có một số khả năng gọn gàng về khả năng lọc trong khi ứng dụng iOS ở chế độ nền (dựa trên CPU lúc đầu, nhưng iOS 8 bổ sung hỗ trợ GPU cho điều này ngay bây giờ), nơi sự phụ thuộc của GPUImage trên OpenGL ES ngăn không cho nó chạy khi một ứng dụng chạy ngầm. Có thể có những cách xung quanh giới hạn này trong iOS 8, nhưng tôi đã không làm việc thông qua tất cả các tài liệu được nêu ra.

Sở thích của tôi với GPUImage nằm trong trường nhìn của máy.Các bộ lọc hình ảnh là một phân tâm thú vị, nhưng tôi muốn sử dụng khung này để khám phá những gì có thể với phân tích hình ảnh được tăng tốc GPU. Tôi đang làm việc trên các hoạt động nhận dạng đối tượng và theo dõi tùy ý, và đó là hướng tôi sẽ tiếp tục phát triển khung công tác. Tuy nhiên, bạn có the code cho khuôn khổ, do đó bạn không phải dựa vào tôi.

2

Đây là một chủ đề cũ, nhưng tôi nghĩ đáng chú ý là GPUImage cũng có một số tính năng không có trong Core Image: đáng chú ý là biến đổi hough và một số bộ lọc phát hiện cạnh.

Hình ảnh lõi dường như tất cả về cách áp dụng bộ lọc và hiệu ứng - và thật tuyệt khi xem GPUImage khám phá thêm về phân tích hình ảnh/video, trở nên giống OpenCV hơn, nhưng theo cách hiệu quả hơn.

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