个人笔记
- 屏幕是由一个个像素组成, 一个像素由三个子像素组成
- 每个子像素在物理组成上可以大概理解为由后面一个晶体管, 前面一个滤光片, 或者后面一个晶体管, 前面一个发光材料组成.
- 比如晶体管调节电压电流, 控制发光强度, 滤光片过滤掉R, G, 只允许B, 这就是蓝光. LCD
- 比如晶体管调节电压电流, 控制发光强度, 照射到发光材料, 发出指定光, 比如红光, 这是化学的范畴, 发光材料如荧光粉、有机化合物等. LED/OLED
- 为了量化色彩, 计算机采用8 位(1 字节)表示一个晶体管发光的强弱, 0是熄灭, 255是最强, 可以理解为一个晶体管有256个强度挡, 具体电气表现就是电压的强弱, 这是一种离散量化
- 也就是RGB表示法, 一个像素由3个字节表示, 这是彩色图像的基本单位, 在这种粒度下, 总颜色数有 256 * 256 * 256种
- 什么是灰度图像呢? 先要理解亮度这个概念, 准确说, 亮度是一个感性的词, 反应的是人眼对光强弱的感知, 物理上,光强弱可以用客观单位坎德拉(cd)测量, 但是, 亮度 是人眼的主观感知,受光强、波长、人眼视锥细胞敏感度影响.
- 一个色彩RGB(r1, g1, b1) 不止是有光的三原色, 还隐含一个亮度的概念在里面. 人对于绿光最敏感, 对于蓝光最不敏感, 这里的敏感也就是对亮度的一种感知
- 为了能直观的体验到亮度这个东西, 有了灰度这个概念, 根据人眼的生理特征, 对不同色彩的敏感不同, 有一个换算公式: 亮度x = 0.299×R + 0.587×G + 0.114×B. 公式来源于ITU-R BT.601 标准,模拟人眼对 RGB 的感知,基于人眼视锥细胞对不同波长光的响应,绿色占比最高,因为人眼在 555nm 附近最敏感
- 公式的作用是从彩色提取亮度,去除颜色信息, x 是浮点数,范围 0-255,表示感知亮度。
- 这个公式建立在rgb的基础上, 那么, r,g,b本来就是对色彩的非精确有限取值, 计算出的亮度自然也是非精确且有限的. 但是即使是基于rgb计算出的亮度, 也是个浮点值, 是0-255范围内无穷个亮度值.
- 其实就是想说的是, 色彩是"模拟信号", 亮度也是"模拟信号", 它们都是不能计数的, 只是我们需要表达它, 需要记录它, 需要显示它, 需要控制它, 所以 r, g, b可以表达256 * 256 * 256种颜色, 这对于人眼, 已足够细腻, 够用了, 区分不出来细微差异了, 一般对亮度x取整, 总共0-255, 共256种, 也是足够人眼区分明暗,符合人眼感知极限(约 100-200 级亮度分辨率). 灰度是亮度的数字化表现
- 什么是灰度图像, 灰度图像的每个像素点的R,G,B值都一样,本质上要显示灰度图像, 还是需要红, 绿, 蓝三色合力表示一个像素, 也就是灰度图像呈现在计算机上也是红绿蓝三色合力的结果, 这是灰度的(非精确且有限)的硬件实现, 比如一种灰色(211, 211, 211), 比如另一种灰色(50,50,50). 因此在表示时, 用一个8位就可以同时表示RGB三个分量了, 8位决定了我们打算让灰度图像只细腻到256个梯度. 这对于人眼已经足够了. 真要想高精度的灰度图像, 当下也有16位灰度表示法供你使用
- 我们有从单独绘制显示灰度图像的需求. 为了更直观的看到某个图像的灰度信息, 也有将彩色图像转换为灰度图像的需求, 那么根据前面的公式x = 0.299×R + 0.587×G + 0.114×B , 可以将彩色图像的每个像素计算出灰度x(取整), 再根据x得到rgb, 就转换为了灰度图像. 注意这种转换是有损的, 是多对一的.
- 要知道, 对于亮度而言(其实对于色彩也是), RGB彩色像素本来在亮度方面就是非精确且有损, 进一步通过转换公式后, 进一步非精确且有损了,但还是那个道理, 够用就行,依然不影响人眼识别和判断
- 灰度图像占用空间少, 对于人眼来说, 形状、边缘等关键重要信息都还在, 反而因为少了色彩的干扰, 对于轮廓会看的更加清晰,比如医学影像, 是个好东西
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |