Tương quan pha - Hiệu suất kém đối với hình ảnh nhiễu / mờ?


9

Tôi đã thử nghiệm thành công thuật toán tương quan pha 1D để xác định sự dịch chuyển dọc giữa hai hình ảnh tổng hợp.

Tuy nhiên, khi tôi chuyển sang hình ảnh thực, nó hoàn toàn không thể phát hiện bản dịch (đỉnh nằm ở 0, kết quả sai).

Tôi có những hình ảnh sau:

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Và kết quả tương quan pha (Độ lớn, Thực, Tưởng tượng):

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Đường quét đầu tiên của hình ảnh hoàn toàn trắng, nhưng sự thay đổi rõ ràng là lớn hơn (20 pixel).

Kết quả dự kiến ​​là dòng trắng trên hàng thứ 20 chỉ xảy ra trên hình ảnh tổng hợp hoặc nhiễu nhẹ.

Thuật toán của tôi rất đơn giản - cho mỗi cột hình ảnh:

  1. Tính 1D FT của cột hình ảnh nguồn và đích ( a=FT(A), b=FT(B))
  2. Tính toán phổ công suất chéo ( cross_power = a *. conj(b) / |a *. conj(b)|) - *.biểu thị sự biến đổi theo điểm, conj(x)biểu thị liên hợp phức tạp
  3. Tính tương quan pha ( phase = IFT(cross_power))
  4. Tìm cường độ tối đa trong mỗi cột của phase.
  5. Tìm vị trí đỉnh đồng thuận (ví dụ: trung vị của các vị trí đỉnh được phát hiện)

Bạn có thể vui lòng tư vấn cho tôi cách cải thiện thuật toán tương quan pha cơ sở để đối phó với hình ảnh trong thế giới thực (nhiễu) không?

Tôi có nên sử dụng NCC (Chuẩn hóa chéo tương quan) thay vì tương quan pha dựa trên FFT không?


CẬP NHẬT

Tôi đã thử nghiệm với phần đệm bằng 0 để loại trừ các lỗi được chuyển bằng cách dịch chuyển vòng tròn (chỉ có sự dịch chuyển tuyến tính đơn giản của hình ảnh là mong muốn) và đã thử nghiệm điều này trên các hình ảnh gốc từ Wikipedia:

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Đỉnh đơn rõ ràng là có:

nhập mô tả hình ảnh ở đây

Tuy nhiên - nếu tôi thực hiện làm mịn nhẹ (làm mờ Gaussian) để giảm nhiễu và thực sự cải thiện kết quả, thì mối tương quan pha xuất hiện hoàn toàn sai lệch:

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Đây là phiên bản nâng cao - đỉnh ban đầu yếu hơn (tại sao ??) và đã xuất hiện các đỉnh mới xung quanh ca 0 (tại sao ??):

nhập mô tả hình ảnh ở đây


Như tôi thấy, trên đỉnh tối đa hình ảnh tương quan pha của bạn cho thấy sự thay đổi tương ứng. Tuy nhiên, tôi không biết đâu là biên độ thực sự của mối tương quan chéo giữa các hình ảnh đó.
Eddy_Em

@Eddy_Em Tôi sẽ tạo các hình ảnh riêng biệt cho phần thực và phần ảo và thêm nó vào bài viết sau một thời gian. Cho đến nay chỉ có thông tin cường độ.
Libor

Tài liệu tham khảo của bạn trong Wikipedia nói rằng hãy sử dụng các biến đổi 2D Fourier. Tại sao bạn sử dụng biến đổi 1D?
Peter K.

1
Vâng, vâng, nhưng bạn cần so sánh táo với táo. Chỉ cần so sánh các cột giống nhau trong mỗi hình ảnh sẽ không có được những gì bạn muốn. Nếu chuyển động đủ lớn, không có mối tương quan nào giữa các cột. Bạn cần xem xét hình ảnh nói chung. Một cách có thể hoạt động là tổng hợp các hàng trong cả hai hình ảnh và thực hiện công việc 1D trên đó.
Peter K.

1
@PeterK. Đây là 2D - Tôi đã kiểm tra rằng mối tương quan pha xuất hiện như trong bài viết Wiki, chỉ bị lật (có thể là do hệ số nhân bị lật khi tính toán phổ công suất chéo hoặc đầu vào / đầu ra bị lật). Tôi thấy rằng làm mịn (cửa sổ Gaussian) thực sự làm tổn thương kết quả cuối cùng, nhưng không chắc tại sao. Cuối cùng tôi sẽ sử dụng Tương quan chéo được chuẩn hóa thay thế, vì Tương quan pha có vẻ yếu khi xử lý dữ liệu tần số thấp.
Libor

Câu trả lời:


10

Phiên bản một chiều

Phiên bản một chiều mà bạn liệt kê sẽ không hoạt động. Khi có sự thay đổi đủ lớn về hình ảnh (nhiều hơn một hoặc hai pixel trong hình ảnh trong thế giới thực), sẽ không có gì liên quan đến các pixel cột.

Để biết ví dụ về điều này, hãy thử:

I5 = rand(100,100)*255;
I6 = zeros(100,100);
I6(11:100,22:100) = I5(1:90,1:79);

Vì vậy, chúng tôi có I5:

nhập mô tả hình ảnh ở đây

và I6:

nhập mô tả hình ảnh ở đây

Thì tương quan pha một chiều chỉ là:

nhập mô tả hình ảnh ở đây

trong khi đó tương quan pha hai chiều là:

nhập mô tả hình ảnh ở đây

Hơi khó nhìn, nhưng có một đỉnh rất cao ở góc dưới bên phải của hình ảnh. Không có đỉnh rõ ràng tồn tại trong phiên bản một chiều.

Tại sao không giúp làm mịn? # 1

Điều tương quan đang cố gắng làm là tìm các biến thể "tương tự" trong mỗi hình ảnh. Nếu các tín hiệu cơ bản là đủ ngẫu nhiên, thì điều này sẽ hoạt động tốt: sự tương quan của nhiễu trắng với chính nó mang lại một đỉnh thực sự tốt đẹp ở điểm gốc và gần bằng 0 ở nơi khác.

Làm mịn hình ảnh "ngẫu nhiên" bằng Gaussian sẽ có tác dụng làm mờ đi mối tương quan mà bạn mong đợi --- lan truyền năng lượng ở bất kỳ đỉnh nào trên một khu vực rộng hơn.

Làm mịn có tác dụng ngược lại là "làm trắng trước" hình ảnh. Làm trắng trước (như tên cho thấy) cố gắng làm cho hình ảnh giống như nhiễu trắng hơn --- có dạng tốt nhất nếu chúng ta thực hiện phát hiện dựa trên tương quan (trong đó đỉnh được định vị tốt).

Những gì bạn nên làm là sử dụng diffthao tác MATLAB cho một cách đơn giản, nhưng hiệu quả đáng ngạc nhiên, hình ảnh làm trắng trước.

Xem ví dụ này.

Tại sao không giúp làm mịn? # 2

Tại sao làm mịn gây ra các đỉnh thêm?

Nếu bạn làm mịn từng hình ảnh với một kernel k(x,y) sau đó chúng tôi nhận được:

ha=gakhb=gbk
Ở đâu là chập.

Hiện nay,

Ha=KGaHb=KGbR=HaHb|HaHb|=|K|2GaGb|K|2|GaGb|=GaGb|GaGb|

Điều tôi nghi ngờ đang xảy ra (mặc dù tôi không chắc chắn) là có lẽ hạt nhân của bạn có giá trị gần như bằng không trong miền tần số, gây ra vấn đề về số?

Nếu tôi áp dụng kernel:

K = one(5,5);

để hình ảnh ngẫu nhiên của tôi, sau đó tôi nhận được:

nhập mô tả hình ảnh ở đây

cho mối tương quan hai chiều, làm cho đỉnh rộng hơn, nhưng không thể hiện các vấn đề bạn đang thấy.


Câu trả lời tuyệt vời, cảm ơn! Vấn đề tôi có là đỉnh không chỉ bị cục bộ xấu mà còn xuất hiện ở vị trí hoàn toàn sai. Cuối cùng tôi cũng đã đọc JPLewis: "Tương quan chéo bình thường hóa nhanh" nói rằng tương quan pha có vấn đề với năng lượng hình ảnh khác nhau ở các vị trí khác nhau và do đó nên áp dụng lọc trước - bộ lọc Laplacian được đề xuất để làm trắng tín hiệu mặc dù bất kỳ bộ lọc thông cao nào sẽ làm. Vấn đề vẫn là tần số cắt không xác định trước và ngưỡng quá cao hoặc quá thấp sẽ lại làm tổn thương khớp. Nhưng tôi sẽ thử nó.
Libor

1
Off Topic: Thật buồn cười khi Google tìm kiếm "tín hiệu làm trắng" sẽ dạy cho bạn rất nhiều về kem đánh răng: D
Libor

2

Cách dễ nhất để có được hiệu suất tốt từ tương quan pha bằng cách làm trắng tín hiệu là lấy nhật ký cường độ. Bạn cũng có thể lọc nhiễu từ bề mặt tương quan kết quả. Để biết chi tiết xem “Cải thiện tương quan giai đoạn cho Ảnh xác nhận”, Kỷ yếu (ICVNZ2011) Hình ảnh và Vision Computing New Zealand năm 2011, p.488-493,, http://www98.griffith.edu.au/dspace/bitstream/handle/ 10072/44512/74188_1.pdf? Trình tự = 1

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.