-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Generalizing and unifying frequency filters #116
Comments
I completely agree, the generalization would be very useful. The question is how flexible the resulting filter should be. Is it meant for simple operations like the I can also imagine a more general solution with the property e.g. Windowing could be also dropped to be a separate task, because it has nothing to do with the filtering, it's just an additional step. I can imagine adding some nice vignetting effects to my photos where I don't need any filter, just a window in real space. Regarding the Gaussian blur, I would drop it and implement is as a frequency filter as well. I don't know for which sigmas the processing speed is better by real convolution but for sure the fft version gets much faster pretty quickly. |
I am talking about windowing of the filter itself, i.e. Butterworth is multiplied by the ramp filter to reduce high frequencies or with a brickwall lowpass to produce the actual lowpass Butterworth. |
Actually, the "window" is nothing else than another "filter". I can imagine something like ufo-launch read path=foo ! fft dimensions=1 ! ramp ! butterworth ! ... This would be very general and convenient for trying out new filters. One would create the final "filter" by combining many ufo tasks. Then, we can create a specialized |
That. In my opinion it should be a "perfect" filter which is then (maybe with subsequent tasks) windowed. Perfect would be ideal ramp, low-, high- and bandpass filters. However, I would avoid splitting those up and also avoid splitting individual windowing filters up because they tend to share a lot of code and properties anyway. |
Alright, why don't you propose something in terms of a PR and then we continue the discussion there. |
That was my plan ;-) |
Rationale
Up to now, the
filter
task is mainly used for filtered backprojection, i.e. a one-dimensional, ramp-like filter in the Fourier domain. However, filtering has general purposes besides that and might be generalized in several directions:Suggestions
type
property specifying what kind of filter we have, i.e.ramp
,lowpass
,highpass
, to ease transition this will be shared with the oldfilter
property andramp
will still be the default.window
property with which the filter is multiplied, i.e.hamm
,butterworth
,faris-byer
.dims
property to choose between one- and two-dimensional filters. Again to ease transition, one-dimensional should be the default.blur
task and replace that with agaussian
as a filter type. On the other handblur
is implemented as a Gaussian kernel convolution and might be useful for certain applications.@tfarago: what do you think?
The text was updated successfully, but these errors were encountered: