前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >google图像新压缩技术RAISR的测试

google图像新压缩技术RAISR的测试

作者头像
sparkexpert
发布2018-01-09 14:27:45
2K0
发布2018-01-09 14:27:45
举报

不久前,Google刚刚发布了一种名为RAISR(Rapid and Accurate Super Image Resolution,意为“快速、精确的超级图像分辨率技术”)的图像压缩技术,旨在保存宝贵的数据,而不牺牲照片质量;并在带宽受限的移动设备上提供清晰锐利的图像。

Google声称,该技术可以降低高达75%的带宽,RAISR分析同一图像的低分辨率和高分辨率版本,了解到高分辨率版本出众的原因,然后在低分辨率版本模拟出来。实际上就是使用机器学习创建一个类似Instagram的过滤器,欺骗你的眼睛,让你相信低分辨率与高分辨率图像是一致的。

看到这个技术,想测试一下,顺便看一下算法原理,刚好网上有一些相关的代码,主要参考代码如下:https://github.com/MKFMIKU/RAISR

仔细看了下算法的原理,才发现这个算法的压缩机制主要包括两个部分:

(1)先创建一个低分辨率的图片,保存在hashtable中。

(2)在高低分辨率的成对图片中学习,即先对低分辨率图片应用低功耗的的升采样,然后在升采样图片和高分辨率图片的组合中学习过滤器。

如下这段核心代码可以看到:

mat = cv2.imread("./train/alp2.jpg") h = np.load("lowR2.npy") mat = cv2.cvtColor(mat, cv2.COLOR_BGR2YCrCb)[:,:,2]

# 升采样 LR = cv2.resize(mat,(0,0),fx=2,fy=2) LRDirect = np.zeros((LR.shape[0],LR.shape[1])) for xP in range(5,LR.shape[0]-6):     for yP in range(5,LR.shape[1]-6):         patch = LR[xP-5:xP+6,yP-5:yP+6]

       # 之前保存的方向强度等属性信息         [angle,strenth,coherence] = hashTable(patch,Qangle,Qstrenth,Qcoherence)         j = angle*9+strenth*3+coherence         A = patch.reshape(1,-1)         t = xP%2*2+yP%2

# 过滤器         hh = np.matrix(h[j,t])         LRDirect[xP][yP] = hh*A.T

  从上面可以看出,RAISR 的过滤器都是根据图像的边缘特征训练的:亮度和色彩梯度、平实和纹理区域等。这又受到方向(direction,边缘角度)、强度(strength,更锐利的边缘强度更高)和黏性(coherence,一项量化边缘方向性的指标)的影响。

由于本人的测试环境为:python3.6,而示例程序中有一些地方的脚本语言应该是在2.7环境下编译的,因此需要对上述代码中进行相应的修订,主要是:

from scipy.sparse.linalg import cg

这个调用需要更加显性。

剩下的相关修改地方已经提交在github程序中:https://github.com/ndscigdata/RAISR/tree/master

测试效果如下所示:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年04月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档