第一篇 关于亮度与颜色的理解

先来说说图像吧。从专业的角度上来讲,图像是基于时间域在二维平面里的数字信号表现。这里有一个名词叫二维平面,之所以这么说,其实还一种我常见的信息,即音频,是基于时间域在一维数字信号的表现。对于图像,我们常见的表现方式,要么是黑白的,要么彩色的。嗯,像早年70,80年代的时候的照片最流行的就是黑白。到后面技术革新出现了彩色照片,我们可以理解为它们是基于模拟信号的表现。现在我们一般获取到的都是经过光电转换成数字信号后的数字图像。黑白图像,主要是通过不同的亮度对比的强度来表现图像的内容。而彩色图像,则是通过不同的颜色信息来表现图像。(先上两个图像,大名顶顶的Lena)

               

讨论数字图像,我们就需要说一下关于数字图像的获取和数字图像的表现。数字图像的获取,我们一般是通过相机。这里,我粗略的讲一下它的基本原理。现代电子技术中,我们知道有一种元件叫光敏电阻,可以将光照的强度转换成不同的电压强度的光敏元件,然后我们再对相应的电压强度进行采样转换成不同的数字,我们就得到了一个描述光强度的数字信号。如果我们将许多个这种元件按横向纵向的方式组成一个二维的阵列,这样,我们就得到了一个二维的数字信号阵列,通过光电转换后,我们就得到了一张基于黑白的图像。这就是我们黑白的图像的由来。(类似上面的黑白图像)讲到这里,我们需要补充一下一个重要的概念,即采样。就目前我们处理的黑白图像,一般都是采用的256级灰度的采样。事实上,我们一般用的普通的光电转换原来都是采用的1024级。由于我们数字图像上的存储空间(如果以1024级采样,则需要10位存储,除占用更多的的存储空间外,也不利于读写操作)以与人眼对于灰度图像的敏感度(一般情况下人眼对于64级以上的灰度不敏感)的习惯,所以我们一般以256级灰度进行采样。它的取值是0-255,0表示黑色,没有光亮度。255表示白色,表示最强的光亮度。至此,我们通过刚才的方式,就得到一张黑白图像,那么我们的彩色图像又是怎么获得的呢?要说这个方式比较有意思,与我们获得黑白图像的方式不同,我们无法通过光电原件来直接获得彩色信号。而是在原来的光电原件上镀一层膜,用这层膜来过滤后得到彩色光。这里为了方便理解,我贴两张网上的图片:(图片来源:http://www.giaitech.com.cn/archives/3077.html)

     

   左边为相机传感器芯片。      右边为它的彩色滤色的获得方式。

说完颜色的获取后,再讲粗略的讲一下颜色的表现方式。其实呢,我们比较常见的颜色表现方式有两种,一种是彩色印刷,一种是电子产品的屏幕表现方式。这里我们主要讲屏幕表现。屏幕表现一般就是利用了红绿蓝三原色来表现的。具体方式上,液晶屏是由背光源发出强烈的白色光,然后通电电极调节液晶的透光率,再通过滤光膜来表现颜色的光强度来获得丰富的彩色。下面贴两张图来展示一下:

            

(感兴趣的话,你们可以靠近液晶电视机,后高倍放大镜去看一下,也可以在手机上滴一滴水,通过凸透镜原理可以看到屏幕像素构成。技术难度很大,最好用高倍放大镜比较靠谱。)

这里说到了三原色的概念,还有上面的图片中也显示了用红绿蓝三种颜色来获得复杂的彩色。这就不得不说到大名顶顶的三原色(或称三基色)了。首先呢,是为什么是三种色,而不是四种或者其它更多呢?当然是因为最得最少的值。事实上,四色或五色或更多的色,肯定是能表现更丰富的,这是毫无疑问的,但是带来了另一个问题,即会引得存储空间的增长。原来三原色表现一个彩色,只有三个字节就够了,用四五色则需要四五个字节,这是划算的,不经济的,或者直接说,就是浪费钱。(事实上科学上的事很多都考虑这个东西。)而用两个字节,明显又是不够的。所以,最经济合理的就是三原色了。再说说为什么是红绿蓝三种颜色,而不是别的黄青紫或其它的色呢?那是因为人眼的锥体细胞有三种,分别能感受红光、绿光与蓝光,因此又分别称为感红、感绿、感蓝锥体细胞,此三基色的来源。当然关于它的具体细节大家有兴趣可以去百度一下,进行详细的了解。最后要说的是,我们计算机里常见的BMP图像,就是以三原色来保存图像的。这个知识点比较重要。因为后面我们会详细讲解BMP图像和通过代码来操作实现对图像的加工处理。

好了,第一篇就写到这里,这里关于颜色方面写得比较粗糙,还有一些技术细节都没有说,比如我们相机获得的图像是Bayer格式,我们电视机上的颜色不止256级颜色,还有颜色空间等,暂时不讲,放到后面一点一点的细讲,并且,会通过代码来进行详细解说。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1 章 我们感知自己的期望   1 经验影响感知  1 环境影响感知   4 目标影响感知   5 对设计意味着什么   7 第2 章 为观察结构优化我们的视觉   9 格式塔原理:接近性  9 格式塔原理:相似性  11 格式塔原理:连续性  13 格式塔原理:封闭性  15 格式塔原理:对称性  15 格式塔原理:主体/ 背景  17 格式塔原理:共同命运  19 将格式塔原理综合起来  20 第3 章 我们寻找和使用视觉结构  23 结构提高了用户浏览长数字的能力  25 数据专用控件提供了更多的结构   27 视觉层次让人专注于相关的信息   27 第4 章 阅读不是自然的  29 我们的大脑是为语言而不是为阅读设计的   29 阅读是特征驱动还是语境驱动  30 熟练阅读和不熟练阅读使用大脑的不同部位   33 糟糕的信息设计会影响阅读  34 软件里要求的阅读很多都是不必要的  41 对真实用户的测试  44 第5 章 色觉是有限的  45 色觉是如何工作的   45 视觉是为边缘反差而不是为亮度优化的  47 区别颜色的能力取决于颜色是如何呈现的   47 色盲   49 影响色彩区分能力的外部因素  51 使用色彩的准则  52 第6 章 我们的边界视力很糟糕  55 中央凹的分辨率与边界视野的分辨率比较   55 边界视觉有什么用   58 电脑用户界面中的例子   59 让信息可见的常用方法  61 让用户注意到信息的重武器:请小心使用   62 第7 章 我们的注意力有限,记忆力也不完美   67 短期与长期记忆   67 对记忆的一种现代观点   67 短期记忆的特点   69 短期记忆的特点对用户界面设计的影响  72 长期记忆的特点   76 长期记忆的特点对用户界面设计的影响   77 第8 章 对注意力、形状、思考以及行动的限制   81 模式一:我们专注于目标而很少注意使用的工具   81 模式二:我们使用外部帮助来记录正在做的事情   82 模式三:我们跟着信息“气味”靠近目标   83 模式四:我们偏好熟悉的路径  85 模式五:我们的思考周期:目标,执行,评估  86 模式六:完成任务的主要目标之后,我们经常忘记做收尾工作  89 第9 章 识别容易,回忆很难  91 认识容  91 回忆很难   93 识别与回忆对用户界面设计的影响   94 第10 章 从经验中学习与学后付诸实践容易,解决问题和计算很难  99 我们有三个大脑   99 从经验中学习(通常)是容易的  100 操作已经学会的动作是容易的  102 解决问题和计算是困难的  104 在用户界面设计上的影响  108 前文中提到的问题的答案  110 第11 章 许多因素影响学习  111 当操作专注于任务、简单和一致时,我们学得更快   111 当词汇专注于任务、熟悉和一致时,我们学得更快   119 风险低的时候我们学得快   126 小结   127 第12 章 我们有时间要求   129 响应度的定义   129 人类大脑的许多时间常量   131 时间常数的工程近似法:数量级   135 为满足实时交互的设计   136 达到高响应度交互系统的另外一些指导原则   139 实现高响应度是重要的   145 后记   147 附录 著名的用户界面设计准则   149
好的,我可以帮你理解并解答这道题目。 首先,我们需要了解真彩色位图的格式。一幅真彩色位图由三个颜色通道组成,即红色、绿色和蓝色。每个颜色通道用 8 位表示,即一个像素点占用 24 位,也就是 3 字节。因此,我们可以使用 C 语言中的结构体来表示一个像素点,结构体中包含三个成员变量,分别表示红色、绿色、蓝色通道的值。 接着,我们需要读取命令行参数。C 语言中可以使用 `argc` 和 `argv` 来获取命令行参数,其中 `argc` 表示参数个数,`argv` 是一个指针数组,每个元素指向一个参数字符串。 然后,我们可以使用 C 语言的文件操作函数来读取原始图像文件,并将其存储到一个结构体数组中。读取图像文件需要注意文件格式和字节序等问题。 接下来,我们需要对两幅图像进行混合运算。根据题目要求,我们需要按照给定的比例混合两幅图像。具体来说,我们可以按照下面的公式来计算混合后的像素值: ```c result_red = x_red * alpha + y_red * (1 - alpha); result_green = x_green * alpha + y_green * (1 - alpha); result_blue = x_blue * alpha + y_blue * (1 - alpha); ``` 其中,`x_red`、`x_green`、`x_blue` 分别表示第一幅图像的红色、绿色、蓝色通道的值,`y_red`、`y_green`、`y_blue` 分别表示第二幅图像的红色、绿色、蓝色通道的值,`alpha` 表示混合比例。 最后,我们需要将混合后的结果存储到一个新文件中。同样地,我们可以使用 C 语言中的文件操作函数来实现。需要注意的是,存储图像文件时也需要考虑文件格式和字节序等问题。 综上所述,我们可以按照以下步骤来编写程序: 1. 定义一个结构体来表示一个像素点,包含三个成员变量,分别表示红色、绿色、蓝色通道的值。 2. 读取命令行参数,获取两幅图像文件名和混合比例。 3. 分别读取两幅图像文件,并将它们存储到两个结构体数组中。 4. 对两个结构体数组中的每个像素点进行混合运算,得到混合后的像素值。 5. 将混合后的像素值存储到一个新的结构体数组中。 6. 将新的结构体数组中的像素值存储到一个新的图像文件中。 代码实现可能比较复杂,需要涉及到文件操作、内存分配等问题。但是,如果你掌握了 C 语言的基本语法和文件操作函数,应该不会太困难。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值