用于捕获图像的故事板的制作方法

文档序号:7794312阅读:163来源:国知局
用于捕获图像的故事板的制作方法
【专利摘要】这里所公开的是用于在控制用以捕获图像、照片或者视频的相机中使用故事板的工具和技术的代表性实施例。按照一种示范性技术,存储至少两个故事板(200)。附加地,从相机应用中接收至少一个故事板标识符。而且使用故事板标识符来检索所存储的至少两个故事板中的某个故事板(200)。所检索的故事板包括用于控制相机的控制帧(250)序列。附加地,至少通过使用所检索的故事板控制相机而捕获图像帧的序列。
【专利说明】用于捕获图像的故事板

【背景技术】
[0001]由于现今世界中数字摄影的普及度已经增长,各种设备被适配成并入用于捕获数字照片的数字相机。一些传统的数字摄影解决方案允许用户通过按下快门按钮来向相机发出捕获照片的信号以捕获静止的照片。而且,一些解决方案通过允许用户重复按下快门按钮来捕获照片,而允许连续照片的捕获。在这些传统的解决方案中,对数字摄影中的较快和较复杂功能性的允许受到限制,这部分地是由于对把用于拍摄照片的信息发送给相机的速度要求而导致。


【发明内容】

[0002]除了本文所描述的别的创新之外,本公开内容尤其提出了用于在控制用以捕获图像、照片或者视频的相机中使用故事板(storyboard)的工具和技术的各种代表实施例。
[0003]在一个实施例中,应用可以组成一组故事板控制帧,其可以在接收命令来执行故事板之前、在初始化时段期间被相机驱动器传递并存储。利用该结构,应用可以构建对于将要被相机驱动器自动捕获的多重快照(multishot)或者图像流的全面成像控制。可以使用故事板标识符来标识故事板。对于拍摄多重快照而言,应用可以将故事板标识符传递给驱动器,驱动器然后可以使用该标识符来访问故事板并且启动与故事板相关联的多重快照。故事板可以包括自适应控制,其可以动态地修改图像序列怎样被捕获。例如,循环、有条件的延迟和定制的净荷是可以实现的动态控制的示例。
[0004]按照另一个示范性技术,存储至少两个故事板。附加地,接收来自相机应用的至少一个故事板标识符。而且使用故事板标识符来检索所存储的至少两个故事板中的某个故事板。所检索的故事板包括用于控制相机的控制帧序列。附加地,可以至少通过使用所检索的故事板控制相机而捕获图像帧序列。例如,故事板可以由设备驱动器执行来至少控制相机去捕获图像序列。
[0005]在本文描述的另一个示范性技术中,将至少一个故事板从应用发送到设备驱动器。附加地,使用设备驱动器来将所述至少一个故事板高速缓存。而且,在设备驱动器上接收来自应用的对于执行至少一个故事板的请求。附加地,使用设备驱动器来至少通过执行至少一个故事板的至少一个控制帧而捕获多个图像帧。
[0006]本概要被提供来以简化的形式介绍概念的选择,这些概念还将在下面被进一步描述。本概要既不打算标识所要求保护的主题的关键特征或者必要特征,也不打算用来限制所要求保护的主题的范围。从下文参考附图进行的详细描述中,这些技术的前述的和其它的目的、特征和优点将变得更加明显。

【专利附图】

【附图说明】
[0007]图1是控制相机来捕获一个或者多个图像的示范性方法的流程图。
[0008]图2是示范性故事板的示意图。
[0009]图3是用于捕获一个或者多个图像的示范性计算设备的示意图。
[0010]图4是使用故事板的至少一个控制帧来捕获图像帧的示范性方法的流程图。
[0011]图5是用于使用故事板来捕获图像的示范性计算设备的示意图。
[0012]图6是图示故事板的执行的示范性实现的图。
[0013]图7是故事板净荷(payload)的示范性实现。
[0014]图8是图示可以用来实现任何所公开的实施例的示范性移动设备的示意图。
[0015]图9是图示用于任何所公开的实施例的适当实现环境的一般化示例的示意图。
[0016]图10是图示用于任何所公开的实施例的适当计算环境的一般化示例的示意图。

