淘宝iOS拍立淘微距能力探索与实现-深圳SEO优化公司

淘宝iOS拍立淘微距能力探索与实现

简介: 画面模糊问题的源头也是来自用户的微距体验不佳,我们对问题深入分析,适当拆解。通过 Apple Development Doc 的查阅及实践,一步步抽丝剥茧,最终完美解决用户的体验痛点,也为我们自身沉淀了展示微距的能力。

画面模糊问题的源头也是来自用户的微距体验不佳,我们对问题深入分析,适当拆解。通Apple Development Doc 的查阅及实践,一步步抽丝剥茧,最终完美解决用户的体验痛点,也为我们自身沉淀了展示微距的能力。



前言


在最近两年苹果发布的 iPhone13 Pro Max 和 iPhone14 Pro Max 系列的手机上,如果使用三方主流 app 进行近距离对焦,会产生画面模糊的问题。拍立淘是手机淘宝相机能力的主阵地之一,用户会进行近距离拍照识别商品,或者近距离扫物流单二维码、吊牌条码、药品码等行为,类似手机系统相机的微距能力没有释放出来,会影响用户的使用体验。基于上述背景,为了优化用户体验,拍立淘 iOS 端开发团队进行了摄像头切换(微距)问题的分析和解决。


本文从原理开始分析,通过层层拆解,把「微距实现」这个命题划分成为三个主要的解决目标:变焦系数、光照水平、焦点位置的确定。并围绕链路实现、性能、适配三个层面进行可行性验证,完成微距能力的落地。


下图:图1-4为部分 app 镜头页在 iPhone13 Pro Max 的近距离对焦表现,图5为应用了微距能力的拍立淘。



背景知识


 成像原理


  • 焦距


焦距:焦距是从镜头的中心点到传感器平面上所形成的清晰影像之间的距离。镜头的焦距决定了该镜头拍摄的物体在传感器上所形成影像的大小。焦距的本质是“视角”,焦距越短,视角越大;焦距越长,视角越窄。焦距是以“mm”为单位。如下图所示是常见的焦距和可视范围。


为什么在我们对准某个物体的时候,有时候会出现画面的模糊,需要手动或自动对焦解决?这就要说到对焦。


对焦:当焦平面落在成像面(感光sensor)上时,图像是最清晰的。如果成像面在焦深范围之外,图像是模糊的。所以有时候为了获取清晰的成像,需要调焦。手动调焦(MF)或者是自动调焦(AF)。


自动调焦有多种方法:测距离法、反差检测法、PDAF相位检测法等等,苹果的Focus Pixels其实就是相位差对焦技术。


  • 变焦


光学变焦:依靠光学镜头结构来实现变焦。通过镜片移动(焦距发生变化),来放大与缩小需要拍摄的景物,光学变焦倍数越大,能拍摄的景物就越远。光学变焦在单反相机比较常见。在手机相机中,主要是通过切换镜头来实现光学变焦的效果。
数码变焦:纯粹对一张数码照片进行放大操作,比如说,把一张10×10像素大小到图片改成15×15像素,看起来画面就大了,但这种操作是纯粹数码层面的,没有任何光学镜片介入。

下图为iPhone 14 Pro Max具有的光学变焦和数码变焦能力。即当我们使用系统相机进行0.5~3倍焦距调节时候,是光学变焦,从3-15倍焦距调节的时候,是数码变焦。



  • 多摄像头


为了在手机上实现更为强大的影像效果,手机厂商走出了多摄像头组合的路线,通过在手机上集成多个不同特性的摄像头,来在手机上实现出多样化的拍摄效果,用户在拍摄界面操作变焦时不同的影像焦段交给对应的摄像头处理,焦段过渡时利用数码+光学变焦结合进行补间,通过这种方式在手机上实现了的长焦+短焦,同时再配置一些广角、大光圈、景深与色彩等特种镜头,让丰富的摄像头组合支撑出强大的多样化的手机拍摄能力。
下图为iPhone 14 Pro Max具有的多摄像头:主摄+超广角+长焦。

 苹果相机


  • iPhone成像系统概览


iPhone在主摄的基础上,在设备迭代中相继加入了多摄:包括长焦镜头与超广角镜头。


其中,有如下几个重要的技术更新点:

  1. 2014年,iPhone 6 Plus摄像头首次加入镜头光学防抖;
  2. 2016年,iPhone 7 Plus首次采用双摄方案(加入长焦镜头);
  3. 2019年,iPhone 11 Pro首次采用三摄方案(加入超广角镜头);


具体图表如下(图引):



  • 无法对焦的的主要原因


