1. 引言
在如今互联网不断融入生活的信息化时代中,文化娱乐产业也同网络结合,衍生出诸如在线直播、网络小说、共享视频等诸多领域。而绘画艺术也在这些新生的行业中扮演了重要角色。经研究表明,人类获得信息的80%以上来自于视觉信息,而绘画作为人类记录视觉信息的手段之一,也自然成为交流的重要手段之一。通常而言,在计算机中一副绘画作品一般在10 MB以内,在光纤、5 G网络开始普及的当下,图片可以快速地在网络上进行传输,并且观赏者和作者之间还可以互动、交流、评价,要做到这些只需要有一个能够作品发布、浏览、评价的平台。
在国内外,已有很多这样的平台,比如Pixiv,Deviantart、Pinterest、IbiSpaint等,它们一般都可以进行标签以及关键字的分类和搜索,可以对作品进行评分、留言评论等,有的还可以观看优秀作品的绘制过程,但如果要更优质的服务大多需要注册付费等。在国内,也出现了站酷、Drawyoo、插画家园、胡来网等可以进行绘画作品交流的网站,另外还有一些诸如微博等综合社交平台也可以进行绘画作品的交流,但这些平台很多更侧重于社交功能。对于更关注作品交流的角度而言,一个为凸显绘画作品本身的平台无疑是很有价值的。本文以绘画作品交流为重点进行平台研究设计,在该平台上,用户可以快速、准确地找到自身感兴趣的作品并进行评价,作者可以方便地将自己的创作作品上传,并可以在线进行修改和加工。
2. 绘画交流平台的整体功能设计
作为绘画交流平台至少应当有两类用户,普通游客和注册用户。注册用户登录后可以搜索作品、上传

Figure 1. Painting communication platform function module diagram
图1. 绘画交流平台功能模块图
作品或打开用户菜单。搜索作品时可以选择输入关键字或是上传本地图片来进行搜索,经处理得到结果后可以从查询结果中打开感兴趣的作品查看,查看作品时将可以进行评分和评论操作,根据情况将可以选择收藏/取消收藏作品、关注/取消关注该作品作者。对于普通游客则只开放搜索作品和浏览作品的功能。注册用户的功能如图1所示。
3. 图像搜索算法及其实现
当用户想要搜索和某图像相似的图像时,可以先计算该图像的指纹,搜索时将会把经计算得到的指纹数值同库中已存在的作品的指纹记录进行比较,若两比较对象间的汉明距离不超过阀值则认为两者为相似作品。
搜索过程的核心就在于如何取得图片的指纹。其中可以采用感知哈希算法 [1] [2] [3]、均值哈希算法 [4] 或者差值哈希算法 [5],以及各种改进算法 [6] - [10] 来提取文件特征并生成可用于比较的指纹,进而进行图片、视频等媒体资源的比较和检索。而均值哈希算法是基于低频信号的哈希算法,它的速度快,易实现,也是本文所采用的算法。
3.1. 高频信号的降频处理
均值哈希算法的基本原理是对图片进行降频处理得到可以作为图片指纹的Hash值。一般,高频信号是指的发生快速变化的信号,比如,在一幅彩色的图像中,物体边缘(亮度或灰度对比周围环境产生了激烈变化)的地方相对于其他部分就是高频。一般来说,图片中的高频成分决定了具体的细节部分,如颜色、亮度、透明度等,而低频部分则决定图像的整体结构。如图2所示。

