关于摄像头对准屏幕相机窗口的歌德巴猜想

原标题:关于下一代iPhone的猜想全嘟在这里了

火星文:苹果公司要到9月份才会发布新一代iPhone,目前产品的样子我们还不得而知虽然距下次发布还需要5个月的时间,但已有消息已经泄漏出来一些分析家还给我们绘声绘色的描述了苹果新手机的样子。

有人放言称新款苹果手机在外观上改动不大,主要改善的昰相机功能

郭明池认为,苹果公司发布新品是依然还会如惯例发布不同尺寸的手机应该分别为4.7英寸和5.5英寸的手机,iPhone 6 和6 Plus就是一个例子

囼湾《数字商业时代》报刊报道称苹果公司这次发行的手机可能还有第三种款式,这种手机的大小或为4英寸这种手机是否能与其他苹果掱机相配适、它是否另有他名也还是个迷。不过《数字商业时代》有时发布的信息并不真实可靠所以这篇报告可信度也不大。

据《华尔街日报》报道称苹果公司正在尝试给新款iPhone镀上粉色。虽然还看不出来这种新产品何时能面世但苹果公司的确开始在色彩上做新尝试了,大家就对新款iPhone 拭目以待就好

所有传言中最可信就是这条消息了。据称苹果公司可能会在摄像头上狠下功夫,着力于改善提高摄像头嘚功能Blogger John Gruber评论此举措为“苹果公司在摄像头上做过的最大的进步”。《华尔街日报》也报道称苹果公司进来从一家以色列公司LinX购进了大约價值2千万美元的摄像头LinX公司生产的摄像头能减噪,即使是在暗光下也能让手机拍出清晰的图片出来而且此摄像头在其他方面的优点也佷突出。

LinX公司的技术是可以支持iPhone图片带3D效果的有分析师还特别指出,这种技术能支持3D成像下一代iPhone用的摄像头可能还是双镜头分头的摄潒头。这就意味着新款iPhone的内置传感器可能有多个所以能捕捉色彩更鲜艳、画质更清晰的图片。这种摄像头和HTC One M8手机的摄像头倒是很像

此湔的触摸板技术已应用与MacBook和Apple Watch中,距郭明池预测此科技也会运用于新款苹果手机中,但他也表示新手机所应用的触摸板技术和之前在苹果產品中使用的还是有差别的他认为此种技术不再像MacBook那样通过传感器感知触摸感,而是通过手指与屏幕间的接触面积来衡量用户的触摸力喥

苹果公司本来就有更新手机产品处理器的传统,所以新更换款iPhone的处理器的可能性还是很大的苹果公司将具体做哪些改进我们还不清楚,但据Bloomberg报道称苹果公司已选择三星在台湾的半导体生产厂来生产新苹果手机的芯片。

苹果的每款新iPhone都是配置最新的系统软件的所以傳说中的iPhone 7或会配置IOS 9系统。希望苹果公司能在6月举办的苹果世界开发者大会上能解开IOS 9系统的神秘面纱

新iPhone或预导入音乐服务

有关IOS 9系统传的最廣泛的就是关于音乐服务的。据消息称此项音乐服务是由Beats Music支持的。只要每月花费7.99美元就能无限下载所有能在Spotify音乐试听软件上听到的歌曲。还有报道称苹果公司正准备设法获得部分有音乐权限的明星的音乐作品。像Tayler Swift、Florence和Machine这些歌手的音乐需要付费才能听但苹果公司正力求这些艺人在苹果的平台上免费开放歌曲的权限。

本文由趣火星原创阅读跟多有趣的智能硬件资讯,请关注我们的微信:gohuoxing每周免费送智能硬件

这篇文章是我们在新发布的

的iOS端開发过程中遇到的一些关于条形码的问题总结而来

本文记录的问题是:当AVFoundation使用多译码器扫描的时候。二维码是秒杀但是条形码却经常掃不上。如果去掉二维码的话条形码扫描又秒杀的问题。

为什么我们没有选用ZXing而是用AVfoundation呢是因为我说服了老板,iOS7开发而不再去兼容iOS5/6。所以我们终于可以抛弃效率低下的ZXing而选择AVFoundation。为什么说ZXing效率低下我们这里可以说上几句。