从 iPhone 12 Pro 系列开始,后置主摄传感器增大了许多(1.7微米超大底),而大底 Cmos 带来的问题就是,对焦距离无法做到更近。而在 iPhone 13 Pro 系列和 iPhone 14 Pro 系列机型中,苹果加入了广角微距,支持微距控制,因此这些机型理论上是支持近距离拍摄的,并且还能拍摄得非常清晰。

问题分析


基于上述分析,得知苹果在硬件层面中,在带超广角的iPhone机型当中,是能够带给用户更好的微距体验。但是需要app支持。当前拍立淘业务中拍近距离物体会模糊的问题,拆解出主要有三个层面的问题待确认:

  1. 链路实现层面
  1. 不支持摄像头自动切换的原因是什么?
  2. 摄像头自动切换需要具备哪些条件?
  3. 与业务现有链路如何融合?
  1. 性能层面:
  1. 是否会造成内存的增加?
  2. 是否会造成CPU的增加?
  1. 适配层面
  1. 对于不同机型、不同系统版本,需要什么策略适配?


 链路实现层面


  • 不支持摄像头自动切换的原因是什么?


拍立淘的相机创建链路如下:



其中,涉及到此问题的关键步骤为生成AVCaptureDevice

AVCaptureDevice 在整个视频采集过程中提供实现摄像头和麦克风相关初始化,并可以对摄像头进行一些基本设置,如:闪光灯、手电筒、聚焦、曝光、白平衡等一些基本设置。


原有的生成device逻辑,是调用系统方法devicesWithMediaType:,而这个方法在iOS10之后已经废弃。对于需要利用新设备上的多摄像头自动切换,使用这个接口是不能达到目的。根据API的提示,需要采用新的AVCaptureDeviceDiscoverySession:


  • 支持摄摄像头自动切换需要具备哪些条件?


要实现自动切换,就要调用新的接口。在使用方式上,我们也遇到了一些理解难点,下面是过程记录。


首先从这个新接口入手,他的入参有三个:deviceTypes、mediaType、position。其中:

  1. mediaType是设备的媒体类型。比如音频、文本等,这里自然就选择AVMediaTypeVideo。
  2. position是相机的位置是前置还是后置。根据不同的业务需要,拍立淘主要的流量场景是AVCaptureDevicePositionBack。
  3. deviceTypes是可以获取的相机设备内容。他的可选项比较多,需要根据系统版本区分选择。这次我们要解决的是微距,因此需要增加超广角的获取。我们主要把目光注意到AVCaptureDeviceTypeBuiltInDualWideCamera上,而对于不支持的设备,我们做好适配和兜底即可。


/**
AVCaptureDeviceTypeBuiltInWideAngleCamera 广角(默认设备,28mm左右焦段)
AVCaptureDeviceTypeBuiltInTelephotoCamera 长焦(默认设备的2x或3x,只能使用AVCaptureDeviceDiscoverySession获取)
AVCaptureDeviceTypeBuiltInUltraWideCamera 超广角(默认设备的0.5x,只能使用AVCaptureDeviceDiscoverySession获取)
AVCaptureDeviceTypeBuiltInDualCamera (一个广角一个长焦(如iPhone7P,iPhoneX),可以自动切换摄像头,只能使用AVCaptureDeviceDiscoverySession获取)
AVCaptureDeviceTypeBuiltInDualWideCamera (一个超广一个广角(如iPhone12 iPhone13),可以自动切换摄像头,只能使用AVCaptureDeviceDiscoverySession获取)
AVCaptureDeviceTypeBuiltInTripleCamera (超广,广角,长焦三摄像头(如iPhone11ProMax iPhone12ProMax iPhone13ProMax)可以自动切换摄像头,只能使用AVCaptureDeviceDiscoverySession获取)
AVCaptureDeviceTypeBuiltInTrueDepthCamera (红外和摄像头,能够获取景深数据(如iPhone12ProMax iPhone13ProMax))
*/
https://developer.apple.com/documentation/avfoundation/avcapturedevicetypebuiltindualwidecamera?language=objc

一种由两个固定焦距组成的设备:一个超广角和一个广角的摄像头组成的设备。


内置双摄像头支持以下功能:

  1. 当变焦系数、光照水平和焦点位置允许时,自动从一台摄像机切换到另一台摄像机。
  2. 通过测量超广角和广角相机拍摄的图像之间的差异来生成深度数据。
  3. 通过单个照片捕获请求从组成的超广角和广角设备传送照片。


这里就引出了本轮问题的解决点:

当变焦系数、光照水平和焦点位置允许时,自动从一台摄像机切换到另一台摄像机。


