3D гауссовский фильтр в MATLAB
есть 3д eqivalent из imfilter доступно для MATLAB? Я хочу применить гауссовскую фильтрацию к 3D-гистограмме. Я собирался реализовать его сам, создав (3D) гауссовский фильтр, затем зацикливаясь на каждом элементе моей гистограммы и суммируя соответствующие записи данных.
однако я не хотел реализовывать его сам медленно и неэффективно, если что-то уже есть или более умный способ сделать это.
3 ответов
существует два способа решить эту проблему, чтобы эффективно выполнить фильтрацию:
(1) Использовать CONVN три раза, чтобы отфильтровать ваши данные с тремя 1D Gaussians, один x-by-1-by-1, один 1-by-y-by-1, и один 1-by-1-z.
(2) Если у вас есть панель инструментов обработки сигналов, используйте FFTFILT для выполнения фильтрации в обратном пространстве (или использовать любой из алгоритмов свертки fft на файлообмене).
[(3) отправить мне по электронной почте и я пришлю тебе fftFilterImage
, который выполняет фильтрацию 3D Gauss.]
imfilter уже может выполнять 3D-фильтрацию, если матрица данных и фильтр, который вы ей даете, являются 3D. См.страница imfilter.
эта задача может быть обработана с новым (по состоянию на R2015a) imgaussfilt3