2012-12-06 39 views
6

Tôi có ba hình ảnh phù hợp ở dạng mảng có sọc 2D. Tôi muốn trung gian kết hợp chúng, có nghĩa là, tạo ra một mảng đầu ra trong đó mỗi pixel là trung vị của cùng một pixel trong ba mảng đầu vào. Điều này có thể được thực hiện dễ dàng trên IRAF bằng cách sử dụng imcombine. Có cách nào để làm điều này trên Python mà không lặp qua toàn bộ mảng và lấy trung bình của mỗi pixel?Kết hợp giữa hình ảnh phù hợp với hình ảnh trong python

Trả lời

9

Cách dễ nhất để làm điều này là:

  • Ngăn xếp các mảng 2ngày để tạo thành một mảng 3d
  • Tính trung bình sử dụng numpy.median đi axis=0 để tính dọc theo kích thước của xếp.

Bạn đang chủ yếu tính toán một trung bình yếu tố khôn ngoan. Dưới đây là một ví dụ đơn giản về những gì tôi sẽ làm:

>>> import numpy 
>>> a = numpy.array([[1,2,3],[4,5,6]]) 
>>> b = numpy.array([[3,4,5],[6,7,8]]) 
>>> c = numpy.array([[9,10,11],[12,1,2]]) 
>>> d = numpy.array([a,b,c]) 
>>> d 
array([[[ 1, 2, 3], 
     [ 4, 5, 6]], 

     [[ 3, 4, 5], 
     [ 6, 7, 8]], 

     [[ 9, 10, 11], 
     [12, 1, 2]]]) 
>>> d.shape 
(3, 2, 3) 

>>> numpy.median(d, axis=0) 
array([[ 3., 4., 5.], 
     [ 6., 5., 6.]]) 
+0

Điều đó có hiệu quả. Cảm ơn! – mcglashan

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