【具体实施方式】
_7] 控制相机来捕获图像序列的示范性方法
图1是控制相机来按顺序捕获一个或者多个图像的示范性方法100的流程图。在图1中,在110,存储至少两个故事板。例如,从一个或者多个应用中发送的两个或者更多个故事板可以由设备驱动器接收,并且故事板可以由设备驱动器高速缓存或者以其它方式存储在存储器中供以后使用。也就是说,在初始化阶段期间,应用可以向设备驱动器发送故事板,其包括用来在设备驱动器开始使用故事板捕获图像之前控制相机的指令。在初始化阶段完成后,在捕获阶段,在120,接收来自应用的至少一个故事板标识符。例如,在设备上运行的应用可以发送诸如GUID的标识符,或者标识由设备驱动器存储的故事板的其它标识符,且该标识符可以由设备上的设备驱动器接收。在130,使用故事板标识符来检索所存储的至少两个故事板中的某个故事板。例如,通过使用故事板标识符,设备驱动器可以检索、选择或者执行在设备驱动器的高速缓存器中存储的故事板。在140,通过使用所检索的故事板来控制相机而捕获图像的序列。例如,设备驱动器可以至少执行在所检索的故事板中的指令,从而控制相机按顺序捕获一个或者多个图像(例如,图像序列)。在一些实现中,通过执行故事板,设备驱动器可以使一个或者多个图像帧的捕获与故事板的一个或者多个控制帧中的一个或者多个指令的自动施加同步。而且,图像数据可以由执行故事板的设备驱动器所捕获,并且可以由设备驱动器在一个或者多个故事板净荷中将所述图像数据提供给应用。
_8] 故事板的示范性实现
图2是示范性故事板200的示意图。诸如故事板200那样的故事板可以由计算设备的应用生成或者使用来指导(instruct)设备驱动器去自动设定用于图像捕获的相机设置或者控制,诸如用于单个图像快照、多个图像快照、或者可以由相机捕获的图像的流。例如,可以由故事板或者计算设备的应用使用一个或者多个指令、命令或者请求来指导在计算设备中运行的设备驱动器,所述指令、命令或者请求使用一个或者多个应用编程接口实现。故事板可以实现各种图像捕获模式。在一些实现中,应用或者计算设备的静止捕获、预览和/或视频模式可以使用故事板来实现。在一些实现中,相机应用可以生成具有控制帧的故事板,当控制帧被执行时,其控制相机捕获图像从而实现图像捕获模式。例如,图像捕获模式可以包括高动态范围(HDR)模式、突发(burst)模式、时移模式、零快门滞后(ZSL)模式和/或用于捕获图像的其它模式。在一个实现中,实现突发模式可以使得相机捕获连续静止图像帧的突发。例如,突发模式可以捕获一连串图像帧,其中在每个图像帧捕获时间的相机设置或者控制通过由设备驱动器执行的故事板来驱动,以捕获连续静止图像帧。
[0019]故事板200可以包括一个或者多个控制帧,诸如控制帧210。例如,故事板200可以是多组指令的阵列,其中相应组的指令被包括在相应的控制帧中。在一些实现中,故事板的控制帧可以按顺序排序。控制帧210可以包括要按次序执行的一组指令。被包括在控制帧210中的指令可以包括一个或者多个用于控制故事板的执行的控制指令和一个或者多个相机指令,所述控制指令是诸如控制指令220,所述相机指令是诸如用于控制相机的一个或者多个设置、控制、参数、操作或者功能性的相机指令230。控制指令220可以使得设备驱动器修改用以执行控制帧的次序或者时序。而且,在一些实现中,故事板中的控制指令可以使得不同的故事板得以执行。在控制帧执行的一些实现中,在控制帧中的指令的施加的优先权可以基于指令被包括进控制帧中的次序。例如,在一些实现中,按指令次序被设备驱动器最后执行和/或解析的指令可以优先于(take precedence over)较早被执行或者解析的指令。在一些实现中,一个指令可以优先于另一个指令,以使得取得优先权的指令被施加来控制相机或者故事板的执行,而不管由在先执行的指令所设定的一个或者多个控制、设置、参数或者功能性。例如,控制帧可以包括按这样的次序的指令,即:使得所设定的帧速率由帧速率指令来维护,帧速率优先于由该控制帧的较早执行的指令所设定的快门速度。而且,例如,控制帧可以包括按这样的次序的指令,即:使得所设定的快门速度由快门速度指令来维护,快门速度优先于由控制帧的较早执行的指令所设定的帧速率。在一些实现中,故事板可以在每图像帧(per-1mage-frame)的基础上,将相应的控制帧的指令施加到相机。例如,通过由设备驱动器把相应的控制帧的指令自动地施加到相机用于相应的图像捕获,可以为相应的图像捕获而自动地修改或者控制该相机的设置或者控制。而且,例如在一些实现中,对于由相机捕获的个别图像,相机可以由设备驱动器施加故事板的个别控制帧的指令来控制。在一些实现中,一个控制帧的指令的施加可以持续,并且在随后的控制帧的执行期间被施加或者持续下去。
[0020]参考图2,故事板200可以由独特的标识符来标识和/或与之相关联,独特的标识符是诸如故事板标识符240。故事板标识符240可以是诸如GUID、UUID的独特的标识符,或者其它独特的标识符。故事板标识符240被包括在故事板200中。在一些实现中,当应用创建故事板时,由应用生成故事板标识符并且将其包括在故事板中。之后,故事板标识符可以被应用使用来标识故事板。例如,应用可以发送用于由设备驱动器所存储的故事板的故事板标识符,从而请求该故事板的执行。
[0021]故事板200可以包括作为头控制帧(诸如头控制帧250)的控制帧。头控制帧可以是故事板的控制帧序列中的第一个控制帧。头控制帧250包括独特地标识故事板的故事板标识符240。故事板标识符可以与故事板类型相关联或者被指派给某个故事板类型,故事板类型指示故事板被设计用来实现的图像捕获模式。头控制帧250可以包含头结构260,其对被包括在故事板中的二进制数据进行映射。头控制帧250可以包括一个或者多个全局指令,诸如全局指令270。
[0022]当故事板的一个或者多个控制帧由设备驱动器执行时,可以将全局指令270施加于所述一个或者多个控制帧。例如,当执行故事板中的每个控制帧时,可以将全局指令270施加于所述每个控制帧。在一些实现中,全局指令可以包括图像统计指令,其包括标记以使得图像统计能够与所捕获的图像帧数据一同返回。附加地,在一些实现中,全局指令可以包括元数据图像格式指令,元数据图像格式指令可以由设备驱动器施加,使得对于所捕获的图像帧,随同由相机捕获的、采用一种或者多种其它格式的图像帧一起,设备驱动器接收采用原始格式的图像帧的实例作为元数据。在一些实现中,全局指令被一致地施加于故事板的一个或者多个控制帧,并且可以影响设备驱动器的、对于故事板的一个或者多个控制帧的执行。例如,在图像统计指令值使能图像统计的情况下,可以对于使用故事板所捕获的每个图像帧返回图像统计,并且可以在故事板的执行之后将图像统计返回给应用。在一些实现中,全局指令可以包括在故事板执行期间使得该指令能由设备驱动器施加的值或者禁止该指令由设备驱动器施加的值。
[0023]在图2中,故事板200包括控制帧280。诸如控制帧280这样的控制帧可以包括一组用于设备驱动器的指令,以施加于图像帧的捕获。控制帧280可以包括一个或者多个控制指令,诸如延迟指令282、循环控制指令284、循环条件指令286或者循环指令288。控制指令可以用来引导由设备驱动器对一个或者多个故事板的执行。在一些实现中,在故事板的执行期间,设备驱动器可以施加连续的控制帧来控制相机以便捕获图像帧,而不需要来自提供故事板的应用的另外的命令。在一些实现中,可以由设备驱动器使用尽力(besteffort)施加来施加控制帧280的指令,或者设备驱动器可以等待执行另外的指令或者控制帧,直到一个或者多个在前执行的指令被施加和完成为止。
[0024]故事板的控制指令可以包括开始条件指令。例如,开始条件指令可以指导设备驱动器延迟故事板的执行的开始,直到在前的相机控制、指令和/或操作的一些或者全部得以完成和/或施加为止。在一些实现中,被包括在故事板中的开始条件指令在故事板已经开始执行之后是不可施加的。
[0025]在执行故事板的一些实现中,当故事板正在执行时,可以暂停或者忽略来自一个或者多个应用的异步事件,特别是与ISP控制有关的事件。在一些实现中,在来自应用的对于执行新故事板的执行请求可被设备驱动器确认之前,设备驱动器可以取消或者停止故事板的执行。用户可以检查最终得到的由故事板返回的图像统计,从而确定对曾运行的每个控制帧实际上施加了什么。在执行的故事板的一些实现中,一般的故事板差错可以在故事板执行期间被发送。在一些实现中,在故事板正在执行时,故事板指令的一个或者多个不能被改变和/或故事板指令的一个或者多个可以被改变。
[0026]使用图2中所示出的指令,允许在没有来自应用的另外的输入的情况下,按照故事板由设备驱动器进行对图像的序列(或者其控制参数)的动态修改。
[0027]用于捕获图像的示范性系统
图3是用于捕获一个或者多个图像的示范性计算设备300的示意图。在图3中,计算设备300包括设备驱动器310。设备驱动器可以存储并且可以执行一个或者多个故事板330。例如,设备驱动器可以在设备驱动器的高速缓存器或者内存存储中存储一个或者多个故事板。在存储了一个或者多个故事板330之后,设备驱动器310可以检索该一个或者多个故事板330中的某个故事板以供执行。计算设备300可以包括一个或者多个应用320。一个或者多个应用320可以生成和/或提供一个或者多个故事板以便实现一个或者多个图像捕获模式或者以便通过控制相机而捕获图像。例如,在图像捕获期间,可以用设备驱动器来控制相机,设备驱动器可以自动执行来自故事板的指令,而不需要使用从应用发送的另外的指令或者控制。一个或者多个应用可以将一个或者多个故事板330中的一个或者多个发送到设备驱动器310,设备驱动器310可以接收和存储该一个或者多个故事板330。
[0028]一个或者多个故事板330可以包括一个或者多个控制帧340。一个或者多个控制帧340可以包括一个或者多个指令,诸如控制指令342和/或相机指令348。相机指令348可以由设备驱动器310施加来设定一个或者多个参数或者设置,或者执行一个或者多个相机360的一个或者多个功能性或者操作。例如,可以执行相机指令348并施加其来设定一个或者多个设置和/或使得执行相机或者被包括在相机中的设备的一个或者多个功能性。通过将指令包括在故事板的控制帧中,应用或者用户可以可选地设定、使用、使能、禁止或者锁定相机的一个或者多个设置、功能性或者操作。例如,被包括在故事板的控制帧中的指令可以使能、禁止或者锁定相机的各种自动的功能性或者操作,诸如曝光、白平衡操作、对焦、缩放等等。一个或者多个相机360可以诸如通过捕获一个或者多个图像序列350而生成图像数据。例如,一个或者多个图像序列350可以包括由相机捕获的图像帧的序列。在一些实现中,图像数据可以包括图像统计和/或相关联的上下文信息以及相应的所捕获的图像帧,诸如照片。例如,设备驱动器310可以使照片的捕获与来自包括该设备驱动器的计算设备的一个或者多个其它设备或者组件的附加上下文信息同步。在一些实现中,计算设备的设备驱动器可以与图像的捕获同时地收集上下文信息,诸如全球定位系统(GPS)数据、来自加速计的加速信息和从计算设备可得到的其它信息。上下文信息可以与图像相关联,并且可以作为元数据而被包括在与由设备驱动器生成并返回的图像的图像帧相关联的净荷中。上下文信息可被一个或者多个图像处理器或者一个或者多个应用用来在图像数据被设备驱动器返回后对其进行处理。在一些实现中,当统计信息和/或上下文信息被应用或者设备驱动器接收到时,它们可以被使用来更改故事板的指令或者指令值或者故事板的执行。
[0029]在图3中,一个或者多个相机360可以发送图像数据,图像数据可以被设备驱动器310接收。例如,在故事板的执行期间,一个或者多个相机360可以将一个或者多个图像序列中的一个或者多个图像发送到设备驱动器310。一个或者多个相机360中的某个相机可以捕获图像、图像数据和/或图像帧。例如,图像帧可以是由相机捕获的数字照片或者图像数据。而且,一个或者多个相机360可以将图像随同用于相应图像的相关联的图像统计一起发送。一个或者多个相机360中的某个相机可以包括一个或者多个相机设备,诸如传感器、图像信号处理器(ISP)、闪光灯、镜头或者在捕获图像时使用的其它相机设备。附加地,如在图3中所示出的,计算设备300包括一个或者多个处理器370和计算机可读介质380。本文描述的循环和其它指令可以响应于由相机360提供的参数而动态地修改指令序列或者执行。
[0030]至少使用控制帧捕获图像帧的示范性方法
图4是至少通过使用至少一个故事板的至少一个控制帧而捕获图像帧的示范性方法400的流程图。在图4中,在410,把至少一个故事板从应用发送到设备驱动器。在420,使用设备驱动器来高速缓存至少一个故事板。例如,至少一个故事板可以包括用于控制相机的控制帧序列。例如,控制帧可以包括一个或者多个控制指令和/或一个或者多个相机指令,其可以由设备驱动器执行来控制相机。在430,在设备驱动器处接收来自应用的对于执行至少一个故事板的请求。在440,使用设备驱动器,至少通过执行至少一个故事板的至少一个控制帧而捕获多个图像帧。
[0031]用于使用故事板捕获图像的示范性系统
图5是用于使用故事板捕获图像的示范性计算设备500。如在图5中所示出的,计算设备500包括一个或者多个应用,诸如应用505。应用505可以是程序、软件、移动应用或者其它可以在计算设备500中运行的应用。例如,应用505可以是相机应用,其允许由计算设备500的相机540所捕获的照片、图像或者视频的观看、捕获、处理或者显示。应用505可以在计算设备500的操作系统中运行。如图5中所示出的,应用505包括一个或者多个故事板,诸如故事板510。应用505包括故事板生成模块508,其可以被使用来生成或者修改故事板。例如,应用505的应用生成模块508可以由用户通过用户界面访问,并且用户可以使用用户界面来构建或者生成故事板,诸如实现图像捕获模式的故事板。在一些实现中,用户界面可以为用户提供一个或者多个可用的相机参数、设置、功能性、操作或者其组合,以用于在生成定制的故事板时针对一个或者多个控制帧设定。而且,故事板生成模块508可以允许全局指令的设置和控制指令的使用,从而构建可以实现各种图像捕获模式的各种类型的故事板或者定制的故事板。在一些实现中,一个或者多个故事板可以被包括在应用中,以使得它们被预先配置,以便故事板可以被用来实现可为应用选定的可用的图像捕获模式。同样,通过提供或者生成故事板,应用可以规定一连串的控制帧,以用于施加不同的相机控制和/或相机配置来捕获相应的图像帧或者视频和相关联的数据。
[0032]参考图5,应用505将故事板510发送给设备驱动器515,如在520所示出的。设备驱动器515将故事板510存储在设备驱动器515的内存存储(诸如内部高速缓存器525)中。高速缓存器525可以存储一个或者多个故事板,诸如故事板510和故事板530。在一些实现中,存储在高速缓存器525中的故事板可以由设备驱动器515读取和施加来实现一种或者多种相机模式,包括预览模式、静止模式、视频模式或者其它相机模式。例如,静止模式可以捕获静止图像,而视频模式可以捕获用于视频的图像。当设备驱动器存储故事板时,月艮务层或者应用可以向设备驱动器查询所存储的故事板的资源估计。在一个实现中,设备驱动器可以至少部分地通过解析故事板的头和/或帧而生成资源估计。在一个实现中,资源估计可以以若干字节进行表达。
[0033]附加地,应用505可以发送对于执行故事板510的执行请求535,故事板510可以由设备驱动器515接收。在一些实现中,在对于执行故事板的请求被发送之前、随同其的发送一起、或在其被发送之后,存储器资源(例如,驱动器捕获缓冲器)可以被发送给设备驱动器以用来存储在故事板的执行期间所捕获的数据,诸如图像数据和相关联的元数据或者图像统计。在一些实现中,应用可以通过使用设定现行(active)请求而将所标识的故事板设定为现行的故事板,所述设定现行请求包括标识要被设定为现行的故事板的故事板标识符。当接收到执行请求时,可以执行作为现行故事板的故事板。如在570所示出的,当对于执行故事板的执行请求535被发送给设备驱动器时,可以设立一个或者多个图像处理器以用来处理图像数据,图像数据可以在执行请求中所标识的故事板的执行之后被返回。
[0034]在一些实现中,执行请求可以是触发请求。例如,触发请求可以包括开始值,其触发设备驱动器中故事板的开始。触发请求可以从应用发送给设备驱动器。在一些实现中,触发请求可以包括可使故事板的执行开始、停止或者被取消的值。而且,触发请求可以包括停止循环值,其可以使故事板的控制帧序列执行的循环停止继续进行。当接收到包括取消值的触发请求时,设备驱动器可以停止故事板的执行,并且可以返回到预先确定的或者默认的状态,诸如设备驱动器在所取消的故事板的开始执行之前所处的状态。在一些实现中,当通过触发请求而取消故事板的执行时,在故事板执行期间所捕获的图像数据或者故事板净荷在取消故事板执行之后并不通过设备驱动器而返回给应用。当接收到包括停止循环值的触发请求时,设备驱动器可以取消循环执行,结束当前执行的控制帧的执行,然后从包括发起该循环的循环指令的那个控制帧之后的控制帧继续执行故事板。当设备驱动器接收到包括停止循环值的触发请求时,如果在包括发起该循环的循环指令的那个控制帧之后没有控制帧,那么设备驱动器可以终止故事板的执行。当设备驱动器接收到包括停止值的触发请求时,设备驱动器可以终止当前执行的帧,并且返回使用该故事板而生成的故事板净荷。附加地,当接收到包括开始值的触发请求时,设备驱动器可以开始执行由故事板标识符所标识的故事板。例如,可以起动应用并且该应用可以将所标识的故事板发送给设备驱动器,并且当按下设备的快门按钮时,可以将触发请求发送给设备驱动器以开始所标识的故事板的执行。
[0035]参考图5,响应于执行请求535,设备驱动器515执行故事板510。例如,当设备驱动器接收到执行请求时,设备驱动器开始故事板的执行。在一些实现中,可以预先选择故事板510并准备好用于执行。在其它的实现中,故事板510可以通过被包括在执行请求中的故事板标识符来标识,并且故事板可以基于故事板标识符来选择和检索。在故事板510的执行中,设备驱动器515可以执行被包括在故事板510中的控制帧512的一个或者多个。在故事板510的执行期间,设备驱动器可以控制一个或者多个相机,诸如相机540。控制相机540可以包括设定相机540的一个或者多个相机设备的一个或者多个参数或者设置,和/或使得相机540的一个或者多个功能性得以执行。相机540可以捕获诸如一个或者多个图像的图像数据,并且可以将图像数据发送给设备驱动器515,如在548所示出的。而且,在故事板510的执行期间,故事板510的一个或者多个控制指令可以控制控制帧512中的一个或者多个控制帧的执行的时序和/或次序。可以执行控制帧512中的相应控制帧从而捕获相应的图像帧,所述图像帧可以由设备驱动器515接收并存储在内存存储中。例如,在故事板510正执行时,设备驱动器515自动使图像帧捕获与对设定相机设置的控制帧的指令的施加同步。在故事板510的执行期间,设备驱动器515所进行的同步可以不需要来自应用505的另外的用于控制相机540的指令、信息或者命令而进行。设备驱动器515可以存储所接收的图像数据,诸如图像数据552和554。在一些实现中,如果故事板指导设备驱动器将图像统计与图像帧一起返回,则设备驱动器可以添加接收自相机的、用于在故事板执行期间所捕获的一个或者多个图像帧的图像统计。如在图5中所示出的,使用所接收的图像数据,设备驱动器515可以生成一个或者多个故事板净荷,诸如故事板净荷550。
[0036]故事板净荷550包括图像数据,诸如图像数据552和图像数据554。在故事板510已经完成执行后,设备驱动器515可以将用于故事板的数据返回,所述数据诸如是存储在预先分配的存储器中的图像帧。也就是说,设备驱动器515可以将所捕获的图像数据和相关联的元数据和/或图像统计发送给应用505,如在556所示出的。例如,设备驱动器515可以将故事板净荷550发送给应用505。如在558所示出的,设备驱动器可以将所捕获的图像数据和相关联的元数据和/或图像统计发送给图像处理模块560,其可以使用一个或者多个图像处理器(诸如图像处理器565)处理图像数据。例如,设备驱动器可以将故事板净荷550发送给图像处理模块560,其可以使用图像处理器565来过滤故事板净荷的图像数据。在一些实现中,被包括在故事板净荷中的、对于图像帧的图像统计可以由图像处理器或者过滤器使用来增强图像处理或者过滤。如在570所示出的,应用505可以将信息发送给图像处理模块560,从而对一个或者多个图像处理器进行组织或者配置来处理为了所标识的故事板而捕获的图像数据。在图像数据由图像处理模块处理之后,图像处理模块560可以将诸如故事板净荷550那样的图像数据发送到应用505,如在575所示出的。
[0037]故事板执行的示范性实现
图6是图示通过设备驱动器605执行故事板600和故事板680的示范性实现。在图6中,设备驱动器605通过读取和施加头控制帧610的指令而开始故事板600的执行。头控制帧610包括故事板标识符615、图像统计指令620和元数据图像格式指令625。故事板标识符615独特地标识故事板600。设备驱动器605可以包括故事板标识符615及所捕获的数据,从而将所捕获的数据与故事板600相关联。
[0038]控制帧610包括图像统计指令620。图像统计指令620可以包括标识一组图像统计的一个或者多个值,图像统计由设备驱动器为在执行故事板的同时所捕获的相应图像帧而捕获。在一些实现中,图像统计包括直方图、ISP控制、曝光数据、传感器增益信息、或者从相机中可得到的其它图像统计。在一些实现中,可以通过设定图像统计指令的一个或者多个值而选择要由设备驱动器收集和返回的一组用于故事板的图像统计。图像统计指令620可以是全局指令,并且可以施加到为故事板600的每个控制帧所捕获的数据。在其它实现中,图像统计指令可以施加到故事板的一个或者多个控制帧。在一些实现中,用于图像统计指令的值可以包括图像数据值、相机元数据值、相机应用的参数值、相机所有参数值、用于可交换图像文件格式(Exif)数据的值、和/或其它值。图像数据值可以指示:来自设备驱动器的故事板净荷包含图像缓冲物。相机元数据值可以指导设备驱动器把ISP元数据与利用故事板所捕获的图像帧一起返回。例如,ISP元数据可以包括指示照片像素强度分布的直方图,并且直方图可以随照片数据一起被包括在故事板净荷中。相机应用的参数值可以指导设备驱动器返回相机设置和/或参数的值,其通过执行用于捕获相关联的图像帧的控制帧而被施加到相机。相机所有参数值可以指导设备驱动器返回用于捕获图像帧的相机设置和/或参数的一些或者所有值。Exif数据值可以指导设备驱动器在返回图像帧时把用于所捕获图像帧的可交换图像文件格式(Exif)数据与所述图像帧一起包括进来。例如,用于图像帧的Exif数据可以在具有图像帧的故事板净荷中被返回到应用。
[0039]故事板600包括元数据图像格式指令625。在一些实现中,通过使用故事板中的元数据图像格式指令,应用可以选择或者可选地请求采用来自以不同处理级别生成的一种或者多种格式中的某种格式的图像帧(例如,来自ISP的图像帧输出)。在一些实现中,元数据图像格式指令包括指示一种或者多种图像格式的一个或者多个值,图像帧将以所述图像格式被包括在由设备驱动器针对所执行的故事板返回的元数据中。例如,按照元数据图像格式指令而格式化的图像帧可以在故事板净荷中与以预定或者协商的图像数据类型或者格式(例如,NV12或者其它格式)进行格式化的图像帧一起被返回。在一些实现中,元数据图像格式指令的值可以指示预先去马赛克的(demosaiced)原始格式、理想化的预先去马赛克的原始格式、去马赛克格式或者其它格式。经预先去马赛克的原始格式化的图像帧包括采用原始拜尔(Bayer)格式或者相机传感器的本机格式的图像帧。经理想化的预先去马赛克的原始格式化的图像帧包括已经由相机的ISP处理但是采用预先去马赛克格式的图像帧。在一些实现中,作为元数据而被包括的原始格式化的图像帧的格式和内容可以按由相机的能力所提供的那样被格式化。
[0040]在图6中,在执行头控制帧610后,设备驱动器605通过读取和施加控制帧630的指令而继续故事板600的执行。控制帧630包括相机指令632,其被执行来使得设备驱动器605设定由设备驱动器605所控制的相机的曝光值。而且,执行相机指令634以使得设备驱动器控制相机来执行自动使相机对焦的自动对焦操作。附加地,执行相机指令636以使得设备驱动器605控制相机来执行自动为相机调整白平衡的自动白平衡操作。进一步地,设备驱动器605执行延迟条件指令638并且延迟控制帧650的执行,直到通过相机指令634开始的自动对焦操作完成为止。如在640所示出的,控制帧630的执行使得相机捕获图像帧并且生成所捕获的数据642,其包括用于采用一种或者多种格式的图像帧的图像帧数据644和用于所捕获的图像帧的图像帧统计646。
[0041]在控制帧630的执行完成且延迟条件638的延迟条件得以满足之后,设备驱动器执行控制帧650。如在652所示出的,控制帧650的执行使得相机捕获图像帧并且生成所捕获的数据654,其包括用于采用一种或者多种格式的图像帧的图像帧数据656和用于所捕获的图像帧的图像帧统计658。控制帧650包括循环指令660,其包括使得设备驱动器605执行一次控制帧630和650序列的值,如在674所示出的。循环控制指令662向设备驱动器指示将从控制帧650往回循环I帧,从而施加循环指令660并且在控制帧630处开始循环。如在664所示出的,控制帧630在循环中的执行使得相机生成所捕获的数据668,而控制帧650在循环中的执行使得相机生成所捕获的数据670,如在672所示出的。在故事板600的循环被执行一次后,通过控制指令676指导设备驱动器把结束故事板600的执行和开始故事板680的执行的执行级联,如在682所示出的。控制指令676指导设备驱动器修改设备驱动器的执行,并且如在684所示出的,故事板680的执行生成图像数据,诸如所捕获的数据690。在一些实现中,控制指令可以指导设备驱动器基于条件自动修改设备驱动器的执行。例如,如果延迟条件不能锁定或者不被满足,诸如如果相机的对焦操作由于低照度而不能完成,则延迟指令可以使得设备驱动器停止执行被设计用于在良好光照条件下捕获图像的故事板并且开始执行被设计用于在低照度条件下捕获图像的故事板。在一些实现中,控制指令可以使得设备驱动器修改当前所执行的故事板的执行。例如,控制指令可以使得设备驱动器在执行某个控制帧之前跳过一个或者多个控制帧,或者接下来执行在控制帧序列中领先若干控制帧的某个控制帧。在一些实现中,控制指令可以使得设备驱动器对在故事板之间的执行进行级联,以使得故事板可以被自动地组合执行,而不需要来自应用的引导。而且,控制指令可以使得执行实现图像捕获模式的不同故事板。例如,第一故事板可以指导设备驱动器转到运动模式,并且设备驱动器可以开始执行被设计成捕获来自运动事件的图像的故事板。
_2]用于控制帧的循环执行的示范性指令
在本文的任何示例中,故事板可以包括一个或者多个控制指令,诸如一个或者多个循环指令。例如,循环指令可以使得设备驱动器一次或者多次地重复故事板中一连串连续的控制帧的执行。循环指令可以使得设备驱动器修改执行控制帧的次序或者修改控制帧内指令的次序。在故事板内的循环的执行期间,设备驱动器执行以所指示的控制帧开始并且以包括循环指令的控制帧结束的故事板的一部分。在一些实现中,循环指令可以将故事板的执行引导到在循环控制指令中所指示的控制帧。例如,循环指令可以通过将故事板的执行引导为从具有该循环指令的控制帧返回以便接下来执行在循环控制指令中所指示的在前控制帧,从而指导设备驱动器对控制帧的执行进行循环。然后,设备驱动器可以从所指示的在前控制帧继续执行故事板,直到其再次到达包括该循环指令的那个控制帧。循环指令可以连续使设备驱动器对一连串控制帧的执行进行循环,直到循环停止、直到到达循环计数、或者满足一个或者多个条件,诸如在循环条件指令中所指示的一个或多个条件或者是其它条件。也就是说,故事板的控制帧的一个或者多个序列可以重复一次、多于一次、或者连续不断地重复直到停止。故事板的循环指令可以被包括在故事板的任何控制帧中。在一些实现中,循环指令可以是在控制帧的执行中所执行的最后的指令。在其它实现中,循环指令是在控制帧的其它指令之前或者之后执行。在一些实现中,循环指令可以被使用来实现零快门滞后(ZSL)模式,其导致在故事板中的一个或者多个控制帧之间的连续不断的循环,直到触发相片或者图像帧的捕获为止。例如,ZSL模式可以先于触发(诸如由触发请求所导致的触发)而从流动的(running)场景中捕获静止图像。而且,循环指令可以用在实现这样的模式的故事板中,即该模式使用零快门滞后捕获一连串图像,之后跟随有突发。例如,故事板可以包括指令,其执行以实现ZSL模式,然后在图像捕获被触发之后,故事板的进一步执行自动地执行以捕获突发中的一连串连续图像。当执行具有循环的故事板时,在整个故事板已经完成执行之后,所捕获的图像数据可以在一个或者多个故事板净荷中从设备驱动器发送。例如,为所执行的包含循环指令的故事板捕获的图像数据可以存储在为设备驱动器所分配的存储器中,诸如滚动缓冲器(rolling buffer)中,并且可以在整个故事板的执行完成后在一个或者多个故事板净荷中被返回。
[0043]在一些实现中,循环指令可以包括循环计数,并且循环指令可以连续使故事板循环,直到循环的数量满足或者耗尽循环计数。在一些实现中,循环指令可以指示循环还未完成。例如,循环指令可以包括值或者标记,其可以被设定成向设备驱动器指示:基于循环指令,没有循环要进行。在一些实现中,当执行包括循环指令的故事板时,设备驱动器可以在接收到停止命令或者达到或者耗尽循环指令的循环计数之后生成输出,诸如故事板净荷。附加地,循环指令可以指导设备驱动器连续在故事板内进行循环,直到设备驱动器被指导停止循环或者直到满足条件为止。
[0044]在一些实现中,循环指令指导执行故事板的设备驱动器从执行的控制帧环回到循环控制指令中所指示的控制帧。例如,循环控制指令可以向设备驱动器指示:将为该循环而执行的控制帧串在故事板的何处开始。也就是说,循环控制指令可以指导设备驱动器:什么在前的控制帧是控制帧串中要在该循环中被执行的第一个控制帧。在一些实现中,循环控制指令可以指示重新执行当前执行的控制帧。例如,循环控制指令可以指示:包括循环控制指令的控制帧要在该控制帧的当前执行完成之后被再次执行。循环控制指令可以指示环回到位于当前执行的控制帧之前若干控制帧的控制帧。在一个实现中,如果循环控制指令指示环回大于在当前执行的控制帧之前的控制帧数量的若干控制帧,那么设备驱动器被指导循环到故事板的第一个控制帧。在一些实现中,循环控制指令可以指示环回到故事板的第一控制帧和/或开始的控制帧。
[0045]在一些实现中,循环条件指令指导执行故事板的设备驱动器继续进行一连串控制帧的循环执行,直到满足一个或者多个条件为止。例如,循环指令可以指导设备驱动器继续在故事板内重复地执行控制帧的序列,直到满足某个条件为止。循环条件指令可以包括一个或者多个值,其基于循环条件指令来指示结束循环的一个或者多个循环条件。循环条件指令的值可以组合地使用来指示一个或者多个在故事板内结束循环之前要被满足的条件。在一些实现中,循环指令可以连续使设备驱动器重复执行故事板内的控制帧的序列,直到完成在所执行的控制帧中开始的一个或者多个相机操作为止。例如,相机操作可以包括对焦操作、曝光操作、缩放操作、调整白平衡的操作、或者充电和/或准备闪光灯的操作。在一些实现中,设备驱动器连续在故事板内循环,直到满足条件的一个或者多个组合。也就是说,循环条件指令可以包括指示在故事板内的循环可以结束之前要被满足的一些或者全部条件的一个或者多个值。在一些实现中,循环条件可以通过一个或者多个诸如超时、停止或者取消那样的操作而被结束或者被否决(override)。
[0046]用于延迟控制帧的执行的示范性指令
在本文的任何示例中,故事板的控制帧可以包括一个或者多个控制指令,诸如一个或者多个延迟指令。在一些实现中,延迟指令可以允许用户生成用来规定帧间延迟的故事板,帧间延迟可以诸如取决于一个或者多个条件而是强制的或者不是强制的。例如,延迟指令可以包括延迟时间指令或者延迟条件指令。延迟时间指令可以包括指示正执行的设备驱动器可以对故事板中将要执行的下一个控制帧的执行进行延迟的时间量的值。例如,由延迟时间指令所指示的延迟的时间量可以是从包括延迟时间指令的控制帧的曝光开始测量的、对于下一个控制帧的执行进行延迟的时间。在其它实现中,在延迟时间指令中所指示的延迟的时间量从控制帧的执行期间的另一个时间进行测量。在一些实现中,如果在延迟时间指令中所指示的延迟的时间小于控制帧的曝光的曝光时间,那么在该控制帧和故事板的下一个被执行的控制帧之间可以不存在延迟时间。
[0047]在一些实现中,延迟指令可以包括延迟条件指令。延迟条件指令可以向设备驱动器指示基于一个或者多个延迟条件而延迟故事板的控制帧的执行。例如,基于延迟条件指令的执行,故事板中要被执行的下一个控制帧的执行可以被延迟,直到满足由延迟条件指令所指示的一个或者多个条件为止。在一些实现中,响应于延迟条件指令而施加的对于控制帧的执行的延迟可以舍入(round to)到最近的控制帧边界。在一些实现中,延迟条件指令可以包括一个或者多个值,其指示在执行下一个控制帧之前要被满足的延迟条件。延迟条件指令的值可以组合地使用来指示在执行后续控制帧之前要被满足的一个或者多个条件。延迟条件指令可以包括指示延迟故事板的下一个控制帧的执行直到完成相机的对焦操作的值。在一些实现中,延迟条件指令可以包括向设备驱动器指示延迟故事板的下一个控制帧的执行直到完成一个或者多个正在进行的相机操作的值。例如,相机操作可以包括对焦操作、曝光操作、缩放操作、调整白平衡的操作、或者充电和/或准备闪光灯的操作。在一个实现中,延迟条件指令包括一个或者多个值,其向设备驱动器指示延迟故事板的下一个控制帧的执行,直到满足一个或者多个条件为止。在一些实现中,延迟条件指令可以否决延迟时间指令。例如,如果延迟时间指令一一其指示延迟要被执行的下一个控制帧的执行的时间量一一被执行,并且延迟条件指令也被执行,那么下一个控制帧的执行可以基于延迟条件指令而不是按照延迟时间指令所指示的延迟时间来被延迟。在其它实现中,所执行的延迟条件指令并不否决所执行的延迟时间指令。
[0048]指令的示范性尽力施加
在本文的任何示例中,控制帧的指令可以使用尽力施加而得以施加。在指令的尽力施加中,即便通过施加指令而开始的设置或者功能性不能在用于执行含有该指令的控制帧的时间内完成,设备驱动器也可以将指令施加到相机。在指令的尽力施加的一些实现中,如果在控制帧中执行的指令并没有否决在前执行的指令(其在在前的控制帧中开始了某个进行中的操作),那么设备驱动器可以继续完成该进行中的操作。例如,控制帧中的相机指令可以开始对焦操作,其在下一个控制帧的执行之前并未完成,如果下一个控制帧并不包括用来执行对焦操作的指令,那么由在前的控制帧指令开始的对焦操作可以在下一个控制帧的执行期间继续进行。在另一个实现中,如果随后执行的控制帧包括施加新的值并且否决由在前的控制帧开始的、当前正执行的操作的指令,那么当前正执行的操作可以停止并且可以施加该新的值。
[0049]在指令的尽力施加的一些实现中,指令的施加可能未能成功,那么该指令可被忽略,而故事板可以继续执行。当指令由于施加失败而被忽略时,对于该属性而被施加于相机的默认值或者在前值可以是对于该相机的现行值。在一些实现中,如果在故事板的一个或者多个指令的施加之间引发冲突,则由设备驱动器最后或稍后解析或者执行的相冲突指令中的指令可以取得高于在前的相冲突指令的优先级。例如,如果用于曝光的相机指令后面跟随着用于设定固定帧速率的相机指令,则用于设定固定帧速率的后一指令可以取得优先权并且得以施加。
[0050]示范件故事板净荷结构
图7是使用灵活结构实现的故事板净荷700的示范性实现。例如,可以执行故事板并且可以通过设备驱动器随同图像统计和元数据一起将图像帧序列捕获在一个或者多个故事板净荷(诸如故事板净荷700)中。净荷700可以通过设备驱动器返回到或者发送到应用和/或图像处理管道(pipeline)或者模块。故事板净荷700包括数据块,其可以包括基于控制帧的执行而返回到设备驱动器的任何数据类型。例如,数据块可以包括图像元数据、相机设置信息、采用一种或者多种格式的图像帧、用于图像帧的上下文信息、图像统计或者其它被捕获的数据。在一些实现中,当对于故事板而使能图像元数据捕获时,用于故事板的故事板净荷可以包括用于相关联的所捕获的图像帧的图像元数据。例如,在具有图像元数据和图像统计的故事板净荷中,故事板净荷的第一块可以是经YUV或者RAW格式化的图像帧,第二块可以包括用于图像帧的Exif数据,而第三块可以包括用于图像帧的图像统计。诸如被包括在故事板净荷700中的数据块710那样的数据块可以与被包括在净荷700中的块标识符、子块标识符、块大小指不符和偏移量相关联。
[0051]故事板净荷700包括故事板标识符715,其标识被执行来生成被包括在故事板净荷中的数据的故事板。例如,故事板标识符715可以包括由应用发送到设备驱动器的标识符,其标识被执行来生成用于故事板净荷700的数据的故事板。故事板净荷700包括控制帧标识符(控制帧ID) 720。控制帧标识符可以是故事板中的控制帧的编号或者其它标识符,该控制帧被执行来创建被包括在故事板净荷中的数据。在用于ZSL情景的一个示范性实现中,控制帧标识符是故事板中对应于由驱动器标记的图像的控制帧的编号。故事板净荷700可以包括一个或者多个块标识符,诸如块标识符725,其标识与块标识符725相关联的数据块730的数据块类型。例如,块标识符725可以标识数据块730中的数据的类型。在一些实现中,数据的类型可以包括图像帧数据、图像统计、上下文数据、Exif数据、或者其它类型的可以被包括在故事板净荷中的数据。而且,故事板净荷700可以包括一个或者多个子块标识符,诸如与数据块730相关联的子块标识符735。子块标识符735可以标识在数据块730中所包括的数据的子类型。在一些实现中,由子块标识符所指示的子类型可以标识图像统计数据的类型,其可以包括后ISP图像数据、直方图、ISP相机控制、预先去马赛克的RAW图像数据、理想化的预先去马赛克的图像数据、或者可以被包括在故事板净荷中的其它子类型的数据。故事板净荷700可以包括一个或者多个块大小指示符,诸如块大小指示符740,其指示数据块730的块大小。例如,块大小可以指示数据块的大小。在一些实现中,块大小以字节来指示,并且可以将块头和/或填充(padding)的大小排除在外。在其它实现中,块大小包括块头和/或填充的大小。
[0052]故事板净荷700可以包括一个或者多个偏移量,诸如偏移量745,其包括关于故事板净荷700的结构中的下一个数据块的地址的信息。例如,偏移量745可以给出导向数据块710的地址,数据块710是故事板净荷700中在数据块730之后的下一个数据块。在一些实现中,偏移量可以指示故事板净荷中的最后的块是最后块。例如,与最后块相关联的偏移量可以包括NULL值,其指示某个块是故事板净荷的最后块,并且在故事板净荷结构中没有其它数据块跟随在该最后块后面。故事板净荷的偏移量可以由应用使用来确定下一个数据块位于故事板净荷中的何处。
[0053]在一个实现中,故事板净荷可以包括净荷描述符信息。例如,故事板净荷可以以净荷描述符信息开始,其可以包括净荷描述符信息的大小、与故事板净荷相关联的故事板标识符、被包括在故事板净荷中的数据块的数量、与故事板净荷相关联的控制帧标识符、在故事板净荷的数据块的那个阵列中的第一数据块、图像格式信息和/或其它信息。
[0054]示范件移动设各
图8是描绘示范性移动设备800的系统图,移动设备800包括总的以802示出的各种各样的可选的硬件和软件组件。移动设备的任何组件802可以与其它组件进行通信,但是为了易于图解,没有示出所有连接。移动设备可以是各种各样的计算设备(例如,蜂窝电话、智能手机、手持式计算机、个人数字助理(PDA)、平板触摸计算机(slate computer)、平板计算机等等)的任何一种,并且可以允许与诸如蜂窝或卫星网络那样的一个或者多个移动通信网络804进行无线双向通信。
[0055]所图示的移动设备800可以包括控制器或者处理器810 (例如,信号处理器、微处理器、ASIC、或者其它控制和处理逻辑电路系统),用于执行诸如以下的任务:信号编码、图像处理、图形处理、数据处理、输入/输出处理、功率控制和/或其它功能。操作系统812可以控制组件802的分配和使用,并且为一个或者多个应用程序814提供支持。应用程序可以包括常见的移动计算应用(例如,电子邮件应用、日历、联系人管理器、web浏览器、消息传送应用、相机应用、照片应用)或者任何其它计算应用。用于访问应用商店的功能性813也可以用于获得和更新应用814。应用的其中一个可以是如本文所描述的相机应用815。
[0056]所图示的移动设备800可以包括存储器820。存储器820可以包括不可拆卸存储器822和/或可拆卸存储器824。不可拆卸存储器822可以包括RAM、ROM、闪速存储器、硬盘或者其它众所周知的存储器存储技术。可拆卸存储器824可以包括闪速存储器或者在GSM通信中众所周知的用户身份模块(SIM)卡、或者其它众所周知的存储器存储技术,诸如“智能卡”。存储器820可被使用于存储用以运行操作系统812和应用814的数据和/或代码。示例性数据可以包括网页、文本、图像、声音文件、图片、视频数据或者要经由一个或者多个有线或无线网络发送给和/或接收自一个或者多个网络服务器或者其它设备的其它数据集。存储器820可被使用来存储诸如国际移动用户身份(MSI)那样的用户标识符和诸如国际移动设备标识符(IMEI)那样的设备标识符。这样的标识符可以被传输到网络服务器以用来标识用户和设备。
[0057]移动设备800可以支持一个或者多个输入设备830,诸如触摸屏832、话筒834、相机836、物理键盘838和/或跟踪球840,以及支持一个或者多个输出设备850,诸如扬声器852和显示器854。其它可能的输出设备(未示出)可以包括压电式或者其它触觉式输出设备。一些设备可以服务于多于一个的输入/输出功能。例如,触摸屏832和显示器854可以被组合在单个输入/输出设备中。输入设备830可以包括自然用户界面(NUI)。NUI可以是使用户能够以“自然”的方式与设备进行交互的任何接口技术,其解除了由诸如鼠标、键盘、远程控制等等的输入设备强加的人为约束。NUI方法的示例包括依赖于语音识别、触摸和触针识别、在屏幕上和接近屏幕两者的手势识别、空中手势、头和眼跟踪、话音和语音、视觉、触摸、手势和机器智能的那些方法。NUI的其它示例包括使用加速计/陀螺仪、面部识另|J、3D显示、头、眼、和凝视跟踪、沉浸式增强的现实和虚拟现实系统的运动手势检测(其全部都提供更自然的接口),以及用于使用电场传感电极(EEG和相关方法)感知大脑活动的技术。因此,在一个特定示例中,操作系统812或者设备814可以包括语音识别软件来作为允许用户经由话音命令操作设备800的话音用户接口的一部分。进一步地,设备800可以包括输入设备和软件,其允许经由用户空间手势的用户交互,诸如检测和解译手势从而向游戏应用提供输入。
[0058]无线调制解调器860可以耦合到天线(未示出)并且可以支持在处理器810和如在本领域中众所周知的外部设备之间的双向通信。调制解调器860被一般性地示出,并且它可以包括用于与移动通信网络804和/或其它基于无线电的调制解调器(例如,蓝牙864或者W1-Fi 862)进行通信的蜂窝调制解调器。无线调制解调器860典型地被配置成与一个或者多个蜂窝网络进行通信,蜂窝网络是诸如用于在单个蜂窝网络内的、在蜂窝网络之间的、或者在移动设备和公共交换电话网络(PSTN)之间的数据和话音通信的GSM网络。
[0059]移动设备还可以包括至少一个输入/输出端口 880、电源882、卫星导航系统接收器884 (诸如全球定位系统(GPS)接收器)、加速计886、陀螺仪和/或物理的连接器890,其可以是USB端口、IEEE1394 (火线)端口、HDMI和/或RS-232端口。所图示的组件802不是必需的或者全部包含的,因为可以删除任何组件并且可以加入其它组件。
[0060]示范件实现环培
图9图示在其中可以实现所描述的实施例、技法和本文描述的技术的适当实现环境900的一般化示例。在示例性环境900中,由云910提供各种类型的服务(例如,计算服务)。例如,云910可以包括一组计算设备,其可以被集中或分布地放置,它们把基于云的服务提供给经由诸如互联网那样的网络而连接的各种类型的用户和设备。实现环境900可以以不同方式使用以完成计算任务。例如,一些任务(比如,处理用户输入和呈现用户界面)可以在本地计算设备(比如,被连接的设备930、940、950)上执行,而其它任务(比如,对于要在后续处理中使用的数据的存储)可以在云910中执行。
[0061]在示例性环境900中,云910为所连接的具有各种各样屏幕能力的设备930、940、950提供服务。连接的设备930代表具有计算机屏幕935 (例如,中等尺寸的屏幕)的设备。例如,连接的设备930可以是个人计算机,诸如台式计算机、膝上型计算机、平板触摸计算机、平板计算机、笔记本、上网本等等。连接的设备940代表具有移动设备屏幕945 (例如,小尺寸的屏幕)的设备。例如,连接的设备940可以是移动电话、智能电话、个人数字助理、平板计算机等等。连接的设备950代表具有大屏幕955的设备。例如,连接的设备950可以是电视屏幕(例如,智能电视)或者连接到电视的另一个设备(例如,机顶盒或者游戏控制台)等等。所连接的设备930、940、950中的一个或者多个可以包括触摸屏能力。触摸屏可以接受不同方式的输入。例如,当某个对象(例如,指尖或者触针)使跨表面流动的电流失真或者中断时,电容性触摸屏检测到触摸输入。作为另一个示例,当来自光学传感器的波束被中断时,触摸屏可以使用光学传感器检测触摸输入。对于要由一些触摸屏进行检测的输入而言,与屏幕表面的物理接触并不是必需的。不具有屏幕能力的设备也可以在示例性环境900中被使用。例如,云910可以为一个或者多个没有显示器的计算机(例如,服务器计算机)提供服务。
[0062]服务可以由云910通过服务提供者920提供,或者通过在线服务(未描绘出)的其它提供者提供。例如,云服务可以相对于具体的已连接设备(例如,已连接的设备930、940、950)的屏幕尺寸、显示能力和/或触摸屏能力而进行定制。
[0063]在示例性环境900中,云910通过至少部分使用服务提供者920而为各种连接的设备930、940、950提供本文描述的技术和解决方案。例如,服务提供者920可以为各种基于云的服务提供集中化的解决方案。服务提供者920可以为用户和/或设备(例如,为连接的设备930、940、950和/或它们相应的用户)管理服务预订。
[0064]云环境可以被扩展到本文所描述的故事板制作。特别的,故事板960可以被存储在云中并且传递给设备930、940、950以及在它们之间传递,从而将基于云的解决方案提供给数字摄影。
[0065]示范件计筧环培
图10描绘在其中可以实现所描述的创新的适当计算环境1000的一般化示例。计算环境1000不打算暗示对于使用或者功能性的范围的任何限制,因为创新可以以多种通用或者专用计算系统来实现。例如,计算环境1000可以是各种各样计算设备中的任何一种(例如,台式计算机、膝上型计算机、服务器计算机、平板计算机、媒体播放器、数字相机设备、游戏系统、移动设备等等)。
[0066]参考图10,计算环境1000包括一个或者多个处理单元1010、1015和存储器1020、1025。在图10中,这个基本配置1030被包括在虚线内。处理单元1010、1015执行计算机可执行指令。处理单元可以是通用中央处理单元(CPU)、在专用集成电路(ASIC)中的处理器、或者是任何其它类型的处理器。在多处理系统中,多处理单元执行计算机可执行指令来增强处理能力。例如,图10示出中央处理单元1010以及图形处理单元或者协处理单元1015。有形存储器1020、1025可以是可被处理单元访问的易失性存储器(例如,寄存器、高速缓存器、RAM)、非易失性存储器(例如,ROM、EEPROM、闪速存储器等等)或者两者的某种组合。存储器1020、1025以适合于由(一个或多个)处理单元执行的计算机可执行指令的形式存储用来实现本文所描述的一个或者多个创新的软件1080。
[0067]计算系统可以具有附加特征。例如,计算环境1000包括存储装置1040、一个或者多个输入设备1050、一个或者多个输出设备1060和一个或者多个通信连接1070。诸如总线、控制器或网络之类的互连机制(未示出)互连计算环境1000的组件。典型地,操作系统软件(未示出)为在计算环境1000中执行的其它软件提供操作环境,并且协调计算环境1000的组件的活动。
[0068]有形存储装置1040可以是可拆卸或者不可拆卸的,并且包括磁盘、磁带或者盒式磁带、CD-ROM、DVD、或者可被使用来以非瞬时性方式存储信息并可在计算环境1000内被访问的任何其它介质。存储装置1040存储用于实现本文所描述的一个或者多个创新的软件1080的指令,诸如本文所描述的一个或者多个故事板或者其它创新。
[0069]输入设备1050可以是接触式输入设备,诸如键盘、鼠标、笔、或者跟踪球、话音输入设备、触摸屏、扫描设备或者对计算环境1000提供输入的另外的设备。对于视频编码而言,输入设备1050可以是相机、视频卡、TV调谐器卡、或者接受模拟或者数字形式的视频输入的相似设备、或者将视频样本读取到计算环境1000中的CD-ROM或者CD-RW。输出设备1060可以是显示器、打印机、扬声器、⑶写入器或者从计算环境1000提供输出的另外的设备。
[0070]通信连接1070使得能通过通信介质与另外的计算实体通信。通信介质在调制的数据信号中传达信息,诸如计算机可执行指令、音频或者视频输入或者输出、或者其它数据。调制的数据信号是使它的特性中的一个或多个以如下方式设置或改变的信号,即:将信息编码在信号中。作为示例而不是限制,通信介质可以使用电学、光学、RF或者其它载体。
[0071]虽然为了便于演示,所公开的方法中一些方法的操作是以特定的顺序次序描述的,但是应该理解的是,这种描述方式包含重新安排,除非通过在下面阐明的具体语言来要求特定的排序。例如,顺序地描述的操作可以在一些情况下被重新安排或者被同时执行。而且,出于简洁的目的,附图可能没有示出所公开的方法可以与其它方法协同使用的各种方式。
[0072]所公开的方法的任何一种可以被实现为在一个或者多个计算机可读存储介质(例如,非瞬时性计算机可读介质,诸如一个或者多个光学介质盘、易失性存储组件(诸如DRAM或者SRAM)、或者非易失性存储组件(诸如闪速存储器或者硬盘驱动))中存储的并在计算机(例如,市场上可提供的任何计算机,包括智能电话或者包括计算硬件的其它移动设备)上执行的计算机可执行指令。正如应该容易理解的,术语计算机可读存储介质不包括通信连接,诸如调制的数据信号。用于实现所公开技术的任何计算机可执行指令以及在所公开实施例的实现期间创建和使用的任何数据可以被存储在一个或者多个计算机可读介质(例如,将传播的信号排除在外的非瞬时性计算机可读介质)中。计算机可执行指令可以是例如专用软件应用或者经由web浏览器访问或者下载的软件应用或者其它软件应用(诸如远程计算应用)的一部分。这样的软件可以例如在单个本地计算机(例如,市场上可提供的任何适当的计算机)中被执行,或者在网络环境中(例如,经由互联网、广域网、局域网、客户端-服务器网络(诸如云计算网络)或者其它这样的网络)使用一个或者多个网络计算机来执行。
[0073]为了清晰明了,仅描述了基于软件实现的某些所选择的方面。本领域众所周知的其它细节被省略。例如,应该理解的是,所公开的技术不限于任何具体计算机语言或者程序。例如,所公开的技术可以通过用C++、Java、Perl、JavaScript、Adobe Flash或者任何其它适当的编程语言编写的软件来实现。类似地,所公开的技术不限于任何特定的计算机或者特定类型的硬件。适当的计算机和硬件的某些细节是众所周知的,并且不需要在本公开内容中详细阐明。
[0074]同样应很好理解的是,本文所描述的任何功能性可以至少部分地通过一个或者多个硬件逻辑组件而不是软件来执行。例如,并且不是限制,可以使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、程序特定的集成电路(ASIC)、程序特定的标准产品(ASSP)、系统单芯片系统(SOC)、复杂的可编程逻辑器件(CPLD)等等。
[0075]此外,任何基于软件的实施例(包括例如用于使得计算机执行所公开的任何方法的计算机可执行指令)可以通过适当的通信手段而被上传、下载或者远程访问。这样的适当的通信手段包括例如互联网、万维网、内联网、软件应用、线缆(包括光纤缆线)、磁通信、电磁通信(包括RF、微波和红外通信)、电子通信或者其它这样的通信手段。
[0076]所公开的方法、装置和系统不应被解读为以任何方式进行限制。而是,本公开内容是针对各种公开实施例的所有新颖的和非显而易见的特征和方面,不管是单独的还是以彼此的各种组合及子组合的。所公开的方法、装置和系统不受限于任何具体方面或者特征或者其组合,所公开的实施例也不要求任何一个或者多个具体优点要存在或者问题要解决。鉴于可施加所公开的发明原理的许多可能的实施例,应该认识到的是,所图示的实施例仅是本发明的优选示例,并且不应被认为是限制本发明的范围。而是,本发明的范围由下面的权利要求来限定。因此我们要求将所有落入这些权利要求的范围的都作为我们的发明来保护。
【权利要求】
1.一种控制相机的方法,包括: 存储(I 10)至少两个故事板; 从相机应用中接收(120)至少一个故事板标识符; 使用(130)故事板标识符来检索所存储的至少两个故事板中的故事板,所述故事板包括用于控制相机的控制帧序列;并且 至少通过使用所检索的故事板控制相机而捕获(140)图像序列。
2.如权利要求1的方法,其中所检索的故事板进一步包括至少一个用于修改控制帧序列中的控制帧被执行的次序的指令。
3.如权利要求1的方法,其中至少两个故事板的存储和故事板的检索由设备驱动器来执行。
4.如权利要求1的方法,其中所述故事板包括至少一个用于设定相机设置或者使得执行相机的操作的相机指令。
5.如权利要求2的方法,其中所述至少一个指令使所检索的故事板的执行从控制帧序列中的一个控制帧到另一个控制帧循环,直到条件得以满足为止。
6.如权利要求1的方法,其中所检索的故事板进一步包括至少一个用于延迟控制帧序列中的控制帧的执行的指令。
7.如权利要求1的方法,其中所检索的故事板是第一故事板,并且使用所述检索的故事板包括基于第一故事板中的指令来执行所述至少两个故事板中的第二故事板。
8.—种计算设备,其包括处理器和计算机可读介质,所述计算机可读介质存储用于使得该计算设备执行一种方法的计算机可执行指令,所述方法包括: 使用设备驱动器来检索包括多个控制帧的故事板(310),所述多个控制帧包括一个或者多个控制指令和一个或者多个用于控制相机的相机指令;并且 捕获图像序列(350),所述捕获图像序列包括执行来自故事板的至少一个控制指令,以控制当捕获图像序列时执行所述多个控制帧中的至少一个控制帧的时序或者次序。
9.如权利要求8的计算设备,进一步包括将故事板从相机应用发送给设备驱动器。
10.—种或者多种存储计算机可执行指令的计算机可读存储介质,所述计算机可执行指令用于使得计算设备执行一种方法,所述方法包括: 将至少一个故事板从应用(505)发送给设备驱动器; 使用设备驱动器来高速缓存所述至少一个故事板(510),所述至少一个故事板包括用于控制相机的控制帧序列; 在设备驱动器(515)上接收来自该应用的对于执行所述至少一个故事板的请求;并且 使用设备驱动器来至少通过执行所述至少一个故事板的至少一个控制帧(512)而捕获多个图像帧,所述至少一个控制帧包括一个或者多个控制指令和一个或者多个相机指令。
【文档编号】H04N5/232GK104509092SQ201380040853
【公开日】2015年4月8日 申请日期:2013年5月21日 优先权日:2012年6月1日
【发明者】哈万德 C., 米劳斯尼奇 R., 穆恩 J., 德曼多尔克斯 D., 格伦纳 S. 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1