BMP格式
1. 简介
BMP 格式是 Windows 下最简单的图像存储格式,它支持图像以每像素 1,4,8,16,24,321,4,8,16,24,321,4,8,16,24,32 比特表示。BMP 格式也支持 4,84,84,8 比特每像素的游程算法压缩图像。
2. 格式
BMP 文件基本结构如下:
其详细结构如下:
2.1 File Header
BMP 文件中的 File Header 包含一个 BITMAPFILEHEADER 结构,主要用来识别文件格式,其包含的字段如下表所示:
字段名
大小(Bytes)
说明
bfType
222
存储两个字符「BM」用于验证文件类型
bfSize
444
存储该文件大小
bfReserved1
222
未使用(值必须为 000)
bfReserved2
222
未使用(值必须为 000)
bfOffBits
444
存储像素数据开始处的偏移大小
2.2 Image Header
File Header 后紧接着为 Image Header。Image Header 可以为两种不同结构的其中一种:BITMAP ...
减色算法
1. 简介
减色算法(ColorQuantization)是一种应用在色彩空间中用于减少图像离散色彩值的一类算法,旨在通过减少图像的离散色彩值从而减少了每个色彩值的表示比特数。一方面达到压缩图像的效果,另一方面使得一些以固定有限比特数表示像素的显示设备也能显示每个像素更多表示比特的图像。
2. 中位切割算法
中位切割算法(Median Cut)是最知名、应用最广泛的减色算法,常见的图像处理软件如 Photoshop、GIMP 等都使用了这个算法或其变种。
2.1 原理
假设有一张 RGB 图像,想要降低图像中色彩数目到 256256256 色。中位切割算法流程如下:
将图片的所有像素放到同一个区域(RGB 三维空间中)
对所有区域进行以下操作:
计算此区域内所有像素的 RGB 三元素最大值与最小值的差
选出相差最大的那个颜色(R 或 G 或 B)
根据那个颜色去排序此区域内所有像素
分割前一半和后一半的像素到两个不同区域(即「中位切割」)
重复第二步直到产生了 256256256 个区域
将每个区域的像素值平均起来,就得到 256256256 色
2.2 实现
假设有一张 R ...
LaTeX色彩
【注】笔记来自《LaTeX入门》——刘海洋。
1. 简介
原始的 TeX 引擎不支持彩色,有关彩色的功能都是由输出 PS、PDF 格式的 TeX 引擎或驱动提供的,有关命令是在绘图相关的扩展宏包中定义的。基本的彩色支持工具是 color 宏包,它是 LaTeX 的基本组件,graphics 工具包的一部分。
2. 基础
2.1 预定义颜色
在标准的 color 宏包中只有几种原色是预定义的,分别是:
黑白颜色:black(黑)、white(白)
色光三原色:red(红)、green(绿)、blue(蓝)
印刷三原色:cyan(青)、magenta(品红)、yellow(黄)
这三类原色分别使用三种不同的色彩模型:gray(灰度)、rgb(红绿蓝)和 cmyk(青品红黄黑)。在使用颜色时,除了可以使用预定义的颜色外,还可以给颜色命令指定模型,然后使用色彩模型下的几个分量 [0,1][0,1][0,1] 之间的数值来表示具体颜色。
123% 命令解释见下文\textcolor[gray]{0.5}{50\% 灰色}\color[rgb]{ ...
LaTeX标题控制
【注】笔记来自《LaTeX入门》——刘海洋。详细参数可参见 LaTeX 官方文档:
1texdoc caption
1. 简介
在设计文档时,我们经常需要修改浮动体标题的字体、间距、对齐方式等格式,然而 LaTeX 内核及标准文档并没有提供直接修改浮动标题格式的命令,这时就可以使用 caption 宏包来完成相关的设置。
2. 格式选项
使用 caption 宏包设置标题格式是通过一系列键值对形式的选项完成的,这些选项既可以作为宏包的可选项,也可以作为 \captionsetup 命令的参数出现,修改整篇文档的浮动体标题格式:
12345% 导言区\usepackage[font=small,labelfont=bf]{caption}% 下面命令与之等价\usepackage{caption}\captionsetup{font=small,labelfont=bf}
也可以只修改某种浮动体环境的标题格式,以 figure 环境为例:
123% 导言区\usepackage{caption}\captio ...
LaTeX浮动体
【注】笔记来自《LaTeX入门》——刘海洋。
1. 简介
图片或表格通常都占有较大的一块,直接放在文档常常会造成分页的困难,即前一页放不下,放在后一页又会造成很大的留白。其他一些大块的内容也可能有类似的问题,比如程序算法、大型公式和不宜断开的特殊形状段落。LaTeX 中通过引入浮动体来解决这类问题。
「浮动体」是一个活动的盒子,它可以把内容放在距离浮动体代码前后不远的地方,通常就是浮动体代码所在地,也可以放在页面开头、末尾或者单独的一页中。
「浮动体」的另一个作用是给图表添加一个标题。LaTeX 的浮动体环境为图表标题提供了专门的命令进行自动编号、自动生成目录的功能,通过第三方宏包还可以对标题格式进行整体设计。
2. 使用
2.1 环境
LaTeX 的标准文档类预定义了两种浮动体环境:figure 和 table,通常分别用于图和表的排版。figure 环境的语法格式为:
123\begin{figure}[<允许位置>] <任意内容>\end{figure}
table 环境与之类似。其中可选参数 &l ...
LaTeX插图
【注】笔记来自《LaTeX入门》——刘海洋。
1. 简介
插图功能是利用 TeX 的特定编译程序提供的机制实现的,不同的编译程序支持不同的图形方式。不同 LaTeX 编译程序对应的插图格式如下表所示:
TeX 引擎命令
图形驱动
支持的格式
说明
latex
Dvips
EPS
MiKTeX 还部分支持 PNG 和 JPEG
latex
DVIPDFMx
EPS,PDF,PNG,JPEG
PDF、PNG、JPEG 需要使用 extractbb 程序生成 .xbb 文件
pdflatex
−-−
MPS、PDF、PNG、JPEG
MPS 是 METAPOST 的输出格式,TeXLive 2010 以后还能自动将 EPS 转换为 PDF 文件产插入
xelatex
xdvipdfmx
EPS、PDF、PNG、JPEG、BMP
驱动是自动调用的,MAC 系统下的旧驱动 xdv2pdf 还支持其他一些格式
由上表可知,除非使用传统的 Dvips 程序作为图形驱动,一般编译程序支持的图形格式都有好几种,实际插入图形格式也就有不同的选择。对于 pdfLaTeX、Xe ...
LaTeX幻灯片提纲
【注】笔记来自《LaTeX入门》——刘海洋。更多细节内容可以参考官方用户手册。
1texdoc beamer
1. 简介
由于现代的 LaTeX 系统主要以 pdf 文件为输出方式,因此它可以用来生成各种专门的电子文档,诸如书籍、文章、幻灯片等。
1.1 工具
LaTeX 中专门用来制作幻灯片的工具有很多,诸如:
beamer 文档类
powerdot 文档类
prosper 文档类
pdfslide 宏包
ppower4 宏包
pdfscreen 宏包
1.2 beamer 文档类
目前最流行的 LaTeX 幻灯片工具为 beamer 文档类,它以页面(被称为「帧」)为基本组织单位,提供丰富的功能选项和许多预定义的风格主题,支持各种编译程序。因此,本文也使用 beamer 文档类来制作幻灯片提纲。
2. 幻灯片提纲
2.1 代码框架
使用 beamer 文档类与编写一般的 LaTeX 文档的代码框架是一样的:
1234\documentclass{beamer}\begin{document}% ...\end{document& ...
稀疏矩阵存储格式
1. 简介
稀疏矩阵是指矩阵中大多数元素为 000 的矩阵。多数情况下,实际问题中的大规模矩阵基本上都是稀疏矩阵,而且很多稀疏矩阵的稀疏度在 90%90\%90% 甚至 99%99\%99% 以上。
2. 存储格式
相较于一般的矩阵存储格式,即保存矩阵所有元素,稀疏矩阵由于其高度的稀疏性,因此需要更高效的存储格式。
2.1 Coordinate(COO)
每个非 000 元素使用一个三元组来表示——(行号,列号,数值)。实际存储分三个数组存储,分别表示行索引、列索引、数值。这种格式最简单,每个三元组自己可以定位,空间效率不是最优。
2.2 Compressed Sparse Row(CSR)
CSR 格式是比较标准的一种格式,其同样需要三类数据来表示——数值、列号、行偏移。CSR 不是三元组,而是整体的编码方式。其中,数值和列号和 COO 格式中的一致,某一行的行偏移表示该行的第一个元素在数值数组中的索引。实际存储分三个数组存储,分别表示数值、列号、行偏移。
2.3 ELLPACK(ELL)
【注】上图中间矩阵有误,第三行应为 0 2 3。
ELL 格式用两个和原始矩阵相同 ...
实用工具合集
1. When2Meet
When2Meet 是一个用来规划集体空闲时间段的实时网页工具,使用它可以很方便地统计大家的空闲时间段。
2. PDF24
PDF24 提供了很多关于 PDF 的工具,诸如「PDF 分割」、「PDF 合并」、「PDF 转图像」、「图像转 PDF」等。它不仅提供网页版工具,还提供可下载到本地的离线工具。
3. FlameShot
FlameShot 是一款优秀的跨平台截屏工具,适配了 Windows、Linux 等主流操作系统。
4. Free Download Manager
Free Download Manager 是一款优秀的跨平台下载加速器,适配了 Windows、Linux 等主流操作系统。
5. DrawIO
DrawIO 是一款优秀的跨平台绘图工具,提供绘制流程图、类图、关系图等各种图,同时支持 LaTeX 数学公式,并且支持多种格式导出,诸如 JPG、PNG、SVG 等。
6. PicGo
PicGo 是一款用于快速上传图片并获取图片 URL 链接的工具,适配了 Windows、Linux 等主流操作系统。
7. BestTrace
BestT ...
Manjaro20.2下VMWare报错
1. Could not open /dev/vmmon: ???. Please make sure that the kernel module ‘vmmon’ is loaded.
原因:丢失内核 headers
解决:
先查看系统内核版本
1uname -r
安装对应版本的 linux-headers(个人 headers 版本为 5.11)
1sudo pacman -S linux511-headers
加载缺失的内核模块
1sudo modprobe -a vmw_vmci vmmon
2. More information can be found in the vmware.log file.Failed to connect virtual device ‘Ethernet0’.
原因:没有开启虚拟机的网络服务
解决:
12sudo systemctl restart vmware-networkssudo systemctl enable vmware-networks
Ubuntu20.04开机运行自定义脚本
1. 简介
基于 Debian 的 Linux 系统默认支持 rc-local.service 服务,这个服务主要用来在系统启动时运行用户自定义的脚本命令等。
2. 配置
要想使用 rc-local.service 服务在系统启动时运行用户自定义的脚本命令,首先需要在 /etc 目录下创建 rc.local 文件(若已创建则跳过创建)并修改可执行权限,然后设置该服务开机自启:
123sudo touch /etc/rc.localsudo chmod 755 /etc/rc.localsudo systemctl enable rc-local.service
3. 添加开机自启脚本
打开 /etc/rc.local 文件,往其中添加运行自定义脚本的命令即可。
【注】/etc/rc.local 以及自定义脚本中都不能使用系统变量(比如 $HOME,原因在于其执行自定义脚本时并没有继承系统变量)。
4. 查看脚本执行结果
1systemctl status rc-local.service
此时会显示开机自启执行脚本的输出结果。
Manjaro20.2开机运行自定义脚本
1. 简介
Manjaro 是一款 Arch Linux 发行版,不同于基于 Debian 的 Linux 系统,Manjaro 并不默认支持 rc-local.service 服务,这个服务主要用来在系统启动时运行用户自定义的脚本命令等。
2. 安装
虽然 Arch Linux 没有默认支持 rc-local.service 服务,但是我们可以手动安装这个服务并设置开机启动:
12sudo pacman -Sy systemd-rc-localsudo systemctl enable rc-local.service
3. 配置
要想使用 rc-local.service 服务在系统启动时运行用户自定义的脚本命令,首先需要在 /etc 目录下创建 rc.local 文件并修改可执行权限:
12sudo touch /etc/rc.localsudo chmod 755 /etc/rc.local
4. 添加开机自启脚本
打开 /etc/rc.local 文件,往其中添加运行自定义脚本的命令即可。
【注】/etc/rc.local 以及自定义脚本中都不能使用系统变量(比如 $HOM ...