MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / resize_linear_32f

Function resize_linear_32f

dnn/src/naive/resize/resize_cv.cpp:233–262  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

231}
232
233void resize_linear_32f(const Mat32f& src, Mat32f& dst) {
234 AlignedVector<int> tabsx(dst.rows());
235 AlignedVector<int> tabsy(dst.cols());
236 AlignedVector<float> tabrx(dst.rows());
237 AlignedVector<float> tabry(dst.cols());
238 build_tabs_linear_32f(src, dst, tabsx, tabsy, tabrx, tabry);
239 const size_t ch = src.channels();
240 // brute-force
241 for (size_t dx = 0; dx < dst.rows(); ++dx) {
242 const float* psrc0 = src.ptr(tabsx[dx] + 0);
243 const float* psrc1 = src.ptr(tabsx[dx] + 1);
244 float* pdst = dst.ptr(dx);
245 float rx = tabrx[dx];
246 float irx = 1.0f - rx;
247 for (size_t dy = 0; dy < dst.cols(); ++dy) {
248 float* pcdst = pdst + dy * ch;
249 const float* pcsrc00 = psrc0 + (tabsy[dy] + 0) * ch;
250 const float* pcsrc01 = psrc0 + (tabsy[dy] + 1) * ch;
251 const float* pcsrc10 = psrc1 + (tabsy[dy] + 0) * ch;
252 const float* pcsrc11 = psrc1 + (tabsy[dy] + 1) * ch;
253 float ry = tabry[dy];
254 float iry = 1.0f - ry;
255 for (size_t c = 0; c < ch; ++c) {
256 float res = rx * (pcsrc11[c] * ry + pcsrc10[c] * iry) +
257 irx * (pcsrc01[c] * ry + pcsrc00[c] * iry);
258 pcdst[c] = res;
259 }
260 }
261 }
262}
263
264// linear 8u
265void build_tabs_linear_8u(

Callers 1

resize_cv_execMethod · 0.70

Calls 5

build_tabs_linear_32fFunction · 0.70
rowsMethod · 0.45
colsMethod · 0.45
channelsMethod · 0.45
ptrMethod · 0.45

Tested by

no test coverage detected