Các triển khai biến đổi Haar (2D) rời rạc (2D)


7

Tôi quan tâm đến việc triển khai biến đổi Haar và nghịch đảo của nó, sao cho khi sáng tác luôn dẫn đến hoạt động nhận dạng. Đầu vào của tôi là các thứ tự rời rạc trong một phạm vi nhất định - và tôi cần đầu ra của biến đổi Haar là các số thứ tự (hoặc điểm cố định) rời rạc tương tự.

Tôi đã làm việc trên cơ sở rằng nếu tín hiệu đầu vào của tôi bao gồm các mẫu được phân phối đồng đều trên phạm vi 0..(2n1) và, về nguyên tắc, tín hiệu biến đổi của tôi cũng vậy, về nguyên tắc, tín hiệu ban đầu của tôi phải được tái tạo hoàn hảo bởi haar nghịch đảo.

Tôi đã thực hiện việc triển khai (Matlab) này bằng GNU Octave:

http://people.sc.fsu.edu/~jburkardt/m_src/haar/haar.html

Việc sử dụng các giá trị chính xác kép ... buộc tôi phải sử dụng round () để thiết lập một biểu diễn riêng biệt của dữ liệu được chuyển đổi để phù hợp với biểu diễn được chuyển đổi vào cùng một không gian trạng thái như ban đầu. Không có gì đáng ngạc nhiên, tôi thấy tôi cần sử dụng lại round () cho đầu ra từ biến đổi nghịch đảo.

Có lẽ sẽ không có gì ngạc nhiên khi vòng (haar_2d_inverse (vòng (haar_2d (tín hiệu)))) không hoàn toàn là chức năng nhận dạng cho hầu hết các giá trị của tín hiệu ... Thông thường, thường có một vài lỗi ngoài luồng tín hiệu được tái tạo - có vẻ gần như đối xứng (+1 hoặc -1 trên một số lượng nhỏ các mẫu được tái tạo) và điều này dường như gần như độc lập với sự lựa chọn của n.

Những gì tôi muốn biết là nếu có các triển khai 'tốt hơn' của haar_2d và haar_2d_inverse hoạt động trên các mẫu thứ tự? Là sự bất thường là hậu quả của việc thực hiện Haar hay cách tôi đã áp dụng vòng () ở giai đoạn trung gian? Nếu sau này, tôi có thể khắc phục điều này bằng cách chia tỷ lệ trước khi làm tròn không?


Có vẻ như bạn cần toán học điểm cố định, thay vì cố gắng xấp xỉ nó với điểm nổi.
datageist

Tôi nghi ngờ bạn đúng - nhà phân tích dữ liệu - nhưng sự phụ thuộc vào root-2 có liên quan và có thể khiến điều này trở nên khó khăn. Tôi ngạc nhiên rằng tôi không thể tìm thấy một triển khai mẫu với một tìm kiếm google.
aSteve

Câu trả lời:


1

Tôi nghĩ trong 2D Haar, 2là không bắt buộc, nếu biến đổi được áp dụng đồng thời theo cả hai hướng. Nó có dạnga+b+c+d2, chỉ yêu cầu thực hiện điểm cố định với điểm Q được chọn dựa trên số cấp. Tôi đã sử dụng điều này để triển khai Haar trong C cho các hệ thống nhúng và nó hoạt động mà không có lỗi làm tròn / cắt ngắn.

Ghi chú:
Đại diện của tôi không phải là 50, vì vậy đăng bài như câu trả lời. Nếu bất cứ ai có thể chuyển nó đến các bình luận thì nó sẽ tốt.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.