MCPcopy Create free account
hub / github.com/arrayfire/arrayfire / gaussFilter

Function gaussFilter

src/backend/opencl/kernel/sift.hpp:92–118  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

90
91template<typename T>
92Param gaussFilter(float sigma) {
93 // Using 6-sigma rule
94 unsigned gauss_len = std::min((unsigned)round(sigma * 6 + 1) | 1, 31u);
95
96 T* h_gauss = new T[gauss_len];
97 gaussian1D(h_gauss, gauss_len, sigma);
98
99 Param gauss_filter;
100 gauss_filter.info.offset = 0;
101 gauss_filter.info.dims[0] = gauss_len;
102 gauss_filter.info.strides[0] = 1;
103
104 for (int k = 1; k < 4; k++) {
105 gauss_filter.info.dims[k] = 1;
106 gauss_filter.info.strides[k] =
107 gauss_filter.info.dims[k - 1] * gauss_filter.info.strides[k - 1];
108 }
109
110 dim_t gauss_elem = gauss_filter.info.strides[3] * gauss_filter.info.dims[3];
111 gauss_filter.data = bufferAlloc(gauss_elem * sizeof(T));
112 getQueue().enqueueWriteBuffer(*gauss_filter.data, CL_TRUE, 0,
113 gauss_elem * sizeof(T), h_gauss);
114
115 delete[] h_gauss;
116
117 return gauss_filter;
118}
119
120template<typename T, typename convAccT>
121void convSepFull(Param& dst, Param src, Param filter) {

Callers

nothing calls this directly

Calls 5

roundFunction · 0.85
bufferAllocFunction · 0.85
gaussian1DFunction · 0.70
minFunction · 0.50
getQueueFunction · 0.50

Tested by

no test coverage detected