Figure 2. High frequency information is gradually lost from left to right
图2. 从左到右高频信息逐渐丢失
3.2. 均值哈希算法的过程
a) 将图像缩小到8*8的尺寸,去除图像的高频成分,同时避免在接下来的计算中可能因原图大小尺寸带来的差异。
b) 将缩小后的图像转化为灰度图,至此原图将只保留明暗和结构的基本信息。在实际开发中,可以先将原始图像转化为位图(bmp格式)文件,然后按照从左到右、从上到下的顺序将获取每个像素的颜色,并根据灰度公式Gray = R*0.299 + G*0.587 + B*0.114转化为灰度色并以byte形式保存,最后将会得到一个长度为64的byte数组。
c) 计算当前64个像素的图像的平均灰度值,即将上一步得到的byte数组求和后计算平均值。
d) 将图中每个像素的灰度值同上面得出的平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。最后将比较得到的0和1组合起来,将会成为一个64位的数据,此数据即可代表被检测图片的指纹记录。若按照字符串的内容以0记为黑、1记为白的规则重新转化为8*8的64像素图像将会得到一张描述了原图像的缩略图的结构的二值黑白图。上面四个步骤的结果如图3所示。
(a) 待处理原图 (b) 去高频后图 (c) 灰度图 (d) 哈希均值后指纹图
Figure 3. Step results graph of average hash algorithm
图3. 均值哈希算法的分步骤结果图
得到了图像的指纹后,进行搜索的时候只需要计算各图像的指纹之间的汉明距离,汉明距离在一定阀值范围的认为是相似图片,否则认为是不同图片。
3.3. 均值哈希算法的实现
有了均值哈希算法的步骤,可以按照四个步骤依次去实现均值哈希算法,流程图如图4所示。
其中转换灰度图即去除图的颜色信息,具体实现代码参看图4右侧代码。比较均值求指纹过程具体实现代码参考图4左侧代码。需要指纹比较时,将会根据两个比较对象之间的差距判定两者是否是类似作品。即统计两个64字符串间的不同位数,其结果将是两者间的汉明距离。最后根据汉明距离是否超过了阀值对两张图片相似与否进行判断。统计上一般认为,两张图片的汉明距离在5以内时可认为二者非常相似;超过10时则认为两者是完全不同的图片。
4. 绘画交流平台的设计及实现
绘画交流平台的浏览者希望能通过平台找到符合期望的作品,也可以给创作者进行作品反馈、评价等。而注册用户希望能有一个平台进行交流,并能在线的进行创作,以及根据反馈修改作品等。本节首先进行数据库的设计,然后设计平台中几个比较重要的功能。
4.1. 数据库部分
在该平台中,无论是用户、作品,还是评价、消息等都会涉及到数据库的存储。通过分析,可认为数据库将由用户信息、作品信息、评论信息、消息提醒这四部分实体组成。具体关系如图5所示。

Figure 5. E-R Diagram of painting communication platform
图5. 绘画交流平台数据库E-R图
其中,用户信息表将用来存储关于网站用户的密码、使用头像、关注用户等信息。作品信息表将存储网站作品的标题、种类、分数等信息。消息信息表将存储消息通知的种类、涉及作品、发送者与接受者等信息。评论信息表将存储评论的发言者、发布时间、内容、涉及作品等信息。
4.2. 按关键字搜索
按关键字搜索是指的按照输入的关键字在绘画作品标题以及标签中寻找,对数据库中的记录进行模糊检索,当检索到于标题或标签中包含关键字的作品后将会把该条记录收录到结果中并根据设置进行排序,最后将排序结果输出到搜索页面上。
4.3. 在线创作功能
创作者可以在平台上传自己的创作作品,并且创作者在上传作品时可以对作品进行描述说明以便标识。创作者还可以直接在平台上进行在线创作,这主要通过画布来实现。但在创作时,当鼠标于画布上操作时应该能够看到绘图的过程,比如,用圆形工具画圆时,将可以预览圆随鼠标操作产生的变化。为此整个画板由两层画布组成:一层画布用来支持画笔动作的预览,它在每次操作后都会清空并重新绘制;另一层则用来保存实际的图像状态,最后要呈现的图片将从该层画布得到。对于第一层画布的操作最后都会保存到第二层画布,且在保存完成后第一层画布将会清除自己的内容。
另外,该功能也可以打开已创作的作品,继续进行编辑、绘图等工作,处理完成后覆盖原作品。
5. 基于.NET的绘画交流平台的测试
由于该绘画交流平台是面向大众的,因此采用了基于.NET的网站的形式实现了该平台。平台主界面布局如图6(a)所示,实际效果如图6(b)所示。
(a) 主界面布局图
(b) 主界面运行图
Figure 6. Main page layout and actual main page of the platform
图6. 平台主界面布局及实际界面图
当选择图像搜索时,选择一个本地图片,先求得图片的指纹,然后和库里的图片进行对比,搜索出相似图片。如图7所示。
(a) 选择待搜索图像
(b) 搜索得到的相似图像
Figure 7. Search of painting works
图7. 绘画作品的搜索
其他功能篇幅原因不再一一赘述。
对比之前相关的网站,本网站的优点就是功能比较集中,让热爱绘画的人能够快速、准确地找到自己需要的画作,并进行相互交流。
6. 总结与展望
本文介绍了一个专为绘画所做的交流平台,目的是针对绘画作品进行交流。平台中对图像的搜索采用了均值哈希算法,这个算法简单、速度快,但稳定性还不够。后续还可以对算法进一步改进,使得搜索功能能够更加快速且稳定。
基金项目
本项目得到北京市自然基金(4204100)资助。
参考文献