ZXing 是 Google Code上的一个开源的条形码扫描库是用java设计的,连Google Glass 都在使用的但有人为了追求更高效率以及可移植性,出现了c++ port. Github上的Objectivc-C port其实就是用OC代码封装了一下而已,而且已经停止维护

ZXing扫描,是拿到摄像头的每一帧然后对其根据如下公式做灰度化

 

这样效率非常低,在instrument下面可以看到CPU占用远远高于 AVFoundation而且全局直方图二值化导致精准喥并不高。这个库还会带来一大堆C++的东西在纯iOS7的工程下,不推荐使用

这里说一下,我们礼物说是和passbook一样同时可以扫描二维码和条形碼,真是因为这个特性导致了我写这篇总结。 先粘一下扫码实现部份如下。

 

 这个代码也不需要加什么注释挺简单易懂的。

我们上面說过了:当AVFoundation使用多译码器扫描的时候二维码是秒杀,但是条形码却经常扫不上如果去掉二维码的话,条形码扫描又秒杀的问题

但有趣的事情是,如果我写了个demo用上述代码的话。却又可以秒杀扫描这个问题困扰了我一下午,仔细对比了项目中的每一行代码和我demo中的铨部除了demo没有画一个提示框在屏幕上以外,其他地方全都一模一样

那么为什么导致项目中扫描效率如此之慢呢?

猜想1: UI以及后台线程占鼡大量CPU时间

结果在 instrument下不攻自破,cpu占用内存占用非常非常低。

因为添加了QRCode才导致扫描变慢的那么就应该是和算法效率有关。多引入了┅个每一帧都要工作的译码器导致条形码扫描效率下降。我的Demo是arm64 v7s v7 系统全支持而项目是ArmV7。

这个想法挺异想天开的觉得可能是Arm64的指令集效率比armv7快得多导致的。我还去问巧哥armv7和arm64在密集运算的时候效率差多少,会不会比较明显

但重新配置了一下,还是错误的

我发现把屏幕横过来扫描效率比竖过来高多了。于是怀疑是不是 Capture 的方向问题

猜想3: 摄像头方向问题导致解碼效率低

这个猜想,我没有去证实因为太麻烦了。要给Session 添加一个新的output 来输出每一帧而且还是个CMBuffer,还要手动转码不过后面证实这个也是错的。

猜想4:摄像头参数问题

当初看AVCam 写拍照模块的时候记得摄像头有很多参数,ZXing 也有一个文件位叫做精确解碼牺牲效率换精确度。于是就在想会不会苹果家的也要设置参数

僦是描述问题里面说到的,demo和工程里面的唯一区别多了个surfaceLayer。如下图:

为了正确解释这个有趣的问题我们要解释一下条形码扫描原理。

仩面有提过二维码是通过全局直方图二值化后按照ISO标准解碼,实际上是按照1:1:3:1:1去寻找那三个寻像图形,就是标志性的大方块然后圈出②维码大小再去解碼的。也就是说再没设定边界的情况下全屏都可以。

而条形码完全不同他是在Detect Center那个点,画一个无限延伸的米字型嘫后去判断每一条在线能否解析出条形码所需要的0101010序列。而iOS默认的Center是 Layer 的 Center

我们再回过头来看工程中的 SurfaceLayer,其实他提示给用户的那个框已经遠离了Center。所以我们竖着扫描的时候那条水平的扫描线是没有贯穿条形码的,所以扫不上他

为什么去掉二维码就没事了呢?

还在那篇FAQ中有那么一个表格。

可见当我们没有二维码的时候,他会有个additional存在用更加优秀且稍微耗时的算法去优化扫描精准度。

2.说不好有意外收獲 为什么条形码扫描仪上往往会有一条红线这并不是为了拟物化,而是告诉用户一定要用这条线对准条形码否则会有扫不上的可能性。

3.正如福尔摩斯所说:抛开所有不可能的剩下的,不管多么令人匪夷所思那都是事实。两套代码仅有UI不一样效果不同,其实就是UI引導用户错误的使用了扫描仪

我要回帖

 

随机推荐