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

Function compute_resize_area_tab

dnn/src/x86/resize/resize_cv.cpp:1909–1945  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1907}
1908
1909int compute_resize_area_tab(
1910 int ssize, int dsize, int cn, double scale, DecimateAlpha* tab) {
1911 int k = 0;
1912 for (int dx = 0; dx < dsize; dx++) {
1913 double fsx1 = dx * scale;
1914 double fsx2 = fsx1 + scale;
1915 double cellWidth = std::min(scale, ssize - fsx1);
1916
1917 int sx1 = ceil(fsx1), sx2 = floor(fsx2);
1918
1919 sx2 = std::min(sx2, ssize - 1);
1920 sx1 = std::min(sx1, sx2);
1921
1922 if (sx1 - fsx1 > 1e-3) {
1923 megdnn_assert(k < ssize * 2);
1924 tab[k].di = dx * cn;
1925 tab[k].si = (sx1 - 1) * cn;
1926 tab[k++].alpha = (float)((sx1 - fsx1) / cellWidth);
1927 }
1928
1929 for (int sx = sx1; sx < sx2; sx++) {
1930 megdnn_assert(k < ssize * 2);
1931 tab[k].di = dx * cn;
1932 tab[k].si = sx * cn;
1933 tab[k++].alpha = float(1.0 / cellWidth);
1934 }
1935
1936 if (fsx2 - sx2 > 1e-3) {
1937 megdnn_assert(k < ssize * 2);
1938 tab[k].di = dx * cn;
1939 tab[k].si = sx2 * cn;
1940 tab[k++].alpha =
1941 (float)(std::min(std::min(fsx2 - sx2, 1.), cellWidth) / cellWidth);
1942 }
1943 }
1944 return k;
1945}
1946
1947// resize Area Fast
1948template <typename T, typename WT, typename VecOp>

Callers 1

resize_opencvFunction · 0.70

Calls 3

minFunction · 0.50
ceilFunction · 0.50
floorFunction · 0.50

Tested by

no test coverage detected