Tôi đang cố gắng sử dụng Python và Numpy/Scipy để triển khai thuật toán xử lý hình ảnh. Các hồ sơ nói với tôi rất nhiều thời gian đang được chi tiêu trong hàm sau (gọi là thường xuyên), mà nói với tôi tổng chênh lệch vuông giữa hai hình ảnhTổng số khác biệt về hình vuông (SSD) ở dạng khối/scipy
def ssd(A,B):
s = 0
for i in range(3):
s += sum(pow(A[:,:,i] - B[:,:,i],2))
return s
Làm thế nào tôi có thể tăng tốc độ này lên? Cảm ơn.
Bàng. Tôi đang có một ngày chậm chạp. Giảm một nửa thời gian chạy của tôi. –
Cần lưu ý rằng, bạn sẽ phải sử dụng 'numpy.sum', không phải' tổng hợp ', mà sẽ tìm tổng trên kích thước thứ nhất và trả về một mảng mới có kích thước một chiều. –
((A-B) ** 2) .sum (-1) Nếu bạn chỉ muốn thêm trên trục cuối cùng, thì đối số trục cần được chỉ định. Chỉ cần sử dụng sum() cho biết thêm tất cả các mục của mảng (raveled đầu tiên) – user333700