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

Function resize_nearest_32f

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

Source from the content-addressed store, hash-verified

139}
140
141void resize_nearest_32f(const Mat32f& src, Mat32f& dst) {
142 AlignedVector<int> tabx(dst.rows());
143 AlignedVector<int> taby(dst.cols());
144 const double fx = static_cast<double>(dst.rows()) / src.rows();
145 const double fy = static_cast<double>(dst.cols()) / src.cols();
146 const double ifx = 1.0f / fx;
147 const double ify = 1.0f / fy;
148 const size_t ch = src.channels();
149 for (size_t dx = 0; dx < tabx.size(); ++dx) {
150 double rx = dx * ifx;
151 int sx = static_cast<int>(floor(rx));
152 sx = megcv::saturate(sx, 0, static_cast<int>(src.rows()));
153 tabx[dx] = sx;
154 }
155 for (size_t dy = 0; dy < taby.size(); ++dy) {
156 double ry = dy * ify;
157 int sy = static_cast<int>(floor(ry));
158 sy = megcv::saturate(sy, 0, static_cast<int>(src.cols()));
159 taby[dy] = sy;
160 }
161 // taby[taby.size() - 1] = src.cols() - 1;
162 size_t tabxsize = tabx.size();
163 size_t tabysize = taby.size();
164 if (ch == 1) {
165 for (size_t dx = 0; dx < tabxsize; ++dx) {
166 float* pdst = dst.ptr(dx);
167 const float* psrc = src.ptr(tabx[dx]);
168 size_t dy = 0;
169 for (; dy < tabysize; dy++) {
170 const float* pcsrc = psrc + taby[dy];
171 pdst[dy] = pcsrc[0];
172 }
173 }
174 } else if (ch == 3) {
175 for (size_t dx = 0; dx < tabxsize; ++dx) {
176 float* pdst = dst.ptr(dx);
177 const float* psrc = src.ptr(tabx[dx]);
178 size_t dy3 = 0;
179 for (size_t dy = 0; dy < tabysize; ++dy, dy3 += 3) {
180 float* pcdst = pdst + dy3;
181 const float* pcsrc = psrc + taby[dy] * 3;
182 pcdst[0] = pcsrc[0];
183 pcdst[1] = pcsrc[1];
184 pcdst[2] = pcsrc[2];
185 }
186 }
187 }
188}
189
190// linear 32f
191void build_tabs_linear_32f(

Callers 1

resize_cv_execMethod · 0.70

Calls 7

floorFunction · 0.50
saturateFunction · 0.50
rowsMethod · 0.45
colsMethod · 0.45
channelsMethod · 0.45
sizeMethod · 0.45
ptrMethod · 0.45

Tested by

no test coverage detected