WinCE下电阻式触摸屏的测试方法

by admin on 2019年3月9日

File:      StudyYUV.txt
Name:      深入学习YUV色彩模型
Author:    zyl910
Version:   V1.1
Updata:    2006-5-28

     
很早在此之前在《四线电阻式触摸屏驱动的优化》一文中,介绍了TCC89平台触摸驱动的改造方式。实践注脚,使用此办法后,触摸屏大约再也从不出现跳笔的图景,达到了预期的目标。近日YJUN在调节应用时,发现一个题材,困惑跟触摸屏驱动有提到——触摸驱动在一秒内上报给操作系统的罗列太少,导致界面展现在滑行时不太流利。为了定量测试该参数,写了一个简短的小工具TSCApp.exe,界面如下图所示。

  方今意料之外又对图形学有了感兴趣,翻出了连年前读书图形学的笔记,感触良多。于是将它们整理好发了上去。

图片 1

一、基础

     
图中的37/s象征的是手写输入的灵敏度参数。在按下触摸屏并异常的快的滑行时,观看该参数的轻重缓急,该值越大表明手写输入的灵敏度越高,该值越小,表明手写输入的灵敏度越低,也正是说使用手写输入法时大概会并发笔迹不够圆滑的动静。37/s略微低了一部分,依照老邓的说的,要很好的帮助手写输入最好能到60左右,至少也收获50。用M8上测试了一晃,它能到86/s,如下图所示。

  QX56GB转YUV的更换是这么的:
[Y] = [ 0.299  0.587  0.114]   [R]
[U] = [-0.148 -0.289  0.437] * [G]
[V] = [ 0.615 -0.515 -0.100]   [B]

     
图片 2 

  YUV转智跑GB的转移是那般的:
[R] = [1  0      1.140]   [Y]
[G] = [1 -0.395 -0.581] * [U]
[B] = [1  2.032  0    ]   [V]

      看来触摸驱动确实还有更为优化的必不可少,须要增强手写灵敏度参数。

 

     
对于触摸屏驱动来说,除了手写灵敏度参数外,其余3个很重点的题材就是跳笔。测试跳笔的措施也很简短,轻按触摸屏,观看小红点是不是发散,是或不是离开按下的职务。发散得越厉害或离开按下的职位越远,就印证跳笔越严重。

贰 、那个变换周详是什么演绎出来的?

     
触摸驱动的CPU占用率也是二个急需考虑的因素。下图是在TCC89平台上测试手写灵敏度参数时的Performance
Monitor截图。

  最开端,小编是想找1个PRADOGB与YUV转换的急速算法,于是从头商讨它的周到。

     
图片 3

2.1 YUV转RGB

      能够看到,CPU的占用率向来相比平稳,没有太大的大起大落。

  发轫以YUV转普拉多GB为突破口。注意在转移矩阵中有三个0,所以能够去掉一回乘法:
B = Y + 2.032*U
R = Y + 1.140*V

     
触摸屏测试小工具的下载地址:http://files.cnblogs.com/we-hjb/TSCApp.rar

  利用“Y = 0.299*R + 0.587*G + 0.114*B”这么些事实来推导G:
G = (Y – 0.299*R – 0.114*B) / 0.587

  将B、途胜的总计公式代入并化简:
G = [Y – 0.299*(Y + 1.140*V) – 0.114*(Y + 2.032*U)] / 0.587
  = [Y – (0.299*Y + 0.299*1.140*V) – (0.114*Y + 0.114*2.032*U)]
/ 0.587
  = [(Y – 0.299*Y – 0.114*Y)- 0.299*1.140*V – 0.114*2.032*U] /
0.587
  = [(1 – 0.299 – 0.114)*Y – 0.299*1.140*V – 0.114*2.032*U] /
0.587
  = (0.587*Y – 0.299*1.140*V – 0.114*2.032*U) / 0.587
  = Y + (-0.299*1.140*V – 0.114*2.032*U) / 0.587
  = Y – (0.299*1.140 / 0.587)*V – (0.114*2.032 / 0.587)*U
  = Y – (0.114*2.032 / 0.587)*U – (0.299*1.140 / 0.587)*V
  = Y – 0.394630*U – 0.580681*V

  正好与YUV转XC90GB的全面符合。
  完整的更换公式:
B = Y + 2.032*U
R = Y + 1.140*V
G = Y – (0.114*2.032 / 0.587)*U – (0.299*1.140 / 0.587)*V

2.2 RGB转YUV
  从分析YUV转OdysseyGB时,大家发现了五个关键周详——与U有关的2.032 和
与V有关的1.140。所以我们拿它们去乘奇骏GB转YUV转换矩阵的周到试试:
U: 2.032 * [-0.148 -0.289  0.437] = [-0.300736 -0.587248 
0.887984]
V: 1.140 * [ 0.615 -0.515 -0.100] = [ 0.701100 -0.587100 -0.114000]

  观察那么些周详,发现有八个特点:
  1.那多少个负数周全与“彩色转灰度”周密(0.29玖 、0.58七 、0.114)很相像。
  2.十三分正数周全 正好等于 多个负数周到之和的相对值。

  所以我们得以将U、V部分的更换矩阵看成这么些样子:
U: (1 / 2.032) * [ -0.299 -0.587 1-0.114]
V: (1 / 1.140) * [1-0.299 -0.587  -0.114]

  完整的转换公式:
[Y] = [   0.299          0.587           0.114       ]   [R]
[U] = [( -0.299)/2.032 (-0.587)/2.032 (1-0.114)/2.032] * [G]
[V] = [(1-0.299)/1.140 (-0.587)/1.140 ( -0.114)/1.140]   [B]

  用矩阵总括“牧马人GB转YUV”非常的慢,大家可依据“YUV转ENCOREGB”逆推:
Y = 0.299*R + 0.587*G + 0.114*B
U = (1 / 2.032)*(B-Y)
V = (1 / 1.140)*(R-Y)

2.3 小结

  所谓的YUV色彩模型是由0.29⑨ 、0.58⑦ 、0.11四 、2.03贰 、1.140那七个数字定义出来的,万分简短、精巧。可是那还不是最精细的,YCbCr完全是由0.29⑨ 、0.58柒 、0.114这多个数字定义出来的,详见《深刻学习Ycbcr色彩模型》。

 

③ 、整数算法

  先将眼下的硕果列出来。
  RGB转YUV:
Y = 0.299*R + 0.587*G + 0.114*B
U = (1 / 2.032)*(B-Y)
V = (1 / 1.140)*(R-Y)

  YUV转RGB:
B = Y + 2.032*U
R = Y + 1.140*V
G = Y – (0.114*2.032 / 0.587)*U – (0.299*1.140 / 0.587)*V

  能够见到,U、V、Lacrosse、B 的计量便是用乘法缩放数值,完全能够数组查表。
  至于Y的计算,请参考《彩色转灰度算法彻底学习》
  唯一麻烦一点的是G,因为它有八个乘法,直接整数查表或许不规范。所以能够考虑将数值缩放65536倍(十四位精度)。
  差不多是如此:
Y = (R*19595 + G*38469 + B*7472) >> 16
U = YUV_B2U[0x100 + B – Y]
V = YUV_R2V[0x100 + R – Y]

B = Y + YUV_U2B[0x100 + U]
R = Y + YUV_V2R[0x100 + V]
G = Y – ((YUV_U2G[0x100 + U] + YUV_V2G[0x100 + V]) >> 16)

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图