为什么颜色突然变对称些了?

> 我身上皮肤上出现了一些小红点.颜色鲜红而且在不断的长大,呈圆形,手按着红色不变,以前在两个大腿内侧长了而且很对称,不知道是什么病变?

我身上皮肤上出现了一些小红点.颜色鲜红而且在不断的长大,呈圆形,手按着红色不变,以前在两个大腿内侧长了而且很对称,不知道是什么病变?

我身上皮肤上出现了一些小红点.颜色鲜红而且在不断的长大,呈圆形,手按着红色不变,以前在两个大腿内侧长了而且很对称,不知道是什么病变?

补充说明:我身上皮肤上出现了一些小红点.颜色鲜红而且在不断的长大,呈圆形,手按着红色不变,以前在两个大腿内侧长了而且很对称,不知道是什么病变?

}

业余版概要:安卓的一个核心的部分的代码,为了优化执行速度进行了魔改,结果写错了代码。结果导致 JPG 图片压缩发绿、崩坏。与安卓上的应用无关,它们是受害者(

(不是百度的阴谋。(认真)

前言:刚才在社区里和 等人一起研究,现在应该可以下一个精确的定论了。如他的答案所说,问题出在 RGB 色彩空间转换到 YUV 的时候。但问题不仅仅是精度下降,最大的问题是,错误的舍入(向下取整)。另外,JDCT_IFAST 方法会导致图片严重劣化:“格子状崩坏”、灰块、黑白块、画面粗糙,但是题目问的仅仅是变绿,就不在这上面浪费篇幅了。

百度贴吧是最多人批评的,而且……出事的客户端仅仅是 Android 系统上的。

我后来注意到 QQ 也有这个问题,特别是上传头像。以前一直不知道为什么有一些图稍微有点绿,以为是打开了新世界的大门(x

后来做了一点微小的测试,注意到百度贴吧、QQ,都会用 Android 系统提供的接口:

看起来都很干净……难不成是系统的问题?

我自己做了一个我这辈子写的第一个 Android 的小程序(我真不敢斗胆叫做 App),模仿一个正常的应用,反复 JPEG 压缩。发现还真是那么回事。顺便完善了一下,做成了“效果拔群的绿化器”。

现在就要说到 Android 系统到底为什么出了这个问题了。Android 系统自起诞生以来就引入了名为 Skia 的图像库(Google 自家产品),用于处理图像,其中包括把图片压缩成 JPEG(平时说的 JPG)。而 Skia 又是调用 libjpeg-turbo 来实现真正的压缩过程的。为了达到更好的压缩效果,JPEG 算法本身,将通常屏幕上表示颜色的 RGB(红绿蓝)数值,转换为 YUV 数值(亮度,蓝色分量,红色分量)。正常情况下这个算法是轻微有损的。

但是 Skia 不走寻常路,将这个变换算法的各个常数复制到自己的代码里(当然是合法地),然后降低了精度,以达到更高的速度(专业准确地说,从 16 位定点数,降低到了 8 位定点数),这导致了更大的损伤。

最可怕的是……在进行这个变换运算的最后一步,需要除以 256,而代码中,采用了右移操作代替除法以提高执行速度(看不懂可以跳过):

这个操作并没有什么问题,数学意义就是除以 256。但是问题出在:

1、直接截断了小数部分,等价于 trunc()。如果符号数是用补码实现的。即全部往负数方向取整。如:1.2 → 1; 3.9 → 3;0.0 → 0;-5.1 → -6.

2、较冒险的符号数移位:根据规范的定义,对符号数(可正可负的数)使用移位的效果将由具体的编译器明确定义决定(implementation-defined)。因为移位是一个符号无关的操作,对符号数移位将依赖于符号数的具体表现形式。而这个形式 C++ 没有给出一个限定,由具体的编译器自行决定,对于非“补码”(2's complement)的情况结果可能并不是所期待的那样数值整除2的幂。这里假设了编译器都能“正确”理解为整除。

复习一下 YUV 的定义:

因为向下取整,所以误差在 1 一个单位以内:0/256 到 1/256 也就是,YUV 三个值都变小 0.00% 到 0.39% 这个范围。

看一下 U, V 这两个决定颜色的值是如何变化的:

显然,YUV 值向负方向取整,结果是呼之欲出的:变暗,变绿。(这里的变暗是 YUV 里的 Y 减小,并不完全准确对应人类视觉的明暗概念)

这个错误的舍入,使得:所有在 0 ~ 255 范围内非整数的 YUV 值都受到影响。那么某个像素被舍入到整数之后,下一次再压缩 JPEG 应该会好一些吧?很不幸的是,随之而来的大量其他有损操作(比如 DCT 变换之后滤去高频)又会使得 YUV 值发生变化:如果发生变化,假设随机产生关于 0 对称的误差,那么实际上也有 50% 的机率使得这个数值 -1,因为只要比原来的值小,都会被向下舍去。

这使得,图片随着 Skia 缺陷的色彩空间变换算法反复压缩,越来越绿。

交回给 libjpeg-turbo 库自己来做色彩空间变换。这也正是本文开头提到的那个历史性的修复具体做的:把原本 Skia 库 YUV 转换代码全部删掉了,把这个过程留给整个过程最底层的 libjpeg-turbo 库自己来做,并且用默认的 JDCT_ISLOW 方法代替 JDCT_IFAST 方法,那么自然就没这个问题了。

注:libjpeg-turbo 是个运用极其广泛的库。可以说,基本上电脑上手机上能见到的 JPEG 压缩的地方用的一般都是 libjpeg-turbo。(iOS 应该也是吧?我没有苹果设备抱歉……Adobe 公司的魔法可能是另一回事)

如果不删除呢?自己捣鼓:
* 本节所提到的代码以及示例图片可以在这里找到:

首先我们要模拟一个 Skia 的 libjpeg-turbo 操作(略),然后,在把图片递交给 libjpeg-turbo 之前,把色彩空间像 Skia 一样,做一个变换(矩阵数据完全与 Skia 相同)。

我们所要做的修复就是,把运算改成能够对数字进行合理四舍五入的运算:

这里我把原版操作和修正版操作都写在一起了,把 #if 1 改成 #if 0 即可切换。(为什么我要说这些= =)

示例:左边为原版 Lena 酱,右边均为压缩质量设置为 80%,重复 30 次。

画质严重劣化,色彩偏绿。

不辣眼睛修正效果:8-bit 变换,移位除法,JDCT_FLOAT 方法。

可以看到关闭 JDCT_IFAST 之后画面细腻了。

继续修复舍入漏洞的效果:8-bit 变换,正常舍入的除法JDCT_FLOAT 方法。

可以看到色彩偏绿的问题被正确四舍五入修正了。

比起 8-bit 少了很多色斑,因为数字范围更大,不溢出了。

Q:为什么不用全身版 Lena () 做示例图?

(二营长,你他娘的意大利炮呢?!)

来一个小的总结,给非专业的旁友们看:
图片变绿是安卓系统一直以来的问题,直到 Android 7 才修复。原因是安卓系统内部的一个核心部件的代码,为了优化手机上运行的速度——写错了 = =。

, 22:32 修订:修正表述错误,高亮

, 23:56 修订:同步示例代码

, 00:38 修订:调整令人困惑的表述

, 23:29 修订:明确阐述各修复步骤的变化

, 23:31 修订:该死的我漏了句号

, 00:45 修订:对符号数移位的定性从“未定义的行为”修正为“由具体实现决定”

}

李叔(化名)今年63岁,一个多月前被查出晚期肺癌,至今难以接受。

他表示,自己虽然上了年纪,但平时身体很不错。3年前,李叔发现自己的手指头开始变粗,指甲也变形了,但没有肿胀疼痛等不适,所以没放在心上。

9月初,李叔患重感冒,高烧不退,医生发现肺部异常,安排了CT、气管镜、验血等一系列检查。CT结果显示,李叔的肺部有异常肿块,边缘不清晰。穿刺后病理结果表明,这是恶性肿瘤,中晚期

到现在,李叔已经接受了手术和3次化疗,仍需继续治疗。虽然他天生乐观,但还是忍不住懊悔,当初手指异常应该早点告诉医生。

手指是人最常用、最灵活的器官,若是哪天手指出现异常,不仅会使生活很不方便,更提示身体出了健康问题,特别是以下5个症状,应当警惕。

出现一侧手臂、手指发麻,应当怀疑是颈椎病、糖尿病病变造成的,此时麻木呈慢性和反复发作点,伴有颈肩部酸痛、僵硬。腰间盘突出等腰椎疾病也会引起手脚麻木,让人行动不便或大小便失禁。

除此之外,单侧肢体麻木还是脑梗的先兆,特别是老年人,若突然出现单侧肢体麻木,最好及时就医。

寒冷情绪紧张的刺激下,手指或足趾出现苍白、紫绀和潮红变化,称之为雷诺现象。其中以苍白最为显著,发病初期往往只会累及一个或少数手指、足趾,再逐步扩展到其他手指、足趾。

雷诺现象的发生,通常这些疾病有关:结缔组织病类风湿关节炎系统性硬化病系统性红斑狼疮等)、阻塞性动脉疾病、神经系统疾病、原发性肺动脉高压等。

“痔”会出现在皮肤表面,也会出现在指甲上,临床称为“甲母痣”,最常见的症状是甲黑线。甲母痣有一定概率发展为恶性程度极高的罕见癌症——黑色素瘤

若发现甲母痣变得不对称,突然变大,颜色分布不均匀,则要及时去医院检查,最好能切除处理。

杵状指,手指或脚趾的末端异常增宽增厚,呈现拱形隆起的形状,因形似鼓锤而得名。

开头案例中,李叔就是忽略杵状指,从而错失发现肺癌的机会。近些年,越来越多人将杵状指和肺癌联系在一起,对此,北京中医药大学第三附属医院肿瘤科主任李仝指出:“杵状指与肺癌不是特异性关系,杵状指不一定是肺癌。”

杵状指更常见于肺部慢性炎症疾病,比如慢性性肺结核、慢性支气管炎或慢性肺脓肿,也与部分心血管疾病有关,在肺癌患者中也有发现,只是比例较小,不常见。

无论如何,杵状指一定是疾病症状,要及时检查。

肝掌,是指大拇指与小拇指根部的大小鱼际处出现片状充血或者红斑点、斑块症状,按压后会变为苍白色。通常情况下,肝掌往往提示可能存在慢性肝炎,甚至肝硬化问题,最好及时进行肝功能、B超、血常规等检查,避免病情进一步发展。

网上流传着这样一句话:“看看你的指甲有没有月牙,月牙越多表示越健康”。听到这话的人,都会忍不住低头数一数,有的人发现自己的月牙只有一两个,难道真的不健康吗?

月牙,是指指甲末端白色月牙形状的区域,临床上称为“甲半月”或“半月痕”,是指甲生长的正常现象

指甲由根部甲基而来,慢慢往外推,形成指甲。刚“出生”的指甲呈白色,还没有角质化,位于底部,也就是我们所说的“月牙”。

其实,人体的健康状况与月牙的多少或大小没有关系,我们应该看月牙的变化。如果在短时间内,月牙突然变大或变小,或者突然变多或变少,才提示健康问题。

例如,月牙突然变多,伴有食欲增加、体重减轻、心率增快、多汗怕热等症状,则可能是甲亢;月牙突然变小或消失,则提示可能有甲减。

越来越多研究表明,手指与大脑有着神奇且微妙的关系,手指运动会影响大脑的多个功能区,包括大脑额叶、顶叶颞叶枕叶等,还会对影响基底神经节的功能。

接下来,小九给大家分享一套“数字手指操”,动动手指,在灵活关节的同时,也对大脑有好处。

首先,记住图中数字0~9的手势,学会用手势表示数字。注意,做0~5手势时手背面向自己,做6~9手势时是手心面向自己。

记住各个数字的手势后,按照下图的数字顺序,依次摆出正确的手势。数字分为三组,可以顺着来,也可以加大难度逆着来。

你学会了吗?赶紧动动手指试一试吧。

手指是人体健康的一面镜子,当出现异常时,可能是身体发出的“求救信号”,千万不要不当回事哦!

[1]看手指测肺癌,能相信吗?.央视是真的吗.中国医学科学院肿瘤医院.

[2]手麻、腿麻、麻痛…背后竟隐藏7大疾病!.医生界.

[3]指甲月牙的这些“变化”,竟提示一种常见病?!.凤凰大健康.

未经作者允许授权,禁止转载

}

我要回帖

更多关于 白色用什么颜色对称 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信