因此,我们知道摄像头自动切换,需要具备的条件是:变焦系数、光照水平、焦点位置在系统要求的范围内。

那么问题就限定在三个参数的阈值上。拍立淘的场景采用的自动对焦,即焦点位置不需要主动设置,会根据主体位置进行对焦。光照水平在正常环境下使用即可。因此我们只要确定变焦系数(videoZoomFactor)并实验验证。


videoZoomFactor

该属性是一个用于控制AVCaptureDevice的图像的裁剪和放大的值;它是一个乘数:例如,值 2.0 会使图像主体的大小加倍(并使视野减半)。允许的值范围从 1.0(完整视野)到活动格式AVCaptureDeviceFormat的属性videoMaxZoomFactor值。

AVCaptureDevice通过围绕传感器捕获的图像的中心进行裁剪来实现缩放效果。在低缩放系数下,裁剪的图像等于或大于输出大小。在较高的缩放系数下,设备必须将裁剪后的图像缩放到输出尺寸,从而导致图像质量下降。活动格式AVCaptureDeviceFormat的videoZoomFactorUpscaleThreshold属性指示将进行放大的因素。


方案一:

通过使用拍立淘现有变焦工具,我们得以一览在使用了AVCaptureDeviceTypeBuiltInDualWideCamera获取到device后,videoZoomFactor在1-3.5范围内的视频流预览内容情况。实验结论来看,在采用自动设置焦点位置的和变焦在2倍的情况下,会出现镜头画面的切换。视频3秒处(主摄->超广角)和9秒处(超广角->主摄),效果如下:

,时长00:12

方案二:

方案一采用的是调参验证的方式,实际上在AVCaptureDevice的API中,就有关于这个zoomFactor准确值的取法。


/*!
@property virtualDeviceSwitchOverVideoZoomFactors
@abstract
   An array of video zoom factors at or above which a virtual device (such as the Dual Camera) may switch to its next constituent device.
@discussion
   This array contains zoom factors at which one of the constituent device's field of view matches the next constituent device's full field of view. The number of switch over video zoom factors is always one less than the count of the constituentDevices property, and the factors progress in the same order as the devices listed in that property. On non-virtual devices this property returns an empty array.
*/
@property(nonatomic, readonly) NSArray<NSNumber *> *virtualDeviceSwitchOverVideoZoomFactors API_AVAILABLE(ios(13.0), macCatalyst(14.0)) API_UNAVAILABLE(macos, tvos) API_UNAVAILABLE(watchos);
3DXR技术 | 终端技术 | 音视频技术

服务端技术 | 技术质量 | 数据算法


相关文章
|
设计模式 测试技术 iOS开发
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(1)
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(1)
285 0
|
设计模式 搜索推荐 iOS开发
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(7)
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(7)
547 1
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(7)
|
7月前
|
文字识别 安全 API
iOS Crash 治理:淘宝VisionKitCore 问题修复(下)
iOS Crash 治理:淘宝VisionKitCore 问题修复(下)
212 0
|
设计模式 API iOS开发
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(3)
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(3)
458 0
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(3)
|
设计模式 API iOS开发
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(2)
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(2)
315 0
|
设计模式 iOS开发
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(6)
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(6)
287 0
|
7月前
|
双11 Android开发 数据安全/隐私保护
iOS Crash 治理:淘宝VisionKitCore 问题修复(上)
iOS Crash 治理:淘宝VisionKitCore 问题修复(上)
203 0
|
设计模式 iOS开发 UED
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(4)
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(4)
280 0
|
设计模式 iOS开发
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(5)
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(5)
286 0
|
29天前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
下一篇
DataWorks

相关内容推荐

