参加「CTA 核心技术及应用峰会」,请扫码报名 ↑↑↑

作者 |CV君

来源 | 我爱计算机视觉(id:aicvml)

要说目前最火的用到手机摄像头的应用是什么,毫无疑问非二维码识别莫属了。微信带起来的二维码热,几乎已经改变了整个世界的支付方式、社交方式。

但二维码的设计毕竟是为了对算法友好,人眼看起来就丑了些。

一种天然的想法是,能否把信息嵌入到照片里去?想象一下如果给一张个人大头照,就可以自动提取里面的名片信息,或者扫个风景照就支付,那看起来就自然多了。

实际上用图像检索的方式可以在一定程度上实现上述功能,提取特征然后到服务器上匹配图像,把对应信息下载下来。

传统的AR(增强现实)就是这么做的。但这需要联网,而且对于纹理不丰富的图片,检索效果很差,也没有很好的信息校正机制。以前有一家国内电商用类似图像检索的方式做过拍书籍封面搜商品的应用,但用的人并不是很多。

深度学习时代,能否实现照片“隐写术“?

几天前看到一篇论文,感觉距离实现这个目标不远了。

论文题目“StegaStamp: Invisible Hyperlinks in Physical Photographs”,翻译一下就是《隐写邮票:自然照片中嵌入不可见超链接》,Stega有隐写术的意思。

这篇论文作者来自美国加州大学伯克利分校。

作者的想法就是把信息写入图像中,使打印出来的图片感知度不被破坏,同时拍摄打印的图片还能把信息解码出来!

下图把这个一目了然表达了出来。需要说明的是,作者论文中说不只是打印照片支持拍照再解码,显示在屏幕上也能拍照后解码。

作者的视频介绍:

细节的流程是这样的,如下图:

图像与要嵌入的信息经过神经网络编码成新的照片,经过打印或者屏幕显示后再拍摄,把得到的图像经过检测算法得到校正后的图像区域,该图像经过解码算法得到嵌入图像里的信息。

这个过程中,我们不免有疑问,信息嵌入会不会影响照片的视觉感知?另外,信息嵌入是可以,但经过打印或者再次成像后拍照,外界的环境变化可能很大,如何保证提取信息的鲁棒性?

在目前该文的算法中,嵌入信息过多的确会影响视觉感知,但作者实验嵌入100bits信息还是OK的。

下图展示了,嵌入信息后(第二列)与原始图像(第一列)的差异(第三列)。视觉上几乎难以分辨不同。

至于解决鲁棒性的问题,做法是在训练解码器的时候,模拟真实的图像质量退化模型对嵌入信息的图像做变换。如下图:

包括图像透视变换、模糊化、颜色操作、加噪声、JPEG压缩。

最终该文得到的效果还是很不错的!

在大多数情况下都能100%正确解码!

下图为更多图像的识别结果:

同时该算法对各种真实世界的环境影响均有鲁棒性。

这是对抗光照变化:

这是对抗视角变化:

这是对抗局部遮挡:

这是对抗光线反射:

更多结果请看:

是不是很神奇?!

这个算法感觉很有用,不知道作者申请了专利没有。

作者已经开源了代码:

https://github.com/tancik/StegaStamp

该项目主页:

http://www.matthewtancik.com/stegastamp

论文地址:

https://arxiv.org/abs/1904.05343

有了这个技术,很多有趣的东西可以做出来,它不仅可以作为超链接,还可以在用户不知情的情况下对照片和屏幕嵌入信息。。。

