色彩笔 ../index.html 体验超好的图片在线压缩小工具 Tue, 04 Aug 2026 13:33:12 +0000 zh-CN hourly 1 https://wordpress.org/?v=4.5.33 2026年TRAE AI创造力大赛参赛 ../2026/07/13/2026年trae-ai创造力大赛参赛/index.html Mon, 13 Jul 2026 14:51:26 +0000 ../2026/07/13/2026年trae-ai创造力大赛参赛/index.html 创意名称:今天吃什么水果(果时令)

今天吃什么水果

这个作品想解决的问题: 很多人买水果时不知道现在什么水果好吃、什么水果快过季了,经常买回家才发现不甜、不新鲜,或者价格还很贵。想到做这个,是因为平时去水果店、超市买水果,经常会纠结到底该买什么,只能问老板或者自己上网查。所以我想做一个小程序,打开后就能根据今天的日期告诉你:现在有哪些水果正在上市,哪些水果快下市了。

目标用户及痛点: 这个小程序主要给平时会买水果的人用,比如学生、上班族、家长、独居的人,或者想吃得健康一点的人。使用场景也很日常,比如去超市前看一眼、点外卖买水果前查一下,或者不知道今天买什么水果时打开看看。现在的问题是,很多人其实不太清楚水果的季节,有时候买到反季水果,价格贵,味道也不一定好;想查资料又很麻烦,网上信息还不一定统一。

价值与意义: 这个小程序最大的价值就是省事。用户不用到处搜索,也不用全靠经验,打开就能知道现在适合买什么水果。同时它也能帮大家买到更应季、更新鲜、性价比更高的水果,让日常吃水果这件小事变得更简单一点。

访问地址: https://www.secaibi.com/app/BestFruitInSeason/

创意名称:金石拓印

金石拓印

想解决什么问题:很多人想体验金石拓印,但文物在博物馆摸不到,材料准备又麻烦。

为什么会想到做这个:拓印出来的文字和花纹特别美,想让大家用手机就能玩,体验那种文字慢慢显现的乐趣。并且金石拓印是中国古代重要的文献复制技艺,具有重要的历史价值和文化意义。然而,真实文物珍藏在博物馆,普通人难以接触。希望通过数字化手段,让更多人能够了解和体验这一传统技艺。

大概是什么产品:一个娱乐体验小程序,用手指涂抹屏幕,文字和花纹会慢慢浮现出来,最后生成拓印作品。本质是图片从局部透明到半透明,再到完全显现。

面向哪些用户:喜欢传统文化的人,学生和老师,文化爱好者在什么场景下使用,老师课堂演示,学生跟随体验,自己在家玩,感受文字慢慢显现,博物馆、文化馆互动展示

当前痛点:真正的文物摸不到 准备材料太麻烦 缺个简单好玩的体验工具

娱乐价值:手指涂抹、看着文字慢慢显现,特别解压好玩,比看图片视频有意思多了。

文化价值: 用轻松有趣的方式让大家体验传统拓印,了解碑刻、青铜器上的文字和花纹之美。

访问地址: https://www.secaibi.com/app/EpigraphicRubbing/

]]>
PyCharm打开Markdown文件显示emoji图片 ../2026/01/12/pycharm打开markdown文件显示emoji图片/index.html Mon, 12 Jan 2026 05:37:34 +0000 ../2026/01/12/pycharm打开markdown文件显示emoji图片/index.html Pycharm中安装“PyCharm GitHub Emojis”插件即可。

如果还不行,尝试配置Github Emoji下载地址为:

https://www.secaibi.com/download/github-emoji/emojis.json

示例:

]]>
优化GIF动态图 ../2014/03/17/优化gif动态图/index.html ../2014/03/17/优化gif动态图/index.html#comments Mon, 17 Mar 2014 09:48:37 +0000 ../2014/03/17/优化gif动态图/index.html GIF图片的优化方法是有限并且基本固定的。我们选从前期制作GIF的过程着手来了解优化方法。

GIF图像是基于调色板的图像格式。这表示每张GIF的的颜色数目是固定的。原则上,你使用的颜色越少,你的图片体积就越小。 对于GIF动画来说,由于全部帧是共享使用同一个调色版,所以帧与帧之间最好可以使用相同的颜色。

下一个优化方向就是图像的像素个数和帧个数了。

文件体积 = 颜色数 x 长像素 x 宽像素 x 帧动画个数

