[opencv] 29/251: magic constants explained

Nobuhiro Iwamatsu iwamatsu at moszumanska.debian.org
Sun Aug 27 23:27:20 UTC 2017


This is an automated email from the git hooks/post-receive script.

iwamatsu pushed a commit to annotated tag 3.3.0
in repository opencv.

commit aa621d6f3c3fa89b965ae33d8d84734196de0717
Author: Rostislav Vasilikhin <rostislav.vasilikhin at intel.com>
Date:   Thu Jul 6 00:23:58 2017 +0300

    magic constants explained
---
 modules/imgproc/src/color.cpp          | 4 ++++
 modules/imgproc/src/opencl/cvtcolor.cl | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/modules/imgproc/src/color.cpp b/modules/imgproc/src/color.cpp
index f8cd0cb..b40726d 100644
--- a/modules/imgproc/src/color.cpp
+++ b/modules/imgproc/src/color.cpp
@@ -7011,6 +7011,8 @@ struct RGB2Luv_b
                const float* _whitept, bool _srgb )
     : srccn(_srccn), cvt(3, blueIdx, _coeffs, _whitept, _srgb)
     {
+        //0.72033 = 255/(220+134), 96.525 = 134*255/(220+134)
+        //0.9732 = 255/(140+122), 136.259 = 140*255/(140+122)
         #if CV_NEON
         v_scale_inv = vdupq_n_f32(1.f/255.f);
         v_scale = vdupq_n_f32(2.55f);
@@ -7211,6 +7213,8 @@ struct Luv2RGB_b
                const float* _whitept, bool _srgb )
     : dstcn(_dstcn), cvt(3, blueIdx, _coeffs, _whitept, _srgb )
     {
+        // 1.388235294117647 = (220+134)/255
+        // 1.027450980392157 = (140+122)/255
         #if CV_NEON
         v_scale_inv = vdupq_n_f32(100.f/255.f);
         v_coeff1 = vdupq_n_f32(1.388235294117647f);
diff --git a/modules/imgproc/src/opencl/cvtcolor.cl b/modules/imgproc/src/opencl/cvtcolor.cl
index 7c2e519..3fd1ad1 100644
--- a/modules/imgproc/src/opencl/cvtcolor.cl
+++ b/modules/imgproc/src/opencl/cvtcolor.cl
@@ -2035,7 +2035,9 @@ __kernel void BGR2Luv(__global const uchar * src, int src_step, int src_offset,
                 float v = L*fma(2.25f, Y*d, -_vn);
 
                 dst[0] = SAT_CAST(L * 2.55f);
+                //0.72033 = 255/(220+134), 96.525 = 134*255/(220+134)
                 dst[1] = SAT_CAST(fma(u, 0.72033898305084743f, 96.525423728813564f));
+                //0.9732 = 255/(140+122), 136.259 = 140*255/(140+122)
                 dst[2] = SAT_CAST(fma(v, 0.9732824427480916f, 136.259541984732824f));
 
                 ++y;
@@ -2137,7 +2139,9 @@ __kernel void Luv2BGR(__global const uchar * src, int src_step, int src_offset,
             {
                 float d, X, Y, Z;
                 float L = src[0]*(100.f/255.f);
+                // 1.388235294117647 = (220+134)/255
                 float u = fma(convert_float(src[1]), 1.388235294117647f, -134.f);
+                // 1.027450980392157 = (140+122)/255
                 float v = fma(convert_float(src[2]), 1.027450980392157f, - 140.f);
                 if(L >= 8)
                 {

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/opencv.git



More information about the debian-science-commits mailing list