聊聊手机的图像处理引擎
夏昆冈 于 2014.02.25 14:46:18 | 源自:www.soomal.com | 版权:原创 | 平均/总评分:09.54/267

在《聊聊索尼1300万堆栈式感光器 》[作者:夏昆冈 ] 一文中,有不小的篇幅介绍了图像处理引擎,但似乎说得还不够,那么就继续来一发,更深入的说说这个不被人特别关注的重要部件。

先重温一个概念,图像处理引擎是软件和硬件合体后的统称,硬件即ISP,中文叫做图像处理器,软件则是算法包。

我们之前拆过一台美能达α5D数码单反和一台奥林巴斯E-PL1微型单电相机,我们可以看到主板上有大大小小的不少芯片,除去内存和存储颗粒,基本上都是与图像处理有直接关系的芯片。α5D年代早,芯片集成度也不够,主板上大块头也就多得多,到了E-PL1时代时,主芯片就剩下了一颗。这颗芯片,就是ISP。但还是很大颗。

随着工艺和设计的进步,以及用户需求的增长,主流的SoC处理器中已经集成ISP,以满足高像素带来的计算能力增长需求。

独立的ISP需求依然存在,有的手机需要更高的性能,可能会使用独立的ISP芯片,例如富士通就提供这样的芯片。ISP芯片会增大主板面积,也会增加成本,因此使用独立ISP变成了一种“奢侈”的设计,经常会被厂商拿出来单独说事。但需要强调的是,ISP本身的性能并不是决定画质的关键因素。

  • 再来看看微型单电里的ISP的主要职能,在电子取景过程中,感光器和图像处理器都在实时处理信息,这些处理包括感光器实时的输出采样,图像处理器接受采样,并进行白平衡测量、测光等工作,同时还会将设置好的机内后期以实时方式运算处理。它还管理着输入反馈,例如按钮的动作、参数的设置等等。

    虽然手机和微型单电看起来差别很大,但它们的工作方式却是非常相似的。在手机里,ISP同样负责测光、色温测量、对焦、对焦辅助、取景、色彩控制、边缘矫正、等功能,但一些UI、存储、显示方面的功能,则可能交给了CPU和GPU来完成。相比之下,手机里的ISP因为有主处理器罩着,要做得事情会少一些。

    ISP做什么,怎么做,其实是软件决定的,单反、微型单电升级固件,其实就是在更新算法,我们经常能看到更新说明中说明改善了白平衡、增加了什么对焦方式等等。例如NEX-5R的一次更新,就提升了对焦效率。硬件还是那硬件,但软件一变,结果就可能不一样。

    相机可以通过升级固件的方式来改善画质,那么手机是不是也可以这样?一般情况下,更新手机固件是不会对画质产生影响的。

    我们先看看算法的来源,来源一般有三种。

    • 自主开发
      购买ISP厂商的定制代码
      使用芯片组厂商[高通、联发科等]的开发底包中的公共代码

    自主开发的,典型代表厂商有苹果和诺基亚。iPhone在白平衡测量速度、测光速度、自动化处理上明显优于竞品,这是iPhone的优势项目。而诺基亚的Lumia 旗舰机型,综合表现尤其弱光下的表现非常出色,浓郁明快的色彩风格以及弱光下鹤立鸡群的表现,这均得益于算法优秀。

    对于有追求,但自身实力不够的,就可能倾向于购买ISP厂商的定制代码。像富士通这样的ISP厂商,给不同厂商提供ISP时,绑定的算法并不是一样,而是可以定制的。定制的好处是可以适应更多的感光器成像风格并进行调整,还可以让客户创造出有特色的色彩风格。当然,最大的好处就是按算法论价了,这个功能多少钱,那个功能多少钱,一起给你打个8折什么的,大家都嗨森。

    为了方便厂商开发,芯片厂商都会给手机厂商提供基础代码的开发底包。底包能保证系统能基本正常的运行,自然也会包含ISP部分的基础算法。不过为了成本,低端手机多数选择了底包中的公共代码。

    我们再来看看算法一般保存在哪儿。

    以Android为例,通常的情况会以驱动库方式直接编译到系统核心,而Android的相机开发是C/S结构,客户端软件通过CameraService这个服务层与摄像头通讯。由于Android是一个开源的系统,那么算法也有可能被放到了修改过的CameraService或者干脆在中间再设计一个中间层。Camera FV5用户可能会发现,在不同的手机上,这款软件的表现也是不一样的,有的功能全都支持,有的仅支持很少的部分,API支持情况并不统一,这有可能就是服务层或者中间层被修改过的原因。

    Windows Phone 也有类似的情况,WP本身提供了摄像头底层驱动和参数控制,但诺基亚并不满意,在Lumia手机中加入了一个新的底层来提供更多的功能,这个底层叫做Nokia Imaging。诺基亚提供了Imaging SDK,供开发者使用,基于Imaging开发的拍摄软件,可以实现更自由的控制以及更多的功能,例如滤镜等。但基于Imaging SDK开发的APP无法用于非Lumia手机。诺基亚更新Imaging就可能改变画质,实际上诺基亚已经这么干了。

    iOS的情况最为简单,一是机型单一,二是iOS提供的API很少,所以iOS上很难出现控制功能很强大的拍摄软件,而多是以后期或实时滤镜为主的类型。由于缺乏底层的支持,那么很多特别的实时滤镜以及后期效果,则是通过通用处理器完成,即SoC中的ARM处理器完成。这种情况下,ARM实际上是在做ISP的事情。这类软件不仅仅只存在于iOS平台,Android和WP上也是如此,很多滤镜类的拍摄软件,并不依赖于ISP工作,而依赖于通用处理器。滤镜不取决于底层,自由度也就最大,但代价就是效率较低,或者比较费电。

    那么不同的拍照软件是不是会导致画质的不同?不管是哪个操作系统,摄像头拍摄到成像的基本流程都是一样的,打包到系统底层或者中间层的算法才是最关键的因素,这其实是拍摄软件无法改变的。但处于流程末端的APP可以提供丰富的控制,让拍摄可能变得更加自由和有灵活度,加入实时滤镜和机内后期,会让拍摄的乐趣大增,所以,找一个顺手的APP也是有意义的。

    通过这番介绍,你会发现越来越混乱,哈。那么我们简单梳理一下观点再收工:

    • 主流的SoC处理器已经集成ISP
      独立ISP的意义是更快的处理速度
      摄像头硬件相当的情况下,决定画质的是算法
      实际拍摄过程中,SoC的ARM也会参与运算和管理
      图像处理引擎是硬件加软件的合体
      升级系统固件不一定改变手机摄像头画质,而要看相关层是否更新
      找一个顺手的拍照APP是有意义的
      不要太过在意独立ISP,这不是关键
    请评分
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    03
    发表于2014.03.03 18:08:00
    60
    112.091.070.***
    112.091.070.***
    发表于2014.02.27 23:15:20
    57
    10
    洋品牌赚得多,舍得花,人家的内部标准也高一些,就是这样的区别
    发表于2014.02.26 23:42:26
    55
    03
    发表于2014.02.26 23:19:02
    54
    03
    难道手机商中只有苹果和诺基亚(骚尼呢?)有可能会在固件升级中优化驱动以提升画质?国产手机中没有厂商能干这种事,没有一家选择自行开发算法?假如不说自行开发的话,同样是定制,是价钱的问题还是别的问题导致魅族没有三星定制得好?诺基亚和苹果的算法团队是怎样建立起来的,国产的有这方面的努力吗?
    发表于2014.02.26 22:37:58
    53
    115.048.214.***
    115.048.214.***
    发表于2014.02.26 19:38:38
    52
    101.086.221.***
    101.086.221.***
    发表于2014.02.26 16:21:48
    51
    136.000.***.***
    136.000.***.***
    知道什么是C/S结构吗?就在这胡扯?
    发表于2014.02.26 14:20:34
    49
    221.007.151.***
    221.007.151.***
    发表于2014.02.26 13:22:34
    48
    03
    发表于2014.02.26 12:08:33
    47
    202.102.188.***
    202.102.188.***
    发表于2014.02.26 10:48:34
    46
    221.225.210.***
    221.225.210.***
    发表于2014.02.26 10:06:11
    45
    222.088.240.***
    222.088.240.***
    发表于2014.02.26 08:34:04
    44
    03
    有机会测试一下适马的X3 系列呗!,最近被他的色彩迷住了!
    发表于2014.02.26 08:09:42
    42
    03
    感觉情况会变?以后情况有变的时候请更新文章?
    发表于2014.02.26 00:28:09
    41
    提示
    本贴不可匿名回复,回复等级为:1 ,您现在正处在潜水状态
    回复
    验证码
    1815 为防止广告机贴垃圾,不得已而为之
    表情
    正文