体积计算公式
尽量选择合理的GIF图片大小,并且特别要注意的是帧动画个数, 过多的帧会导致体积成倍增长。上面影响文件体积的每个因子都很重要。

关于多帧动画有一个特别之处。可以通过指定一个关键帧,后续的帧只提供和关键帧的差异信息。这个功能可以极大的压缩包含相似画面内容的GIF动画。在制作GIF时,保持GIF帧与帧之间的内容不要差异过大。如果你用的GIF制作工具不支持关键帧(或者你不确定它是否支持),你都可以用我写的在线GIF压缩工具来优化并启用关键帧技术。优化后的的结果是100%无损,且保持相同的透明度和帧动画内容。

有的技术会提升GIF图像质量,但是会增加GIF文件体积。对于这类技术,要综合考虑是否启用。比如“色彩拟合(dithering)”技术。拟合的原理,是通过混合排列颜色像素来拟合不在调色版中的色彩。这个技术可以消除“色带”,但是会增加文件体积。
dithering

其它还有一些优化知识:

  • GIF中使用相同颜色的大片区域可以很好的压缩
  • GIF中包含细节风景照,人物照不能很好的压缩
  • GIF中不要启用色彩拟合(dithering), 这会增加文件体积
  • GIF中不要启用隔行输出(interlace), 这会增加文件体积
  • GIF中尽量不要使用渐进色,但如果你使用了。那么垂直方向(由上向下)的渐进色比水平方向(由左向右)的渐进色能更好的压缩. (注:PNG对任何方向上的渐近色都可以很好的压缩。如果你不需要动画的话,优先考虑做成PNG图片)

色彩笔的在线GIF优化工具,集合了基本所有不会影响GIFs图片质量压缩方法(无损压缩)。虽然保持无损势必让整体压缩比不会太高,但综合各项压缩手段使用都可使GIFs或多或少再减小一点体积。

上文提到的所有功能点都已实现, 包括:

  1. 调色版无损优化
  2. 关键帧压缩
  3. 大片相同色块区域压缩
  4. 垂直方向渐近色优化
  5. 透明及动画效果保留

工具界面 (支持批量多文件上传)
GIF压缩文件体积

]]>
../2014/03/17/优化gif动态图/feed/index.html 2
天空有多高 ../2014/03/08/天空有多高/index.html ../2014/03/08/天空有多高/index.html#comments Sat, 08 Mar 2014 05:28:03 +0000 ../2014/03/08/天空有多高/index.html 想在网页上遨游太阳系吗?来吧,发射火箭,一起来探索头顶上的天空吧!天文专题:天空有多高

howbigissapce-intro

载人航天器达到的最远距离是多少?那个高度的太空中漂浮着大部分人造卫星?第一只猴子宇航员飞到了多远的太空?……在BBC出品的这个漂亮的交互式网页上,我们只需滚动鼠标,就能轻松遨游太阳系,当然,顺便还能回答上面的这些问题,超级涨姿势。这个名为Space Race的页面是由iibStudio与BBC Future联合出品。由南京UI, 色彩笔翻译汉化。

]]>
../2014/03/08/天空有多高/feed/index.html 1
无损压缩 vs 有损压缩 vs 损多少 ../2013/08/06/无损压缩-vs-有损压缩-vs-损多少/index.html ../2013/08/06/无损压缩-vs-有损压缩-vs-损多少/index.html#comments Tue, 06 Aug 2013 08:05:43 +0000 ../2013/08/06/无损压缩-vs-有损压缩-vs-损多少/index.html 图像压缩是门古老技艺了。现如今,随着存储和网络带宽越来越便宜,目前用得也不多了。并且这个技术挺简单,也没什么好深讲的。那就随便聊聊呗。

无损压缩(PNG, GIF)的重压缩

除了常规方法,比如去掉或合并文件中的额外头信息外,对于PNG图像的话,有非常直观的方法可以略微多压一点点体积。比如说,PNG实际压缩算法就是我们平常打交道的zip(Deflate)。而zip的算法是可以调节压缩比例的。比例越大,压缩越好,但所需的压缩时间越长(不用担心,解压时间保持不变)。一般软件在生成PNG时,通常都不会把压缩比例全开。所以PNG的再压缩,其中一个思路就是用更好的的压缩算法重压一变。有一个很优秀的压缩软件叫7zip, 它的代码是公开的。利用7zip的算法处理后能贡献5~10%的文件体积减小。色彩笔PNG压缩率有时候能大幅突破这个比例,是利用除了改变压缩算法之外的其它技术。这部分和PNG的格式细节息息相关,会另写文章介绍。

