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

Function rep

dnn/src/naive/warp_perspective/opr_impl.cpp:78–111  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

76 sptr = sptrs[n];
77 }
78 rep(ow, OW) {
79 float numeratorw = mptr[0] * ow + mptr[1] * oh + mptr[2];
80 float numeratorh = mptr[3] * ow + mptr[4] * oh + mptr[5];
81 float denominator = mptr[6] * ow + mptr[7] * oh + mptr[8];
82 float alphaw = numeratorw / denominator;
83 float alphah = numeratorh / denominator;
84
85 int iw0 = get_real_coord(std::floor(alphaw) + 0, IW);
86 int iw1 = get_real_coord(std::floor(alphaw) + 1, IW);
87 int ih0 = get_real_coord(std::floor(alphah) + 0, IH);
88 int ih1 = get_real_coord(std::floor(alphah) + 1, IH);
89
90 alphaw -= floor(alphaw);
91 alphah -= floor(alphah);
92 if (bmode != BorderMode::CONSTANT) {
93 rep(c, C) {
94 visit_dst(c, oh, ow) = output_converter(
95 visit_src(c, ih0, iw0) * (1.0f - alphaw) * (1.0f - alphah) +
96 visit_src(c, ih0, iw1) * alphaw * (1.0f - alphah) +
97 visit_src(c, ih1, iw0) * (1.0f - alphaw) * alphah +
98 visit_src(c, ih1, iw1) * alphaw * alphah);
99 }
100 } else {
101 rep(c, C) {
102 auto val = visit_src_bd(c, ih0, iw0) * (1.0f - alphaw) *
103 (1.0f - alphah) +
104 visit_src_bd(c, ih0, iw1) * alphaw * (1.0f - alphah) +
105 visit_src_bd(c, ih1, iw0) * (1.0f - alphaw) * alphah +
106 visit_src_bd(c, ih1, iw1) * alphaw * alphah;
107 visit_dst(c, oh, ow) =
108 output_converter(std::isfinite(val) ? val : border_val);
109 }
110 }
111 }
112 }
113 MIDOUT_END();
114}

Callers 1

warp_perspective_cvFunction · 0.70

Calls 4

get_ptrMethod · 0.80
floorFunction · 0.50
isfiniteFunction · 0.50
get_indexFunction · 0.50

Tested by 1

warp_perspective_cvFunction · 0.56