Làm thế nào để bạn sử dụng tích chập trong python?
Cách tính tích chập trong Python. Dưới đây là 3 gói python phổ biến nhất để tích chập + triển khai Python thuần túy Show Ngày 1 tháng 8 năm 2022 • 6 phút đọc Tích chập là một trong những phép toán cơ bản trong xử lý tín hiệu. Tương tự như tương quan chéo, nó có thể được sử dụng để phân tích sự giống nhau của hai tín hiệu có độ trễ khác nhau. Có nhiều ứng dụng để tích chập. Nó đặc biệt phổ biến trong xử lý hình ảnh và thị giác máy, nơi tích chập đã được phát hiện cạnh và các ứng dụng tương tự. Sự kết hợp của tín hiệu đầu vào và đáp ứng xung tạo ra đầu ra của hệ thống bất biến thời gian tuyến tính. Điều này làm cho nó trở thành một hoạt động rất phổ biến trong kỹ thuật điện. Dưới đây, bạn có thể xem hình minh họa về tích chập giữa xung vuông và xung tam giác Tích chập giữa xung vuông và xung tam giácTrong các bài viết trước, chúng ta cũng đã tìm hiểu về các thao tác liên quan và cách triển khai chúng trong Python
Chúng ta sẽ xem xét ba gói để tính tích chập trong Python + triển khai Python thuần túy mà không có bất kỳ phụ thuộc nào
tích chập định nghĩaTích chập được định nghĩa là tích phân của tích hai tín hiệu (hàm), trong đó một trong các tín hiệu bị đảo ngược theo thời gian. Nó có liên quan chặt chẽ với tương quan chéo. Trên thực tế, đó là mối tương quan chéo sau khi một trong các tín hiệu bị đảo ngược https. // vi. wikipedia. org/wiki/tích chậpĐịnh nghĩa khá đơn giản, bạn chồng hai tín hiệu với độ trễ nhất định và tương quan với tín hiệu sau theo thứ tự ngược lại. Đó là, một trong những tín hiệu bị đảo ngược. Chúng ta có thể viết điều này cho các tín hiệu rời rạc có giá trị thực như \[R_{fg}(l) = \sum_{n=0}^N f(n)g(n - l)\] Trong phần sau, bạn có thể thấy một hình ảnh động đơn giản làm nổi bật quá trình. Lưu ý cách đảo hàm tam giác trước khi thực hiện tương quan chéo, ban đầu để đảo ngược tín hiệu đầu vào và thực hiện tích chập Có thể tìm thấy định nghĩa cho các tín hiệu phức tạp, liên tục và ngẫu nhiên, e. g. , từ Wikipedia Tập dữ liệu và số lượng độ trễ để tính toánTrước khi đi vào các phương pháp tính tích chập, chúng ta cần có một số dữ liệu. Chúng tôi sử dụng hai tín hiệu làm bộ dữ liệu của mình. Cái đầu tiên là xung vuông và cái thứ hai là xung tam giác
Để đơn giản, chúng tôi xem xét tập dữ liệu một chiều. Tất cả các gói được xem xét cũng hoạt động với dữ liệu 2D. Điều này cung cấp một ứng dụng rõ ràng để xử lý hình ảnh tích chập. 3 gói thiết yếu + triển khai python thuần túyBây giờ, chúng ta đã sẵn sàng đi sâu vào các triển khai tích chập khác nhau. Chúng tôi bắt đầu với việc triển khai chỉ dành cho Python. Điều này cho chúng ta cơ sở. Sau đó, chúng tôi so sánh kết quả với 3 gói xử lý tín hiệu thiết yếu cung cấp triển khai tích chập của riêng chúng Triển khai python bản địaĐây là phương pháp chỉ dành cho Python mà không có bất kỳ phụ thuộc bên ngoài nào để tính toán mối tương quan chéo. Để đơn giản, chúng tôi không xem xét bất kỳ phần đệm nào. Nghĩa là, chúng tôi sẽ chỉ xem xét độ trễ khi các tín hiệu trùng nhau hoàn toàn Thực hiện tích chập trong PythonĐầu ra cho việc triển khai vanilla Python sẽ giống như Triển khai tích chập Python thuần túyNặng nềKhi thực hiện bất kỳ tính toán số hoặc khoa học nào bằng Python, NumPy thường là gói đầu tiên sẽ được nhập. NumPy có sẵn một triển khai tiện lợi để tích chập Bạn có thể chọn 1 để xử lý các tín hiệu chồng lấp một phần, tôi. e. , đệm ở đầu và cuối tín hiệu. Chúng tôi sử dụng 2, chỉ xem xét các tín hiệu chồng chéo hoàn toàn. Điều này làm cho việc so sánh với triển khai tham chiếu chỉ dành cho Python của chúng tôi dễ dàng hơn. Thực hiện tích chập bằng NumPyĐầu ra của triển khai NumPy giống hệt với triển khai chỉ dành cho Python, cũng có thể được sử dụng để xác minh việc triển khai của chúng tôi Tích chập trong NumPyKiểm tra hướng dẫn tham khảo NumPy để biết thêm ví dụ scipySciPy là gói dành cho phân tích số và đặc biệt là nhiều phương pháp dành riêng cho xử lý tín hiệu. Bất cứ khi nào NumPy thiếu phương thức, SciPy sẽ là mục tiêu tiếp theo để thực hiện Convolution có thể được tìm thấy trong gói 3. Phương pháp này cung cấp các lựa chọn đệm tương tự như NumPy. Ngoài ra, bạn có thể chọn giữa triển khai 4 và 5. Triển khai trực tiếp tuân theo định nghĩa về tích chập tương tự như triển khai Python thuần túy mà chúng ta đã xem xét trước đây. Cách tiếp cận dựa trên 5 thực hiện tích chập trong miền Fourier, có thể hiệu quả hơn đối với các tín hiệu dài
Đầu ra của triển khai SciPy giống hệt với triển khai chỉ dành cho Python và NumPy Convolution sử dụng SciPyKiểm tra hướng dẫn tham khảo SciPy để biết thêm ví dụ thiên vănAstropy là gói tập trung vào thiên văn học và ít phổ biến hơn các gói nói trên. Tuy nhiên, nó chứa các chức năng có mục đích chung như 1 cũng hữu ích cho các miền xử lý tín hiệu khácTích chập trong Astropy nhằm cải thiện việc triển khai SciPy, đặc biệt là đối với 2. Một số cải tiến này bao gồm
Ở đây, chúng tôi chỉ sử dụng tích chập 1D. Những cải tiến này rõ ràng hơn khi thực hiện tích chập chiều cao hơn Dưới đây, bạn có thể xem cách sử dụng 3 cho dữ liệu thử nghiệm của chúng tôi. Một hạn chế cần được quản lý là kernel cần có độ dài lẻ. Do đó, đối với độ dài tín hiệu chẵn, chúng tôi sẽ sử dụng phần đệm bằng 0 để làm cho tín hiệu có độ dài không đều Thực hiện tích chập 1D trong AstropyLưu ý rằng chúng tôi không có chuẩn hóa rõ ràng ở đây, vì việc triển khai Astropy được bật chuẩn hóa theo mặc định Điều này sẽ dẫn đến biểu đồ sau. Lưu ý cách đỉnh được dịch chuyển từ các phiên bản NumPy và SciPy. Hình dạng của chập là giống hệt nhau Biểu đồ ví dụ tích chập AstropyKiểm tra hướng dẫn tham khảo Astropy để biết thêm ví dụ Bản tóm tắtChúng tôi không so sánh hiệu suất của các phương pháp tích chập. Nếu chúng ta bỏ qua những khác biệt về hiệu suất tiềm năng, thì đó là sự lựa chọn khá thuận tiện giữa các gói. Sử dụng bất kỳ gói nào bạn đang sử dụng. Nếu bạn muốn các tính năng nâng cao hơn một chút thì 4 có thể là lựa chọn dành cho bạn. Nếu không, tôi sẽ chọn 5 hoặc 6. Phiên bản Python thuần túy chỉ nên được sử dụng để tham khảo hoặc nếu bạn thực sự đang cố gắng cắt giảm các phần phụ thuộc, vì rất có khả năng cần xem xét hiệu suất.
Python hoạt động như thế nào?Hoạt động của phương thức NumPy Convolve() trong Python
. integrating the first array, reverse it and then convolve onto the second array and then multiply at those points where arrays overlap, which will yield a discrete and linear convolution array.
tích chập giải thích với ví dụ là gì?Tích chập có thể được định nghĩa cho hàm trên không gian Euclide và các nhóm khác (dưới dạng cấu trúc đại số) . Ví dụ: các hàm tuần hoàn, chẳng hạn như biến đổi Fourier thời gian rời rạc, có thể được xác định trên một vòng tròn và được tích chập bởi phép tích chập tuần hoàn. |