对于动态GIF,如果两帧之间有重复内容,这部分是可以节约下来的。后一帧只存和前帧的差异部分。这部分的压缩比例因图而异。GIF也会另写GIF处理方法的文章介绍。

JPEG的重压缩

对于有损压缩JPEG来说,压缩比例越大,图像越模糊。JPEG就像一位素描画家,先画出人物的轮廓,再画出鼻子眼睛,再画出纹理阴影。压缩比例越大,丢失的步骤就越多,图像就越模糊。

JPEG重压缩也不能随便给个固定参数。这个参数需要因图而异。对于细节丰富的图,我们可以多压点,对于已经不剩多少细节的图,我们就要少压点或者不压。

因此,第一步,就是探知输入图像的质量(quality),看看其中有多少细节丰富度。最常见的方法就是把原图轻微模糊后再和原图比较差异度。差异度越高,说明原图像细节越丰富,图像的质量越高。

第二步,根据输入图像的质量,选择一个压缩参数,对原图减去合适的细节部分。

总结

p.s. 色彩笔的图像压缩对于PNG/GIF,返回的是无损PNG/GIF。 对于JPEG,返回的是损失人眼最不敏感细节的JPEG。

转载注明来自色彩笔(www.secaibi.com)

]]>
../2013/08/06/无损压缩-vs-有损压缩-vs-损多少/feed/index.html 1
非法无线接入点检测 ../2013/08/06/非法无线接入点检测/index.html Tue, 06 Aug 2013 06:44:50 +0000 ../2013/08/06/非法无线接入点检测/index.html 标题也可叫: 流氓AP检测,无线入侵检测(WIPS)。意思大差不差吧。

这个技术是做什么的?比如,你是搞国防武器装备开发的,非常关切信息保密。公司上上下下都在封闭在一个内网中,不允许从外部访问。但是有个员工张三某天带了一个WIFI设备,插上网线接入进公司网络(比如手机啊,无线路由器啊,联通电信的无线上网客户端啊)。于是,只要知道WIFI密码,别人就可以从无线端接入你的公司内网,发生你懂的的结果。

下文中:
AP指无线接入点(Access Point)
Rogue AP指非法无线接入点(Rouge Access Point)

我们要检测的目标是: 现有网络中的非法无线接入点(Rogue AP),

同时,我们也要避免误报。比如,隔壁邻居李四开了一个WiFi。这是不构成危害的,因为它没有接入我的公司网络。不是我的AP,确实也没法管。

无线接入的检测方法 (Rogue AP Detection)
1. 基于特征或指纹
这类套路有点像nmap扫描OS类型,不介绍了。

2. 基于MAC黑白名单
对公司所有网络设备做个白名单,新出现的MAC就是非法设备。但合法设备(如:公司笔记本)可以通过Ad-hoc开放无线网络绕过。

3. 路由器MAC关联
中高端路由器内部都有一张CAM表,里面记录中每一个MAC和路由口的对应关系。CAM表可通过SNMP协议获取到。此时,我们部署一个无线抓包器(Wireless Sniffer), 截获无线中出现的MAC。两者一对比,就能发现非法无线接入点。并且可以探测是从哪个路由口接入的。
如果路由器没有CAM表可供查询,也可以在路由器镜像口部署抓包设备,获取MAC。不过这需要额外负载来处理流量包。

MAC关联的限制是: 如果AP部署成NAT模式,此方法就无能为力了。在NAT模式下,AP接入的设备都圈在一个私网内,对外通讯都用AP的MAC。设备的MAC地址从不在公司网络中出现。

对于NAT模式下的AP,也有一个非常经验性的取巧检测方法。无线AP出厂时,有线口MAC和无线口MAC通常都非常接近。比如
11:22:33:44:55:66 和 11:22:33:44:55:67。 我们可以对比这种特殊关系,来发现非法AP。不过,路由器配置页面通常都能修改MAC。

4. 针对未加密无线AP
未加密或弱加密的AP通讯都可以用无线截包器看到内容。通用的检测手段是这样的。有线网络中部署一个包群发器,向可能的所有设备端口发送带特征内容的包。无线截包器如果发现相应的特征内容的包出现在Wireless环境中,说明检测到Rouge AP。

5. 针对加密无线AP的特征包注入(Signatured Packets Injection)
嗯,好货留到最后介绍。
如果无线加密的话,我们就看不到其中内容了,但依然有其它特征可供使用,比如包长度。不考虑padding的情况下,经过无线加密,包的长度不会改变。我们可以像上节”针对未加密无线AP”中介绍的那样,发送一系列长短不一的特征包序列,然后检测相应序列是否在无线环境中出现。不过,由于发送的包数量需要很多,会稍增加有线网络的负载。如果要达到实时检测并有一定的精度的效果,检测流量大约会占到所有流量的10%

当然,除开软件检测方法外,也可以通过硬件探测Rouge AP物理位置,检测其是否在处于公司范围。听过一家公司介绍过他们的产品,应该是可行的,但这一套着实不便宜。

本文是我参加公司内部的新技术孵化大赛的项目(Anti RogueAP)技术分享, 配合漫画:齐B小短裙 (宣传海报)食用, 效果更佳!
转帖请注明来自色彩笔。

]]>
图片去除模糊算法介绍 ../2013/07/30/图片去除模糊算法介绍/index.html Tue, 30 Jul 2013 14:07:04 +0000 ../2013/07/30/图片去除模糊算法介绍/index.html 本文介绍如何将模糊图片变清楚的相关算法原理。因水平有限,文中出现错误在所难免,希望留言指出。

作为图像处理的子领域,模糊图像恢复是一个很有意思但也非常有挑战性的研究方向。不论是从理论还是实践中,都是如此。比如下面这些场景:

  • 照片洗出来后,发现对焦不准,细节看不清楚
  • 按快门时,相机有抖滑,拍出的照片有运动模糊

都将是本文要讨论的范围。在此文中,我们不讨论如何修正其它常规图像问题(如:噪点,曝光不足,过曝,形变扭曲)。因为市面上已经有很多工具用来纠正它们。大家多半也都会用这些工具。

为什么目前还没有工具发明出来,以专门用来处理模糊图像呢(锐化不算)?是不是因为无法做到?其实不然,在理论上这其实是可行的。远在计算机发明之前,关于去模糊的数学理论就已经被提出了。不过当时针对是电路信号中的“模糊”问题。此外,就像其它学科一样,算法从提出到实际应用需要相当长的一段时间。

下图展示了模糊图片处理恢复后的效果:

模糊图像数学模型

现在开始从数学角度谈模糊。考虑一张单色灰度图像(彩色图像可以看成由三张R,G,B通道的灰度图叠加),我们定义:

  • f(x, y) – 原始图像 (非模糊的)
  • h(x, y) – 模糊函数
  • n(x, y) – 额外噪点
  • g(x, y) – 模糊后的图像

各种情况下,模糊图像的产生过程可以写成如下形式:

g(x, y) = h(x, y) * f(x, y) + n(x, y)

相应的,图像恢复本质上就是寻找一个f'(x, y), 并使f'(x, y)尽可能的符合原始图像f(x, y)。更进一步的看,公式中f(x, y), n(x, y), g(x, y)的含义都是很容易理解的,但h(x, y)就并非那么直观了。以相机模糊为例,原始图像上的每个点都被镜头散射到底片的一小片区域,不再是一个点了。可以想像出,底片上的一个点,都将由邻近区域的点叠加而成的。由于互相重叠,我们看到的图像就被“模糊”了。术语PSF(Point Spread Function, 有时也叫kernel)用来描述单个像素点被模糊后在底片上的图像形状。

PSF (Point Spread Function)

来看一个PSF的实例:

这是高斯模糊函数的PSF: Matlab fspecial(‘gaussian’, 30, 8)

额外说明一下,高斯函数有一个很重要的属性:高斯函数经过傅立叶变换后,依旧是个高斯函数。这让它比较容易作数学变换处理。某些转换操作中的计算损失比较小。

动态模糊的PSF: Matlab fspecial(‘motion’, 40, 45)

将针对单个像素点的PSF应用到整张图像上的数学过程叫:卷积(convoluion). 数学符号通常写做* (注意:和乘法写法相同,但不要搞混)。 从数学上看,对长宽为(M,N)的图像f而言,经PSF模糊函数h后,生成的卷积结果为

其中,a = (M-1)/2, b = (N-1)/2。卷积的逆过程叫去卷积。去卷积很不常用,数学上用的很少。

