2016-08-16 16 views
12

Có thể xử lý (lọc) hình ảnh HDR thông qua Core Image không? Tôi không thể tìm thấy nhiều tài liệu về điều này, vì vậy tôi đã tự hỏi nếu ai đó có thể có một câu trả lời cho nó. Tôi biết rằng nó có thể làm các phép tính không gian làm việc với RGBAh khi bạn khởi tạo một CIContext, vì vậy tôi figured rằng nếu chúng ta có thể làm phép tính với định dạng ảnh nổi điểm, mà người ta có thể ..Hình ảnh HDR thông qua Core Image?

gì, nếu nó không phải là có thể, là lựa chọn thay thế nếu bạn muốn tạo ra các hiệu ứng HDR trên iOS?

CHỈNH SỬA: Tôi nghĩ mình sẽ cố gắng súc tích hơn một chút. Theo hiểu biết của tôi, hình ảnh HDR có thể được kẹp và lưu dưới dạng .jpg, .png và các định dạng hình ảnh khác bằng cách kẹp các giá trị pixel. Tuy nhiên, tôi quan tâm nhiều hơn đến việc lập bản đồ tông màu thông qua Core Image trên một hình ảnh HDR chưa được chuyển đổi. Sự cố đang mã hóa CIImage có hình ảnh HDR, được cho là có phần mở rộng .hdr.

EDIT2: Có thể hữu ích khi sử dụng CGImageCreate, cùng với CGDataProviderCreateWithFilename?

Trả lời

3

Tôi hy vọng bạn có kiến ​​thức cơ bản về cách hoạt động của HDR. Tệp HDR được tạo bằng cách chụp 2 hoặc nhiều hình ảnh ở các độ phơi sáng khác nhau và kết hợp nó. Vì vậy, ngay cả khi có một cái gì đó giống như tập tin .HDR, nó sẽ là một định dạng container với nhiều hơn một jpg trong nó. Về mặt kỹ thuật, bạn không thể cung cấp hai tệp hình ảnh cùng một lúc làm đầu vào cho CIFilter chung.

Và trong iOS, như tôi nhớ, không thể truy cập bộ ảnh gốc của HDR nhưng kết quả cuối cùng được xử lý. Thậm chí nếu bạn có thể, bạn phải tự thực hiện quy trình HDR và ​​tạo ra một png/jpg HDR đơn lẻ trước khi cho nó vào CIFilter.

+0

Sau khi kết hợp, tệp kết quả không thể được sử dụng theo bất kỳ cách nào để cung cấp thông tin pixel? Có lẽ chúng ta có một tệp như vậy bên ngoài, do đó phần mở rộng .hdr mà tôi đã thấy được sử dụng trong mã MATLAB mẫu để lập bản đồ giai điệu, người ta không thể đơn giản cung cấp tệp này và mã hóa hình ảnh kết quả thành một CIImage? Có lẽ nó không phải là mục đích của Core Image để lập bản đồ giai điệu trên hình ảnh HDR sau đó? Mặc dù, nó về mặt kỹ thuật là có thể, với việc sử dụng các bộ lọc tùy chỉnh của họ. –

+0

@DavidSacco vấn đề đầu tiên là, trong iOS không có cách nào để truy cập vào mảng bắt hình ảnh ban đầu có độ phơi sáng khác nhau. Và khi HDR được xử lý lần cuối, nó không giữ thông tin điểm ảnh của các tệp nguồn vì kỹ thuật không thể lưu trữ dữ liệu đó trong 3 kênh RGB. Trong hình ảnh được gắn nhãn "HDR" trên iOS, không có gì ngoài JPEG, đã được xử lý bằng nhiều ảnh có độ phơi sáng khác nhau. – sleepwalkerfx

+0

Cảm ơn, vâng, từ google-fu của riêng tôi, đây cũng là những gì tôi đã học được. Tôi tự hỏi liệu có bất kỳ thứ gì mới trong iOS 10 liên quan đến hình ảnh .RAW có thể hữu ích không. Tôi thực sự cũng học được rằng hình ảnh HDR có thể được lưu trong một điểm nổi.TIFF tập tin, nơi cường độ cao có thể được bảo tồn, nó chỉ là người dùng sẽ phải cung cấp hình ảnh cho biết nếu họ muốn sử dụng ánh xạ giai điệu. Có thể đảm bảo rằng ngữ cảnh của bạn được tính bằng độ chính xác của dấu phẩy động với tùy chọn 'kCIContextWorkingFormat'. –

1

Vì có những người yêu cầu thuật toán CI HDR, tôi quyết định chia sẻ mã của tôi trên github. Xem:

https://github.com/schulz0r/CoreImage-HDR

Đây là thuật toán Robertson HDR, vì vậy bạn không thể sử dụng hình ảnh RAW. Xin vui lòng xem các bài kiểm tra đơn vị nếu bạn muốn biết làm thế nào để có được phản ứng của máy ảnh và có được hình ảnh hdr. CoreImage bão hòa các giá trị pixel bên ngoài [0.0 ... 1.0], do đó, HDR được chia tỷ lệ thành khoảng thời gian đã nói. Mã hóa bằng kim loại luôn gây ra mã lộn xộn cho tôi, vì vậy tôi quyết định sử dụng MetalKitPlus mà bạn phải đưa vào dự án của mình. Bạn có thể tìm thấy nó ở đây:

https://github.com/LRH539/MetalKitPlus

Tôi nghĩ rằng bạn cần phải kiểm tra các chi nhánh dev/v2.0.0. Tôi sẽ hợp nhất điều này với chủ nhân trong tương lai.

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