-
-
Notifications
You must be signed in to change notification settings - Fork 56.5k
Closed
Description
Describe the feature and motivation
Non-SIMD version
opencv/modules/imgproc/src/demosaicing.cpp
Lines 659 to 662 in efa4d91
| t0 = (bayer[0] + bayer[2] + bayer[bayer_step*2] + bayer[bayer_step*2+2])*rcoeff; | |
| t1 = (bayer[1] + bayer[bayer_step] + bayer[bayer_step+2] + bayer[bayer_step*2+1])*G2Y; | |
| t2 = bayer[bayer_step+1]*(4*bcoeff); | |
| dst[0] = (T)CV_DESCALE(t0 + t1 + t2, SHIFT+2); |
SIMD version
opencv/modules/imgproc/src/demosaicing.cpp
Line 204 in efa4d91
| g0 = v_shr<2>(v_add(v_add(v_mul_hi(b0, _b2y), v_mul_hi(g0, _g2y)), v_mul_hi(r0, _r2y))); |
(a0 * b0 + a1 * b1 + a2 * b2 + (1 << 15)) >> 16 != ((a0 * b0 * 4 >> 16) + (a1 * b1 * 4 >> 16) + (a2 * b2 * 4 >> 16)) >> 2
For a fix, just like other functions which use CV_DESCALE.
For example,
opencv/modules/imgproc/src/color_lab.cpp
Lines 360 to 371 in efa4d91
| vx0 = v_shr<shift>(v_reinterpret_as_u32(v_add(v_dotprod(bg0, cxbg), v_dotprod(rd0, cxr1)))); | |
| vy0 = v_shr<shift>(v_reinterpret_as_u32(v_add(v_dotprod(bg0, cybg), v_dotprod(rd0, cyr1)))); | |
| vz0 = v_shr<shift>(v_reinterpret_as_u32(v_add(v_dotprod(bg0, czbg), v_dotprod(rd0, czr1)))); | |
| vx1 = v_shr<shift>(v_reinterpret_as_u32(v_add(v_dotprod(bg1, cxbg), v_dotprod(rd1, cxr1)))); | |
| vy1 = v_shr<shift>(v_reinterpret_as_u32(v_add(v_dotprod(bg1, cybg), v_dotprod(rd1, cyr1)))); | |
| vz1 = v_shr<shift>(v_reinterpret_as_u32(v_add(v_dotprod(bg1, czbg), v_dotprod(rd1, czr1)))); | |
| vx2 = v_shr<shift>(v_reinterpret_as_u32(v_add(v_dotprod(bg2, cxbg), v_dotprod(rd2, cxr1)))); | |
| vy2 = v_shr<shift>(v_reinterpret_as_u32(v_add(v_dotprod(bg2, cybg), v_dotprod(rd2, cyr1)))); | |
| vz2 = v_shr<shift>(v_reinterpret_as_u32(v_add(v_dotprod(bg2, czbg), v_dotprod(rd2, czr1)))); | |
| vx3 = v_shr<shift>(v_reinterpret_as_u32(v_add(v_dotprod(bg3, cxbg), v_dotprod(rd3, cxr1)))); | |
| vy3 = v_shr<shift>(v_reinterpret_as_u32(v_add(v_dotprod(bg3, cybg), v_dotprod(rd3, cyr1)))); | |
| vz3 = v_shr<shift>(v_reinterpret_as_u32(v_add(v_dotprod(bg3, czbg), v_dotprod(rd3, czr1)))); |
Additional context
No response
Reactions are currently unavailable