2012-02-28 26 views
6

Tôi có hình ảnh về các thiên hà. Có một số dữ liệu không mong muốn trên những hình ảnh này (như các ngôi sao hoặc vệt máy bay) bị che khuất. Tôi không chỉ muốn điền vào các khu vực đeo mặt nạ với một số giá trị trung bình, nhưng để nội suy chúng theo dữ liệu xung quanh. Làm thế nào để tôi làm điều đó trong python?Làm cách nào để điền vào "các lỗ" trong một hình ảnh?

Chúng tôi đã thử các chức năng khác nhau trong gói SciPy.interpolate: RectBivariateSpline, interp2d, splrep/splev, map_coordinates, nhưng tất cả chúng dường như hoạt động trong việc tìm pixel mới giữa các pixel hiện có, chúng tôi không thể làm cho chúng lấp đầy tùy ý " lỗ "trong dữ liệu.

+8

Khởi động hai hoặc nhiều đầu dò vào không gian theo các hướng khác nhau. Sau khi xem của họ không còn bị che khuất bởi đối tượng chặn chế độ xem của bạn từ Trái đất, hãy để họ chụp ảnh phần không gian bạn quan tâm. Bằng cách kết hợp các hình ảnh với một dạng nội suy nào đó, bạn có thể nhận được xấp xỉ rất tốt phần không gian đó sẽ trông như thế nào từ Trái đất nếu chế độ xem không bị chặn. – Swiss

+0

@Swiss lol ... seriuosly? – neizod

+1

@Swiss - đăng bài đó là câu trả lời, nếu nó được chấp nhận, bạn sẽ là một anh hùng internet mãi mãi. – Gleno

Trả lời

6

Điều bạn muốn được gọi là Inpainting.
OpenCV có chức năng inpaint() làm những gì bạn muốn.

+0

cảm ơn cho từ khóa phù hợp - inpaint. openCV có thể không phải là lựa chọn tốt nhất vì hình ảnh thiên văn là 64 bit - mỗi pixel, khi openCV cho phép 1 kênh 8bit hoặc 3 kênh 8bit (tối đa 24 bit mỗi pixel). Tôi đã tìm thấy một triển khai đơn giản của inpainting: https://github.com/gasagna/openpiv-python/blob/master/openpiv/src/lib.pyx – miceuz

+0

@miceuz Mathematica có chức năng Inpaint có thể hoạt động trên hình ảnh chính xác kép . –

+0

Xem thêm G'MIC để inpainting, http://gmic.eu. Tôi đã sử dụng nó cho các khu vực NO_DATA với thành công lớn. 'gmic -h -inpaint' – RobLabs

3

Điều bạn muốn không phải là nội suy. Nội suy phụ thuộc vào giả định rằng dữ liệu giữa các điểm đã biết là gần kề nhau. Trong bất kỳ hình ảnh không tầm thường nào, điều này sẽ không xảy ra.

Bạn thực sự muốn một cái gì đó giống như điền nội dung nhận thức được trong Photoshop CS5. Có một sự thay thế miễn phí có sẵn trong GIMP thông qua trình cắm thêm GIMP-resynthesize. Các bộ lọc này cực kỳ tiên tiến và cố gắng triển khai lại chúng là điên rồ. Một lựa chọn tốt hơn là tìm ra cách sử dụng GIMP-resynthesize trong chương trình của bạn để thay thế.

+3

Trên thực tế, quá trình tổng hợp lại đã có trước đây, do đó, "có một thay thế trả tiền có sẵn trong CS5 thông qua điền nội dung" ... – Kheldar

1

tôi làm đầu tiên python script gimp tôi có thể giúp bạn: my scripts

Nó được gọi là bộ lọc có điều kiện vì nó là một bộ lọc ma trận mà điền vào tất cả các pixel trong suốt từ một hình ảnh theo giá trị trung bình của nó 4 khu vực gần hàng xóm không minh bạch. Đảm bảo sử dụng hình ảnh RGBA chỉ với giá trị trong suốt 0 và 255.

Đó là thô, đơn giản, chậm, unoptimized nhưng lỗi miễn phí.

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