卷积计算

卷积计算是很极其消耗CPU的。即使针对现代电脑而言,计算负担也重的无法接受。因此有必要使用一种数学工具用来快速计算卷积。离散傅立叶变换就是这个工具。离散傅立叶变换可将二维图像转成傅立叶空间中的图像,二维中的卷积转成傅立叶空间中的普通乘法。

可以看出,我们先前提到的模糊卷积过程可以写成

后面,我们在傅立叶空间中继续讨论模糊恢复。

去卷积的尝试

之前说过,卷积的逆过程叫去卷积。那么也许我们可以这样用除法计算,来得到恢复后的图像 F^(u, v)

除法是乘法的简单逆运算,但是它恐怕不能像我们预想的那样产生效果。为了理解这个问题,让我们观察方程底部的H(u, v)。如果H(u,v)的值很接近零或者等于零(实际中是必然的),除法将产生一个巨大的无效数值。这个数值将淹没掉正常图像像素值。

以这张图像为例,

转成灰度图,并转入到傅立叶空间后图像如下

左边的是振幅图,右边的是相位图。这里就不详细介绍傅立叶变换了。大家需要知道的知识是,振幅图中数值落差巨大,从图像中心到四个角,数值从百万数量级很快就降至零位。因此,当图像中还含有噪点N(u,v)时,经普通除法运算,这些噪点也会被成百万倍的放大。比如:

噪点比例=0.0000001                                                                                      噪点比例=0.000005

结论是,如果用除法来做去卷积运算,只要混入一点点噪音,处理结果就被噪声全淹没了。

成熟的去卷积算法

1942年,维纳(Wiener)提出了以他命名的维纳去卷积。这个算法一开始是被设计用来恢复模拟电路信号,稍转变后,其同样适用于图像处理。

式中Sn / Sf也可写做一个常数K, 可近似认为是信噪比。从式中可看出,即使H(u,v)逼近零,结果也不会变得无穷大。除维纳去卷积外,还有其它方法可以用。这里不一一介绍,有兴趣的朋友可以看这本书:<<反卷积和信号复原>>

还有一个更常用的方法叫Richardson-Lucy (简称RL方法)。这个方法是由两位分别独门提出的,所以命名看起来怪怪的。这个方法的思路是迭代计算。
Richardson-Lucy方法

u(t)为期望的原始图像,d是模糊图像,p是PSF, ^p是PSF旋转180度。每迭代计算一次,u(t)就更清晰了一点。不过这个方法也有以下问题:

  1. 迭代不收敛. 必须要在适合的时候停止迭代,不然继续迭代下去没有用处
  2. 对噪音有放大作用

目前,实际广泛使用的一般是基于RL的改进版本。

 

这类去卷积方法需要提供PSF函数。也就是说,你需要知道详细的模糊参数。而这通常是很困难的。比如,从下面两个实际镜头的模糊PSF函数就可以看出, PSF函数是非常不规则的。

基本上,我们只有做实验才能提供出精细PSF函数曲线。这类实验,也只被用于大型设备调教镜头成像细节(如医学CT)。再讲个小故事。当年,哈勃望远镜发射至太空轨道后,大家发现:哎呀,照出来的星系咋这么模糊呢。一调查,发现造主镜的工厂没考虑到地球引力对镜片的弯曲作曲。结果,到了太空后,没有地球引力,镜片微微翘起了一根头发的1/50的距离。但这足以让对焦不准了。咋办呀,大家赶快算理论做实验,很快把这个模糊的PSF函数给搞出来,于是处理一下,效果也还行。当然,哈勃那帮人钱多的是,不满足于软件修复,根据PSF又反造了一块补偿镜放主镜前面。(你要是搞天文摄影的,也可以算算自己的爱机镜头的PSF,咱最起码可以用软件补偿呗。在星图全黑背景上,一颗亮星的成像可以看作镜头的PSF.)。

              

哈勃补偿前与补偿后成像效果比较。右图是哈勃PSF函数。

盲去卷积 (Blind Deconvolution )

对我们普通人,根本不可能去自己构造PSF函数,比较实用的方法就是让程序自己搜索PSF。这种方法叫盲去卷积(Blind Deconvolution)

2014/6/7更新 (其余待续…)

转帖请注明来自色彩笔
(部分文字图片翻译自smartdeblur)

]]>