优化网站内容质量排名济南专业网站优化seo公司信息流网站优化教程吴中网站优化有哪些网站代码优化重构是什么意思优化网站建设人员外贸网站优化的软件快速优化网站有哪些方法昆明专业网站seo优化北塔网站优化许昌官网网站优化代办惠州seo优化网站推广南宁网站优化价格网站优化url表格灵宝网站优化推广大同外贸网站优化佛山专业网站优化效果如何安陆网站排名优化开封企业网站排名优化新密网站搜索优化信宜网站搜索优化网站的优化快选它云速捷专业网站链接优化建议石林网站优化策划浙江网站关键字优化宜都网站优化即墨网站排名优化广州网站SEO优化工作室网站怎么一步步优化盘锦优化网站推广吉安网站优化注意事项前端网站常规优化方案介休公司网站优化苏州网站自然优化排名网站优化建议报告涿州市网站seo优化排名武威优化网站优化网站排名克制云速捷拥有沧州东光网站页面优化网站怎么优化短期选云速捷关键词优化排名网站立的火星家装设计户型优化设计网站温州网站怎样优化网站优化原则和依据光学材料网站优化余姚高端网站优化网站 优化妥当易 速达服务类网站优化日照正宗网站优化公司如何在网站中对关键词优化怎么把网站优化到国外去利用seo技术优化网站网站优化最重要的是什么如何做好学校网站优化优化网站软件辶要金手指专业网站收录和优化铜陵网站优化服务盘锦优化网站推广宿州网站建设优化商丘百度网站优化哪个公司好临汾seo网站优化百度网站什么优化排名双辽网站怎么优化长春网站优化哪家好网站如何优化引流贵港网站优化服务商网站优化专业诊断云南网站优化推广联系方式延安网站seo优化江阴百度网站优化广昌网站优化渠道知名的网站优化推广优化网站方法就连火1星惠陶瓷机械网站seo优化哪家好百度快照网站优化密度邢台网站seo优化公司洛阳网站建设网站制作网站优化长春网站优化代理盖州网站优化排名北京平价网站权重优化成功的网站优化网站优化高质量外链网站优化推广引流学网站优化是大学的什么专业网站代码简洁对优化遂宁网站优化有哪些顺德网站推广优化机械类产品网站做优化正规的网站推广优化要多少钱沧州网站优化怎么收费移动网站的搜索引擎优化方案威海网站优化方法如何优化网站的长尾关键词杭州推荐网站设计优化恩平优化网站长春优化推广网站深圳罗湖企业网站优化价格推荐网站优化欢迎咨询网站排名网站设计开发设计优化网站文章优化更新优化网站设置访问速度庐江网站首页优化上街区如何优化网站铁岭婚纱摄影网站优化的优势湖南网站优化怎么收费三河网站托管优化推广网站首页 图片优化网站代码优化细节廊坊网站优化电池充电简阳网站优化多少钱如何结合优化做网站福建省网站优化的内容公司札达县网站seo优化排名网站优化是收录还是外链重要网站优化seo毕业论文新乡市网站seo优化排名网站排名优化询问q火17星汕尾网站优化品牌贵州网站seo优化滁州网站优化排名济源网站优化排名马鞍山网站优化公司有哪几家西藏网站综合优化好的服装行业网站优化价格亳州企业网站优化方法邯郸网站制作优化电商网站优化推广威海网站优化代理商郑州百度网站优化系统威海视频网站优化公司南京优化推广网站罗湖正规网站优化软件网站优化要什么编程海城快速网站优化网站优化没流量搜索优化的培训网站平台福州台江网站优化和推广网站的标签如何优化推荐优化网站竞争优势松岗网站优化品牌怎么做一个网站优化网站优化注意事项有哪些网站关键词优化代理铁岭网站SEO优化顾问服务比较好的网站优化成功案例利用seo技术优化网站山东网站优化哪家公司好怀柔外贸网站优化推广泉山网站优化慈溪营销型网站建设优化建站新乡网站建设优化哪家专业无锡最好优化网站余姚网站seo优化你是如何理解网站优化网站优化师需要什么资料网站优化产品标签网站快速优化排名采用火14星江宁区个人网站优化四川专业网站优化质量保障seo中网站优化的要点青岛正宗网站优化服务网站优化怎么操作教程快速优化企业网站图片怎么优化网站专业的网站优化平台胥口优化网站哪家公司好金华有经验的网站推广与优化优化网站解决方案供应商郑州怎样做网站的优化 排名南漳县网站关键词优化效果如何选择域名有利于网站优化李沧快速优化网站网站权重优化团队衡水网站关键词优化排名林西网站优化怎么优化网站排名好又省钱宝安网站排名优化宝鸡网站优化seo推广服务优化网站建设的公司商丘网站排名优化多少钱网站建设优化莆盟丷云速捷优化网站颂扬云速捷选择平顶山网站自然优化哪里的好浙江电子网站优化耗材兴化网站优化稳定吗老网站优化怎么设置网站做优化立择火3星铁岭市机械行业网站优化聊城营销型网站优化公司网站外部链接优化方法的是新浪网网站优化策略孝义网站优化极简网站优化是什么南通网站优化建议柳州网站优化公如何优化网站能引起访客转化潍坊集团网站优化网站关键字优化建议公司网站seo移动端怎么优化隆化网站优化

合作伙伴

深圳SEO优化公司

龙岗网络公司
深圳网站优化
龙岗网站建设
坪山网站建设
百度标王推广
天下网标王
SEO优化按天计费
SEO按天计费系统