- 博客(10)
- 收藏
- 关注
原创 第三章:图像文件格式:数据的封装、压缩与解析
图像文件格式解析:结构、压缩与视觉优化 现代图像文件(如JPEG、PNG)是结构化的数据容器,包含文件头、元数据和像素数据三部分。文件头通过特定字节标识格式类型,元数据存储拍摄参数、色彩配置等附加信息。核心的像素数据采用不同压缩策略:JPEG通过色彩空间转换(RGB→YCbCr)、色度抽样、离散余弦变换(DCT)和量化,在频域选择性丢弃人眼不敏感的高频信息,实现高压缩比;而PNG采用无损压缩算法。JPEG的量化步骤直接影响图像质量,过度压缩会导致块效应和色彩失真。理解这些机制有助于在实际应用中平衡文件大小与
2025-07-18 11:43:09
786
原创 第二章:色彩的科学与数学
它的定义基于一个标准的“人类观察者”模型,是绝对的、科学的。在CRT中,施加给电子枪的电压(输入的数字信号)和电子轰击荧光粉后发出的光的强度(输出的物理亮度)之间,并非线性关系。通过这个实验,你可以清晰地感受到,HSL模型将复杂的色彩调整,解耦(Decouple)成了三个独立的、正交的、符合人类直-觉的操作。这意味着,如果我们用有限的数据位(比如8位)来线性地记录亮度,那么大量的比特位将被“浪费”在人眼不敏感的亮部区域,而人眼最敏感的暗部区域,却没有足够的数据精度来描述,从而可能出现色彩断层。
2025-07-18 11:17:48
725
原创 第一章:数字画布:从比特到像素
当这三张“灰度图”的数据在每个像素点上被组合并发送给显示器时,显示器上对应位置的红、绿、蓝三种颜色的子像素(sub-pixel)就会发出不同强度的光,混合成我们最终看到的颜色。一个历史原因是,这与早期电视(CRT显示器)的扫描方式一致:电子束从屏幕的左上角开始,从左到右扫描一行,然后移动到下一行,继续从左到右扫描,直到右下角。计算机没有“创造”新灰阶的能力,它只能将原有的10个灰阶值,稀疏地分布到更宽的范围上。对于人眼来说,在多数情况下,这已经足够平滑,足以“欺骗”我们的大脑,让我们以为看到了连续的色调。
2025-07-18 10:06:15
1859
原创 Photoshop内核剖析:写给程序员的数字图像处理实践指南
摘要: 《Photoshop内核剖析:写给程序员的数字图像处理实践指南》从计算机科学视角解析Photoshop的核心原理。全书分为两部分:基础理论部分探讨图像的数学本质(像素数组、色彩模型、压缩算法),揭示JPEG、PNG等格式的编码逻辑;核心技术部分剖析Photoshop的算法实现,包括选区分割(区域增长、Alpha Matting)、图层混合模式(数学运算)、色彩校正(直方图均衡化、3D LUT)、卷积滤波(高斯模糊、锐化)及修复算法(PatchMatch)。通过代码级分析(如曲线调整的LUT实现、智能
2025-07-18 09:30:29
483
原创 第二部分:核心工具——为程序员服务的数学
如果信号中含有某个频率的成分,那么它就会和对应频率的“探针”产生强烈的共鸣。在下一章,我们将把它们全部组装起来,亲手实现一个虽然慢但非常清晰的**离散傅里叶变换(DFT)**算法,彻底揭开它神秘的面纱。:傅里叶变换的输出结果,对于每一个频率,都会是一个复数。这个复数就像一个“数据包”,它用一种极其紧凑的方式,同时告诉了我们这个频率分量的。为了让你彻底相信“复数就是旋转”,让我们来做一个非常直观的实验:用复数乘法来旋转一个二维向量。幸运的是,现代编程语言基本都内置了对复数的支持。的形式来表示一个复数。
2025-07-15 15:01:52
682
原创 第2章:构成世界的“砖块”:正弦波与余弦波
正交性意味着,你可以设计一个“检测器”,这个检测器只对其中某一个特定频率(比如50Hz)的波有反应,而对所有其他频率(1Hz, 2Hz, …一个无阻尼的单摆的摆动、一个挂在弹簧上的物体的振动、音叉发出的纯净声音、电磁波的传播,它们最自然、最基础的形态都是正弦波。我们现在已经对傅里叶变换的“目标”(分解)和“材料”(正弦波)有了深刻的理解。而方波、三角波等其他波形,不具备这种完美的数学特性,如果用它们来做分解,不同频率的成分会互相“串扰”,那将是一场灾难。现在,让我们专门来体验一下“相位”这个新旋钮的威力。
2025-07-15 14:24:28
915
原创 第一部分:建立直觉——“是什么”与“为什么”
傅里叶变换要做的,就是接收这个复合波形作为输入,然后分析并输出:“嘿,我发现你这个复杂的信号,主要是由一个频率为2Hz、振幅为3的波形,和一个频率为10Hz、振幅为1.5的波形组成的!读完本书,你可能依然无法徒手证明傅里ye变换的每一个数学性质,但你将获得比这更宝贵的东西:一种全新的“频域视角”来观察和解决问题,以及将这种视角转化为有效代码的自信。虽然你听到的是一个混合体,但你的大脑(一个了不起的信号处理器)却有能力从中分辨出:“嗯,这是低沉的贝斯声,那是清脆的吉他声,还有主唱高亢的嗓音。
2025-07-15 13:52:39
1187
原创 Kotlin 协程 0x01
协程上下文的主要元素包括了Job,和Dispatcher。协程上下文用于一些技术信息和调度相关的信息。协程作用域表示协程的父子关系。
2024-11-08 16:56:34
702
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