《计算机视觉导论》 Assignment-1
朱心洲 22151326
在本次作业中,要求使用图像为自己制作一个拼接肖像画,实现思路如下:
- 1.通过爬取百度图片上相应素材图片,作为生成拼接肖像画的素材
- 2.通过计算图片的 HSV 色彩空间,与生成图像的一小块进行对比,根据HSV值接近程度,确定使用合适的图片
- 3.统一处理素材图片至统一大小,根据图片大小确认粗细细粒度
- 4.遍历原图的每个像素点,找到与这个像素点的平均 HSV 值最接近的那张图片,并用那张图片来替换这个小块;
一、图片素材的获取
以[风景]、[人物]、[山]、[校园]、[森林]为标签爬取百度图片的数据,相应代码在spider.py文件里,相应图片存储在image文件夹里,共6000张照片。
二、计算图片的HPV值,将所有图片大小归一
由于RGB 色彩空间不能方便的比较颜色之间的相似度,于是在处理这一类问题的时候我们更多的是使用 HSV 色彩空间。 HSV 色彩空间也是由三个分量组成的,分别是:
- Hue(色调)
- Saturation (饱和度)
- Value (明度)
其中,我们定义max = max(R, G, B),min=min(R,G,B)
其中v=max
-
在计算出v后,计算s,其中s的计算方式为
-
在计算s后,计算h,h的计算方式为:
在完成hsv值的计算后,根据切片大小,将每张图片转换成同样大小。
三、开始生成拼图
- 遍历我们生成的计算了hsv的文件夹,获得里面所有图片的平均 HSV 值,保存在一个 list 中;
- 接着我们将原始图片按照像素分为一小块一小块,每一个小块会计算他的平均 HSV 值;
- 接着我们在上面生成素材的平均 HSV 值的 list 中,找到与这个小块的平均 HSV 值最接近的那张图片,并用那张图片来替换这个小块;
- 依次对整个图形进行这样的操作,这样就可以使用素材图像生成一个图像;
四、结果对比
4.1 原图展示
选取本人某个背景图为肖像图生成素材,其中着粉色上衣的为本人
4.2细粒度图片生成。
在通过设置分片大小为1010,图片大小为30003000,共90000张照片组成,每张照片最多允许重复20次,所生成的图片如下图所示
4.3粗粒度图片生成。
在通过设置分片大小为100100,图片大小为30003000,共900张照片组成,每张照片最多允许重复20次,所生成的图片如下图所示。
在经过填充原图作为背景,优化展示效果,最终结果如下图所示:
五、 优化方案&总结
在本次作业中,通过制作个人拼接肖像画,使我更进一步在计算机中图像表示方法,图像相似度计算、搜索方案,图像中信息特征的提取并且通过自身实践完成了该项目,开启了我对计算机视觉的兴趣。
同时,在完成实验后,对该算法进行了优化;
- 在合成图片时,限制了每张图片的使用次数,避免了一张图片出现次数太多的情况
- 在搜索相似图片时,使用二分查找的方法,极大提高了程序执行速度
- 在最后合成图片时,使用原图填充背景图,提升图片可看性