Comments (8)
Not currently, I went for a simpler implementation to start with. Also, I'm not sure how well FFT implementations perform for different sized inputs and whether it will really lead to gains for common use cases i.e. the default filters implemented in this crate 🤔.
I've got a lot on my plate right now so probably won't have time to work on this. However, I'm always open to PRs and can offer reviews and guidance. Any PR would also need benchmarks included as well to help measure the performance change. Alternatively, maybe someone on the cv discord would be willing to help. I'll post a link to this issue there https://discord.gg/N82kexYM
from ndarray-vision.
A comment on the discord:
I believe it reduces the complexity mainly when matrices sizes get bigger. The price of FFT is N log(N) and kernel convolutions are then element-wise multiplications so N. While basic convolution of a Kernel containing K elements (say K = 5x5 = 25) involves N * K multiplications. So as soon as K reaches log(N) it's worth. Imagine we have a full HD image, so 2 million pixels. Log(2000000) = 14.5 = roughly 4x4 kernel. So basically, as soon as your convolution kernel gets bigger than 3x3 it's worth it (roughly)
So the original implementation should stay but maybe be called something like SpatialConvolutionExt
, add an FftConvolutionExt
and then have ConvolutionExt
pick the appropriate one based on input sizes etc
from ndarray-vision.
Related Issues (20)
- Affine Transformations HOT 1
- Convolution: center of kernel in the upper left corner HOT 3
- Add thresholding algorithms submodule HOT 3
- benchmarking HOT 1
- Use ndarray Data trait more HOT 1
- Affine reflection
- Allow images to be 2D or 3D
- canny_edges function works for a long time HOT 4
- Compatibility with ndarray 0.13.1 HOT 3
- HoG feature extractor
- docs.rs build failed for 0.2 HOT 2
- Remove uninitialized usage HOT 1
- Error: linking with `link.exe` failed: exit code: 1120 HOT 5
- Serde support HOT 1
- how does the resize performance compare with opencv? HOT 1
- Add separate apply and calculate threshold methods
- docs failing for the latest release HOT 2
- Adaptive Histogram Equalisation
- Hough Transform HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ndarray-vision.