2012-03-21 34 views
9

Làm cách nào để tôi thực hiện thao tác làm mịn gaussi trong thứ nguyên thứ 3?Làm cách nào để lọc Gaussian trong 3D

Tôi có kim tự tháp phát hiện này, số phiếu tích lũy ở bốn tỷ lệ. Các đối tượng được tìm thấy ở mỗi đỉnh.

Detection Pyramid

Tôi đã được làm nhẵn mỗi trong số họ trong 2d, và đọc trong giấy tờ của tôi rằng tôi cần phải lọc các chiều thứ ba với một \ sigma = 1, mà tôi havent thử trước, tôi thậm chí không chắc chắn những gì nó có nghĩa là.

Tôi đã tìm ra cách để làm điều đó trong Matlab, và cần một cái gì đó mô phỏng trong opencv/C++.

Giá trị thô Matlab: Raw Matlab Làm mịn bằng M0 = smooth3 (M0, 'gaussian'); : Smooth

+0

Mục đích của việc làm mịn bổ sung là gì? Có một số thông tin khác nhau ở mỗi cấp kim tự tháp không? –

+0

Nếu bạn nhìn vào hình ảnh, các đỉnh được tìm thấy ở một trong bốn thang đo, vì vậy tôi giả sử rằng việc làm mịn là để tìm một đỉnh toàn cầu trên tất cả các tỷ lệ. Nó được viết trong bài báo của tôi để phát hiện, tôi chỉ tìm các đỉnh trong tất cả các thang và xác nhận đó là ứng cử viên tốt nhất và muốn so sánh với phương pháp được đề xuất. –

+0

Làm mịn Gaussian trong 3D cũng giống như làm mịn gaussian trong 2D. Bạn áp dụng một bộ lọc convolution cho 3 kích thước như vậy G (x, y, z) = Q – Adam

Trả lời

2

Lâu trước (trong 2008-2009) Tôi đã phát triển một mẫu C++ mẫu nhỏ để áp dụng một số biến đổi đơn giản và bộ lọc chập. Nguồn của thư viện có thể được tìm thấy trong Linderdaum Engine - nó không có gì để làm với phần còn lại của động cơ và không sử dụng bất kỳ tính năng nào của động cơ. Giấy phép là MIT, vì vậy hãy làm bất cứ điều gì bạn muốn với nó.

Hãy xem vào mã nguồn của Linderdaum (http://www.linderdaum.com) tại Src/Linderdaum/Images/VolumeLib. *

Chức năng để chuẩn bị hạt nhân là PrepareGaussianFilter() và MakeScalarVolumeConvolution() áp dụng bộ lọc. Thật dễ dàng để thích ứng với thư viện cho các nguồn dữ liệu khác nhau vì I/O được thực hiện bằng cách sử dụng các hàm gọi lại.

2

Bộ lọc Gaussian có thể phân tách được. Bạn áp dụng bộ lọc 1D tại mỗi chiều như sau:

for (dim = 0; dim < D; dim++) 
    tensor = gaussian_filter(tensor, dim); 

Tôi muốn giới thiệu OpenCV cho một thực hiện một bộ lọc gaussian (và xử lý hình ảnh nói chung) trong C++.

Lưu ý rằng điều này giả định rằng các cấp kim tự tháp của bạn có cùng kích thước. Bạn có thể có các chức năng của riêng bạn lấy mẫu kim tự tháp không gian quy mô của bạn trên bay trong khi quay vòng thứ ba, nhưng nếu bạn có đủ bộ nhớ, tôi tin rằng sẽ nhanh hơn để mở rộng mức độ thô hơn của bạn để có cùng kích thước cấp độ.

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