(本文为AI科技大本营转载文章,转载请联系原作者。

精彩推荐

5月25-27日,由中国IT社区CSDN与数字经济人才发展中心联合主办的第一届CTA核心技术及应用峰会将在杭州国际博览中心隆重召开。首届CTA核心技术及应用峰会将围绕人工智能,邀请技术领航者与开发者共同探讨机器学习知识图谱的前沿研究及应用。

同时,我们推出会议双日开发者盲定票,仅售299元(原票价1099元),限量30张。扫描下方二维码,或添加小助手微信1731967109,备注【CTA】,了解大会详情以及票务问题。

推荐阅读:

  • 开什么玩笑?股票价格如何经得起AI的推敲?| 技术头条

  • 深入卷积神经网络背后的数学原理 | 技术头条

  • 用Python实现OpenCV特征提取与图像检索demo

  • Python基础入门——简介和环境配置,超实用!

  • 云计算之基,一文带你速懂虚拟化KVM和XEN

  • Erlang 之父去世,他留给程序员两点忠告

  • 程序员逆袭为美国最佳 CEO,他说因为爱情

  • 用一枚比特币环游世界? 他是不是疯了...

  • 程序员如何向女友解释:为啥软件都要装C盘?

❤点击“阅读原文”,直接参与大会报名

UC伯克利开源照片“隐写术”StegaStamp,打印照片能当二维码用!| 技术头条相关推荐

  1. JS使用Lodop控件打印表单和二维码

    有关Lodop的查询可看文章:Lodop打印条码二维码设置多宽不一定是多宽 一.了解Lodop 1.1Lodop的定义 Lodop(标音:劳道谱,俗称:露肚皮)是专业WEB控件,用它既可裁剪输出页面内 ...

  2. 微信小程序实现蓝牙打印(图片、二维码、文字)

    小程序连接蓝牙打印机实现打印功能 这真是一块超级难啃的骨头,我也是参考了很多文章才勉强理解,但是如果你啃动了,那你以后也有了拿得出手的资本了 完整DEMO地址可直接下载下来使用 搜索与连接蓝牙,这个我 ...

  3. 【C#】最全单据打印(打印模板、条形码二维码、字体样式、项目源码)

    系列文章 [C#]编号生成器(定义单号规则.固定字符.流水号.业务单号) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/12912978 ...

  4. 条码打印软件如何固定二维码的尺寸和位置

    用过条码打印软件的小伙伴会知道,在软件中生成二维码后,可以直接在画布上用鼠标拖动二维码,改变二维码位置,也可以用鼠标拖动二维码四个角方形点修改二维码尺寸,设置是非常灵活. 但是也有的客户用条码打印软件 ...

  5. Winform中使用printDocument控件打印pictureBox中的二维码照片

    场景 Winform中使用zxing和Graphics实现自定义绘制二维码布局: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...

  6. 微信红包照片来了,用变色龙隐形二维码赚点零花钱

    在微信支付已经日趋成熟化的今天,红包已经不仅仅是逢年过节时才有,有了微信,随时随地都可以收发红包."今天你收到红包了吗?"已经成为很多人的日常问候.但单纯的抢红包.直接收发红包又或 ...

  7. 使用Lodop控件打印表单和二维码

    文章目录 1.了解Lodop 1.1Lodop的定义 1.2Lodop主要函数 1.3Lodop的下载 2.在页面中引入Lodop 3.支持的浏览器 4.Lodop的应用 4.1使用Lodop打印表单 ...

  8. Android开源之行之走进zxing,轻松实现二维码扫描(二)

    对于Zxing开源项目的简化上文已给出,源码经过测试且不断修改.众所周知,Zxing项目的扫描是横向的,这么引用的用户体验确实不好:然而盲目的修改会出现拉伸以及样本采集的偏离.所以这里说一下如何将横屏 ...

  9. 二维码中加图片(打印带图片的二维码)

    在二维码中,放入图片,遮挡一部分是被允许的. 二维码在少许损伤的情况下还可以读取出来,图片可以放置的位置如图的黄色区域.(具体可以放多大要看二维码生成时的纠错能力) 二维码的纠错级别: 纠错级别越高, ...

  10. 蓝牙连接打印机打印文字图片条形码二维码 用的是Gprinter打印机

    实现了蓝牙打印,正在进一步完善,欢迎留言交流 :) Github链接

最新文章

  1. 创建一个多进程(multiprocessing.Process)
  2. 第12步 用户模块前端(客户)
  3. 用IIS配置反向代理
  4. 史上最简单的隐马尔可夫模型讲解
  5. SpringBoot-MongoDB 索引冲突分析及解决
  6. 华为再发行30亿元超短期融资券
  7. python基础列表(四)
  8. android http封装类,HTTP封装类 工具类 For Android
  9. 语音识别算法_开源语音识别算法_语音 识别 - 云+社区 - 腾讯云
  10. 责任链模式的高级用法
  11. 文件同步工具GoodSync简介
  12. ESP32 硬件开发指北 -- 外接FLASH使用指北
  13. 基于Verilog HDL的数字秒表
  14. 小白网卡带宽限速神器:wondershaper
  15. 微信扫一扫中的js安全接口域名的配置
  16. 10天的百家号运营,让我发现了百家号的一些秘密
  17. python公众号教学_Python微信公众号后台开发教程
  18. canvas基本使用,以及七巧板绘制
  19. botpress搭建智能问答机器人
  20. thingsboard从搭建环境到安装部署,给安装出错,或者安装失败的小伙伴现场写一遍(修正版)

热门文章

  1. Error: could not open 'D:\Program Files\Java\jre7\lib\amd64\jvm.cfg'
  2. Mysql使用大全 从基础到存储过程
  3. [转]程序员技术练级攻略
  4. EIGRP OSFP 利用NULL0接口防止路由环路 Loopback Null0接口揭秘
  5. 如何使用Log4j?
  6. Java Optional类源码解析和用法
  7. Ubuntu 18.04安装Matlab 2018
  8. 16.matlab并行处理,调用CPU得多核
  9. 基于自然的灵感算法--元启发式
  10. Ubuntu16.04运行.run文件