1.本技术涉及电子设备对焦技术领域,尤其涉及一种对焦方法、装置、设备以及计算机存储介质。
背景技术:
2.随着投影仪技术的不断发展,人们对于投影仪的聚焦功能要求越来越高。其中,作为投影仪最重要的聚焦功能,传统的手动对焦方案已不能满足用户对便捷对焦功能的需求。
3.在相关技术中,目前虽然已经存在自动对焦方案。例如,市面上投影仪常采用的自动对焦方案为利用深度相机或者激光、红外、声波等传感器测距,然后利用投影仪清晰度曲线与距离间的关系,实现自动对焦功能;或者还可以通过对图片进行分析,实现自动对焦功能等。但是这些对焦方案均存在一些缺陷,导致对焦时间过长,降低了用户体验感。
技术实现要素:
4.本技术提出一种对焦方法、装置、设备以及计算机存储介质,能够利用simd架构对初始图像进行加速处理,从而实现设备的快速对焦。
5.为达到上述目的,本技术的技术方案是这样实现的:
6.第一方面,本技术实施例提供了一种对焦方法,该方法包括:
7.获取摄像头拍摄的初始图像;
8.基于单指令多数据(simd)架构对所述初始图像进行加速处理,得到所述初始图像对应的目标图像;
9.对所述目标图像与前一帧的目标图像进行清晰度对比分析,得到清晰度变化趋势,根据所述清晰度变化趋势操作对焦马达,以实现待对焦设备的自动对焦。
10.第二方面,本技术实施例提供了一种对焦装置,该对焦装置包括获取单元、处理单元和调焦单元;其中,
11.获取单元,配置为获取待对焦设备中摄像头拍摄的初始图像;
12.处理单元,配置为对所述初始图像进行预处理,得到所述初始图像对应的二值图像;
13.调焦单元,配置为对所述目标图像与前一帧的目标图像进行清晰度对比分析,得到清晰度变化趋势,根据所述清晰度变化趋势操作对焦马达,以实现待对焦设备的自动对焦。
14.第三方面,本技术实施例提供了一种电子设备,该电子设备包括存储器和处理器;其中,
15.所述存储器,用于存储能够在所述处理器上运行的计算机程序;
16.所述处理器,用于在运行所述计算机程序时,执行如第一方面所述的方法。
17.第四方面,本技术实施例提供了一种计算机存储介质,所述计算机存储介质存储
有计算机程序,所述计算机程序被至少一个处理器执行时实现如第一方面所述的方法。
18.本技术实施例所提供的一种对焦方法、装置、设备以及计算机存储介质,获取待对焦设备中摄像头拍摄的初始图像;基于单指令多数据(simd)架构对初始图像进行加速处理,得到初始图像对应的目标图像;对目标图像与前一帧的目标图像进行清晰度对比分析,得到清晰度变化趋势,根据清晰度变化趋势操作对焦马达,以实现待对焦设备的自动对焦。这样,利用simd架构对摄像头拍摄的初始图像进行加速处理,然后根据所得到的清晰度变化趋势操作对焦马达,从而不仅提高了对焦清晰度,还实现了设备的快速对焦。
附图说明
19.图1为本技术实施例提供的一种对焦方法的流程示意图;
20.图2为本技术实施例提供的一种清晰度与马达步数的关系曲线示意图;
21.图3为本技术实施例提供的一种对焦方法的详细流程示意图;
22.图4为本技术实施例提供的一种图像解码方法的详细流程示意图;
23.图5为本技术实施例提供的一种图像二值化方法的详细流程示意图;
24.图6为本技术实施例提供的一种三段式调焦方法的详细流程示意图
25.图7为本技术实施例提供的一种对焦装置的组成结构示意图;
26.图8为本技术实施例提供的一种电子设备的具体硬件结构示意图;
27.图9为本技术实施例提供的一种电子设备的组成结构示意图。
具体实施方式
28.为了能够更加详尽地了解本技术实施例的特点与技术内容,下面结合附图对本技术实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本技术实施例。
29.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
30.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。还需要指出,本技术实施例所涉及的术语“第一\第二\第三”仅是用于区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述的以外的顺序实施。
31.可以理解,随着投影仪技术的快速发展,家用投影开始走进千家万户,作为投影仪最重要的聚焦功能,传统的手动对焦方案已不能满足用户对便捷对焦功能的需求。
32.具体来说,目前市面上投影仪常采用的自动对焦方案为利用深度相机或者激光、红外、声波等传感器测距,例如飞行时间(time of flight,tof)法,然后利用投影仪清晰度曲线与距离间的关系,实现自动对焦功能。但是这种对焦方案易受到产线结构装配误差、环境干扰、镜头热胀冷缩、机器侧投等因素的影响,经常会出现对焦不清或者误判的问题。针对这个问题,目前出现了一种对焦方案,即通过对图像进行分析从而实现对焦的方案。但是这些对焦方案大多因为性能损耗大、对焦时间过长等原因影响用户体验而被废弃。
33.基于此,本技术实施例提出了一种对焦方法,该方法的基本思想为:获取待对焦设备中摄像头拍摄的初始图像;基于单指令多数据(simd)架构对初始图像进行加速处理,得到初始图像对应的目标图像;对目标图像与前一帧的目标图像进行清晰度对比分析,得到清晰度变化趋势,根据清晰度变化趋势操作对焦马达,以实现待对焦设备的自动对焦。这样,利用simd架构对摄像头拍摄的初始图像进行加速处理,然后根据所得到的清晰度变化趋势操作对焦马达,从而不仅提高了对焦清晰度,还实现了设备的快速对焦。
34.下面将结合附图对本技术各实施例进行详细说明。
35.实施例一
36.本技术的一实施例中,参见图1,其示出了本技术实施例提供的一种对焦方法的流程示意图。如图1所示,该方法可以包括:
37.s101:获取摄像头拍摄的初始图像。
38.需要说明的是,本技术实施例提供的对焦方法可以应用于需要进行对焦的装置,或者集成有该装置的电子设备。这里,电子设备即是待对焦设备,可以是诸如投影仪、数码相机、摄像机、手机、笔记本电脑、掌上电脑、个人数字助理(personal digital assistant,pda)、可穿戴设备等等,本技术实施例对此不作具体限定。
39.还需要说明的是,本技术实施例可以应用于任意需要快速对焦的操作系统中,所述操作系统可以包括各种操作系统,例如安卓系统、ios系统、unix系统等等,在此不作任何附加限定。另外,这里的操作系统内核可以是各种适当的操作系统内核,例如单内核、双内核、微内核、混合内核,但本技术实施例并不限于此。
40.还需要说明的是,待对焦设备可以包括有摄像头。其中,这里的初始图像可以是摄像头在对焦开始前进行拍摄,甚至可以是摄像头在对焦过程中每进行一次对焦处理时都需要重新拍摄一张,后续通过分析不同初始图像清晰度的变化进行待对焦设备的对焦处理。
41.s102:基于单指令多数据(simd)架构对初始图像进行加速处理,得到初始图像对应的目标图像。
42.需要说明的是,单指令流多数据(single instruction multiple data,simd)是一种采用一个控制器来控制多个处理器,同时对一组数据(又称“数据向量”)中的每一个分别执行相同的操作从而实现空间上的并行性的技术,特别适合于数据密集型运算。具体来说,simd就是“一条指令处理多个数据(一般是以2为底的指数数量)”的并行处理技术,相比于“一条指令处理一个数据”,运算速度将会大大提高。而neon则是一种基于simd思想的arm技术,相比于armv6或之前的架构,neon结合了64-bit和128-bit的simd指令集,能够提供128-bit宽的向量运算(vector operations)。
43.还需要说明的是,加速处理可以包括解码处理和二值化处理。具体地,先将初始图像进行解码处理,得到解码图像,然后将解码图像进行二值化处理,得到目标图像。其中,加速处理的过程可以在图形处理器(graphics processing unit,gpu)中进行,这样可以减轻中央处理器(central processing unit,cpu)的运算压力。也就是说,本技术实施例是利用gpu以及simd扩展架构的neon技术,以便加速初始图像解码、图像二值化过程。
44.在一些实施例中,对于s102而言,所述基于simd架构对所述初始图像进行加速处理,得到所述初始图像对应的目标图像,可以包括:
45.对所述初始图像进行解码处理,得到解码图像;
46.基于simd架构对所述解码图像进行灰度处理,得到所述目标图像。需要说明的是,在加速处理的解码过程中,需要先对输出内存进行初始化,并读取输出内存的分布情况,基于输出内存的分布情况,将输出内存地址转换为非缓存虚拟地址,然后再根据解码参数对初始图像进行解码。
47.具体地,在一些实施例中,所述待对焦设备包括图形处理器,所述对所述初始图像进行解码处理,得到解码图像,可以包括:
48.创建图像解码缓存区域;
49.在所述图像解码缓存区域中,调用所述图形处理器并对所述初始图像进行解码处理;
50.若所述解码成功且解码次数小于预设次数,则输出所述解码图像。
51.需要说明的是,为了提高解码速度节约cpu性能,使用gpu对初始图像进行解码,可在不耗费cpu资源的情况下,充分利用gpu芯片图像和图形相关运算的天然优越性,快速实现解码。
52.还需要说明的是,先对输出内存进行初始化,并读取输出内存的分布情况,基于输出内存的分布情况,将输出内存地址转换为非缓存虚拟地址,然后设置具体地解码参数,并创建图像处理缓存,然后通过解码应用程序接口(application programming interface,api)调用gpu,根据解码参数对初始图像进行解码处理。
53.还需要说明的是,在解码不成功或者解码次数大于预设次数时,可以返回解码失败结果,并退出该初始图像的解码过程;然后重新获取初始图像,重新进行解码,其中,预设次数是基于实验数据预先设置的,示例性地,预设次数可以设置为2。
54.进一步地,在一些实施例中,所述基于simd架构对所述解码图像进行灰度处理,得到所述目标图像,可以包括:
55.对所述解码图像进行像素分组,得到n个像素组;其中,每一个像素组包括若干个像素,n为大于零的整数;
56.基于simd架构对所述n个像素组进行目标分量提取,得到所述目标图像。:
57.需要说明的是,对解码图像进行像素分组的目的是为了对解码图像进行单指令多数据结构处理,可以每次处理一组像素,也可以同时处理多组像素,实现解码图像的并行处理,从而加速图像处理过程。
58.还需要说明的是,目标分量可以是y分量,对解码图像进行分析和处理,提取解码图像中所需y分量,生成目标图像(即灰度图像)。
59.具体地,在一些实施例中,所述基于simd架构对所述n个像素组进行目标分量提取,得到所述目标图像,可以包括:
60.获取第i个像素组对应的若干个像素;
61.在预设向量寄存器中存储所述第i个像素组中每一像素对应的目标分量;
62.将所述第i个像素组中每一像素对应的目标分量填充到预设矩阵中;
63.若i小于或等于n-1,则对i执行加1处理,并返回所述获取第i个像素组对应的若干个像素的步骤;
64.若i等于n,则根据所述预设矩阵得到所述目标图像。
65.设置i的初始值等于1。
66.示例性地,可将三十万像素进行分组,每组分16个像素,每次处理一组或者多组像素,可以加载16个或者16的倍数个像素,以加载16个像素为例,可以将该像素中的y分量存储在128位向量寄存器中,并输出填充有y分量的预设矩阵,根据预设矩阵得到目标图像。
67.s103:对目标图像与前一帧的目标图像进行清晰度对比分析,得到清晰度变化趋势,根据清晰度变化趋势操作对焦马达,以实现待对焦设备的自动对焦。
68.需要说明的是,在本技术实施例中,实现对焦设备的对焦处理,需要重复执行上述步骤,直至对焦设备显示的画面清晰度达到目标效果,具体地,在每操作一次对焦马达,均需要重新获取最新的初始图像,并对初始图像进行解码处理和二值化处理,得到目标图像,并分析目标图像与前一帧目标图像的清晰度变化趋势,根据前后两次目标图像的清晰度变化趋势,确定对焦马达的调整方案,直至最新的目标图像达到目标清晰度后,实现待对焦设备的对焦处理。
69.在一些实施例中,所述对所述目标图像与前一帧的目标图像进行清晰度对比分析,得到清晰度变化趋势,可以包括:
70.确定所述目标图像的清晰度值;
71.对所述目标图像的清晰度值与所述前一帧的目标图像的清晰度值进行对比,得到清晰度变化趋势。
72.需要说明的是,每调整一次对焦马达,就要重新获取目标图像,这里对所述目标图像与前一帧的目标图像的清晰度值进行对比,是指将本次获取到的目标图像对应的清晰度值与本次对焦马达调整前获取的目标图像对应的清晰度值进行对比。其中,本次对焦马达调整前获取的目标图像是将本次对焦马达调整前获取的初始图像进行加速处理得到的。
73.在一些实施例中,所述确定所述目标图像的清晰度值,可以包括:
74.获取所述目标图像中每一像素对应的灰度值;
75.利用预设函数对所述目标图像中每一像素对应的灰度值进行乘法运算,得到所述目标图像中每一像素对应的中间值;
76.对所述目标图像中每一像素对应的中间值进行逐像素累加计算,得到所述目标图像的清晰度值。
77.需要说明的是,预设函数具体可以利用灰度方差乘积(smd2)评价函数,对每张图片的每一个像素点领域两个灰度相乘,得到每个像素的清晰度值,然后将目标图像中的每个像素点对应的清晰度值进行累加,得到目标图像的清晰度值。
78.在一些实施例中,对于s103而言,所述所述根据所述清晰度变化趋势操作对焦马达,以实现待对焦设备的自动对焦,可以包括:
79.根据所述清晰度变化趋势和目标马达步数,将对焦马达调整至目标清晰点对应的位置;其中,所述目标马达步数包括:第一马达步数、第二马达步数和第三马达步数;所述第二马达步数等于所述第一马达步数与第一常数值的乘积,所述第三马达步数等于所述第一马达步数与第二常数值的乘积。
80.需要说明的是,参见图2,其示出了一种清晰度与马达步数的关系曲线示意图。如图2所示,待对焦设备的清晰度曲线是一条近似
‘
高斯分布’曲线,以投影仪光机为例,其中,水平方向为马达步数a,竖直方向为投影仪光机清晰度s。曲线近似度越好,则说明光机构的设计、制造水平越好。曲线峰顶对应的位置,即为当前距离投影下目标清晰点对应的位置。
81.还需要说明的是,在确定目标清晰点所在的位置的时候可以采用三段式调焦算法,三段式调焦算法一共需要确定三个不同的马达步数,示例性地,其中第一阶段对应的马达步数可以根据待对焦设备对应的光机输出的最小转动角除以实际步距角获得,第二阶段对应的马达步数可以是第一阶段马达步数的两倍,第三阶段对应的马达步数可以是第一阶段马达步数的三倍。这样,经过对焦后待对焦设备的清晰度可以达到该待对焦设备理论上的最佳状态。
82.具体地,在一些实施例中,对于s103而言,所述根据所述清晰度变化趋势和目标马达步数,将对焦马达调整至目标清晰点对应的位置,可以包括:
83.控制所述对焦马达向前移动所述第三马达步数;
84.若所述对焦马达到达末尾位置,则判断所述清晰度变化趋势是否连续下降第三调整次数;
85.若所述清晰度变化趋势连续下降所述第三调整次数,则控制所述对焦马达转向并移动第一预设步数,以及控制所述对焦马达继续向前移动所述第二马达步数;
86.判断所述清晰度变化趋势是否连续下降第二调整次数;
87.若所述清晰度变化趋势连续下降所述第二调整次数,则控制所述对焦马达转向并移动第一预设步数,以及控制所述对焦马达继续向前移动所述第一马达步数;
88.判断所述清晰度变化趋势是否连续下降第一调整次数;
89.若所述清晰度变化趋势连续下降所述第一调整次数,则控制所述对焦马达转向并移动第一预设步数,以及控制所述对焦马达继续向前移动所述第一马达步数与所述第一调整次数的乘积,以到达目标清晰点对应的位置。
90.需要说明的是,控制所述对焦马达向前移动所述第三马达步数之后,需要判断所述对焦马达是否到达终点,在到达终点的情况下,将调焦马达转向,并返回将对焦马达向前移动第三马达步数的步骤。
91.还需要说明的是,第一调整次数对应第一马达步数,第二调整次数对应第二马达步数,第三调整次数对应第三马达步数,所述第一预设步数为待对焦设备的系统误差。
92.还需要说明的是,第一预设步数的确定方法可以是:待对焦设备的系统误差可以通过随机抽取n台机器,使用调焦系统马达最大支持每秒脉冲数(pulses per second,pps)遍历全程,分别记录每台机器全行程sn(n=0,1,2
…
n)。然后采用中位值平均滤波法得到so,将此值存入每台机器数据库;在生产过程中,对每台机器使用其出厂马达pps进行全程遍历,也采用中位值平均滤波法,得出io,求出与数据库里的so差值sd,存入数据库,该值便是该台机器的调焦马达系统误差。
93.简单来说,在本技术实施例中,这里提供了一种利用硬件平台加速图像处理过程配合清晰点定位算法来实现快速对焦的方案。其中,利用片上系统(system on a chip,soc)内嵌gpu以及simd扩展架构的neon技术,能够加速初始图像解码、图像二值化过程,配合快速、精确的三段式定位算法,可以实现投影仪当前距离下的快速对焦。
94.本实施例提供了一种对焦方法,通过获取待对焦设备中摄像头拍摄的初始图像;基于simd架构对初始图像进行加速处理,得到初始图像对应的目标图像;对目标图像与前一帧的目标图像进行清晰度对比分析,得到清晰度变化趋势,根据清晰度变化趋势操作对焦马达,以实现待对焦设备的自动对焦。这样,利用simd架构对摄像头拍摄的初始图像进行
加速处理,然后根据所得到的清晰度变化趋势操作对焦马达,从而不仅提高了对焦清晰度,还实现了设备的快速对焦。
95.实施例二
96.基于前述实施例相同的发明构思,参见图3,其示出了本技术实施例提供的一种对焦方法的详细流程示意图。如图3所示,该方法可以包括:
97.s301:对焦开始;
98.s302:读取摄像头拍摄的初始图像;
99.需要说明的是,在提升图像处理速度的同时,需要摄像头具备快速的出图能力,否则就会出现一帧图像处理完后,下一帧图像仍然没有准备好的情况,造成图像处理任务被阻塞等待的情况,因此需要选择高帧率的摄像头模组,本方案选择30w/60fps的摄像头模组,默认输出mjpeg格式数据。
100.s303:利用gpu解码初始图像,得到解码图像;
101.对于图像解码过程而言,在一种具体的实施例中,参见图4,其示出了本技术实施例提供的一种图像解码方法的流程示意图。如图4所示,该方法可以包括:
102.s401:读入摄像头的初始数据;
103.s402:初始化输出内存;
104.s403:读取输出内存分布情况;
105.s404:将输出内存的地址转换为非缓存虚拟地址;
106.s405:设置解码参数;
107.需要说明的是,解码参数可以包括通信波特率和地址码。
108.s406:创建图像处理缓存;
109.s407:调用解码api,并通过gpu进行解码;
110.s408:判断是否解码成功且解码次数《2;
111.需要说明的是,在解码成功并且解码次数《2的情况下,意味着解码完成,那么可以执行s409;否则意味着解码失败,那么可以返回执行s401。
112.s409:输出解码图像。
113.需要说明的是,在相关技术中,在初始图像解码过程中一般会使用opencv库函数解码,如果不做其他特殊处理,就会调用cpu进行图像解码,但是受限于tv芯片的性能,整个过程耗时会很多,目前的soc普遍内嵌gpu芯片,使用gpu进行解码便可在不耗费cpu资源的情况下,充分利用gpu芯片图像和图形相关运算的天然优越性,快速实现解码。
114.s304:对解码图像进行二值化,得到目标图像;
115.需要说明的是,对解码图像进行二值化是指将上一步解压后的彩色图像处理成灰度图像,即二值图像,二值图像是指图像中任何一个像素点的灰度值只有0和255两种,分别是黑色和白色。
116.示例性地,上一步解压后得到了yuy4:2:2-packed格式的图像,y、u、v三个分量交错存放,其相邻的两个y共用相邻的一组uv分量。
117.表1
118.start 0y’00
cb
00
y’01
cr
00
y’02
cb
01
y’03
cr
01
start 8y’10
cb
10
y’11
cr
10
y’12
cb
11
y’13
cr
11
start 16y’20
cb
20
y’21
cr
20
y’22
cb
21
y’23
cr
21
start 24y’30
cb
30
y’31
cr
30
y’32
cb
31
y’33
cr
31
119.如表1所示,对于像素点y`00、y`01而言,其对应的cb、cr的值均为cb00、cr00,其他像素点的yuv取值以此类推,cb、cr的含义等同于u(色度)、y(浓度)。依据上面描述的yuv4:2:2-packed采样、排列原理,就可以编写算法直接提取图像的y分量信息,实现二值转换。
120.还需要说明的是,在提取y分量的过程中,利用片上系统(system on a chip,soc)内嵌gpu以及cortex
tm-a simd扩展架构的neon(适用于arm cortex-a系列处理器的一种128位simd扩展结构)技术,利用其支持大规模并行运算的特点,加速处理过程。
121.对于图像二值化过程而言,在一种具体的实施例中,参见图5,其示出了一种图像二值化方法的详细流程示意图。以30万像素为例,如图5所示,该方法可以包括:
122.s501:将30w像素进行分组,每组包括理16个像素;
123.s502:加载一组共16个像素;
124.s503:申请一个128位的向量寄存器保存16个像素里的y分量;
125.s504:向输出矩阵里进行填充y分量;
126.s505:判断解码图像是否提取完成。
127.需要说明的是,图5所示的流程主要是实现图像的加速提取,使用simd的扩展架构,利用其支持大规模并行运算的特点,可以加速处理二值化过程。
128.还需要说明的是,对于s505来说,在判断结果为图像提取未完成的情况下,返回s502继续进行下一组像素的处理;否则,在判断结果为图像提取完成的情况下,输出提取结果,得到目标图像。
129.s305:对目标图像进行处理,判断目标图像的画面是否清晰;
130.s306:操作调焦马达进行对焦;
131.s307:对焦结束。
132.需要说明的是,先对目标图像进行分析,得到目标图像与前一帧的目标图像的清晰度变化趋势,根据清晰度变化趋势判断画面是否清晰。
133.还需要说明的是,对于s305而言,在判断结果为画面不清晰的情况下,可以执行s306,然后返回执行s302,重新读取摄像头拍摄的初始图像;在判断结果为画面清晰的情况下,可以执行s307,意味着对焦结束。
134.可以理解地,以投影仪光机为例,投影仪光机的清晰度曲线是一条近似
‘
高斯分布’曲线,曲线近似度越好,则说明光机构的设计、制造水平越好。曲线峰顶对应的马达步数,即为当前距离投影下最佳清晰点所在的位置,其中,x轴方向为马达步数,y轴方向为光机清晰度。
135.通过第三步的灰度处理,得到了当前位置的二值化图像,利用灰度方差乘积(smd2)评价函数,对每张图像的每一个像素点邻域两个灰度相乘后再逐个像素累加,公式如式(1):
[0136][0137]
其中,x、y分别为像素对应的横向、纵向坐标,x轴方向为马达步数,y轴方向为光机
清晰度。将此值作为清晰度评价依据,比较前后拍摄的两张图像,结合清晰点定位算法,便可推导出行程内最佳清晰点,从而实现精确对焦。
[0138]
还需要说明的是,在进行调焦的过程中需要同时考虑光机设计、制造过程中的缺陷,为避免定位时陷入局部最佳清晰点,最佳定位方法采取三段式定位方案,在确定整体的定位方案后,便需要确定三段各自所需要的调焦步距角。
[0139]
光机调焦系统一般选用步进电机或者伺服电机,而步进电机按相数分类,可以分为单相、两相、三相等形式,在这里我们以四相步进电机为例,描述三段式调焦算法中每一段使用的调焦步数如何选取。
[0140]
每当步进电机接收到一个脉冲信号,它就会按当前设置的方向转动一个固件的步距角,通过控制控制脉冲个数便可以控制角位移量,这样便可以达到准确定位的目的。
[0141]
在光机设计完成后,根据此光机的各项参数选定符合画质要求的步进电机,整体系统确认后,根据不同光机人眼可辨最小解析度等画质标准,得到与之对应的最小转动步距角,为了保证不错过最佳清晰点,最后一段调焦过程使用的调焦步数,记为s1,必须是该值。第二段调焦步数s2,其值选择为a*s1,以此类推,则第三段调焦步数s3,其值选择为b*s3,经过多次对对焦结果的曲线拟合发现,在均衡速度与稳定性两个维度后,a与b的取值在2、3时,效果最优。步进电机的步距角由式(2)关系确定。
[0142]
θ=(360
°÷
(t
×
m))
×dꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0143]
其中,步进电机步距角:θ;转子齿数:t;运行拍数:m;细分:d
[0144]
以上s1、s2、s3的确定,还需要引入步进电机细分的概念。步进电机的细分技术实质上是一种电子阻尼技术,其主要目的是减弱或消除步进电机的低频振动,提高电机的运转精度只是细分技术的一个附带功能。细分后电机运行时的实际步距角是基本步距角的几分之一,以步距角7.2
°
为例,二细分后步距角变变化3.6
°
。本实施例假设以常规的两、四相步进电机转子齿数50、运行拍数4拍、2细分为例,则θ为0.9
°
,再假设光机输出的最小转动角为14.4
°
,a取2,b取3,则s1、s2、s3的计算方式分别如式(3)、式(4)、式(5)。
[0145]
s1=14.4
°÷
0.9=16;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0146]
s2=2
×
s1=32;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0147]
s3=3
×
s1=64;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
[0148]
为了快速定位清晰点,马达转向的时候会向转向方向多走一段距离,通常的思路是直接回到发现清晰点下降开始的位置,理论情况下,这样能保证在不错过清晰点的情况下执行最少的流程,节省时间。但是如果光机在装配过程中产生结构偏差或差异等不可控情况,都有可能导致机器调焦系统产生嫌隙,造成马达回位不准,多见于马达转向时,因此整个定位算法还需要考虑转向消除系统误差。具体的消除方法为:
[0149]
随机抽取n(n值占比总体样本愈多,抽样结果愈具有代表性)台机器,使用调焦系统马达最大支持pps遍历全程,分别记录每台机器全行程sn(n=0,1,2
…
n)。然后采用中位值平均滤波法,该方法融合了中位值滤波与算术平均滤波两种滤波算法的优点对于偶然出现的异常数据抗干扰能力较强,且兼具平均值滤波算法的优点,对于具体算法比较成熟,不再赘述,通过此算法,可以得到so,将此值存入每台机器数据库;
[0150]
在生产过程中,对每台机器使用其出厂马达pps进行全程遍历,遍历i次(视工厂人力资源而定),也采用中位值平均滤波法,得出io,求出与数据库里的so差值sd,存入数据
库,该值便是该台机器的调焦马达系统误差。
[0151]
对于三段之间的切换,需要以清晰度变化(上升或者下降)一定次数作为判断依据,该次数记为cn(n=1,2,3)。为了确保不在判断的时候陷入局部清晰点,cn的取值至少要大于1次,三段之间按精细程度,c1≥c2≥c3,一般cn取值到2就可以满足需求。
[0152]
在一种具体的实施例中,参见图6,其示出了一种三段式调焦方法的详细流程示意图。如图6所示,该方法可以包括:
[0153]
s601:输入目标图像;
[0154]
s602:分三阶段对焦,每阶段马达调整步数分别为s1,s2,s3步;
[0155]
s603:将调焦马达向前移动s3步;
[0156]
s604:判断调焦马达是否到头;
[0157]
s605:将调焦马达转向,并移动sd步;
[0158]
s606:判断目标图像的清晰度是否连续c3次下降;
[0159]
需要说明的是,在本技术实施例中,对于s604而言,在调焦马达到头的情况下,此时执行s605;在调焦马达未到头的情况下,此时执行s606。
[0160]
还需要说明的是,在本技术实施例中,对于s606而言,在目标图像的清晰度连续c3次下降的情况下,此时执行s607;在目标图像的清晰度没有连续下降c3次的情况下,此时执行s603。
[0161]
s607:将调焦马达转向,并移动sd步;
[0162]
s608:将调焦马达向前移动s2步,
[0163]
s609:判断目标图像的清晰度是否连续下降c2次;
[0164]
需要说明的是,在本技术实施例中,对于s609而言,在目标图像的清晰度没有连续下降c2次的情况下,此时执行s608;在目标图像的清晰度连续下降c2次的情况下,此时执行s610。
[0165]
s610:将调焦马达转向,并移动sd步;
[0166]
s611:将调焦马达向前移动s1步;
[0167]
s612:判断目标图像的清晰度是否连续下降c1次;
[0168]
s613:将调焦马达转向并移动(sd s1*c1)步,对焦结束。
[0169]
需要说明的是,在本技术实施例中,对于s612而言,在目标图像的清晰度没有连续下降c1次的情况下,此时执行s611;在目标图像的清晰度连续下降c1次的情况下,此时执行s613。
[0170]
还需要说明的是,在本技术实施例中,每次移动调焦马达后均要拍照、解码、图像二值化等操作。
[0171]
简单来说,上述具体的调焦流程以清晰度下降作为判断依据为例,可以分为三阶段调焦(也可以称为:三段式调焦算法、三段式定位算法等)。在这里,每阶段的马达调整步数分别为s1、s2、s3,而且s1《s2《s3。其中,s3为前述实施例中第三马达步数,s2为前述实施例中第二马达步数,s1为前述实施例中第一马达步数,c3为前述实施例中第三调整次数,c2为前述实施例中第二调整次数,c1为前述实施例中第一调整次数,sd为前述实施例中第一预设步数;其中,对于三阶段之间的切换,以清晰度变化次数作为判断依据,该次数记为cn(n=1,2,3)。为了确保不在判断的时候陷入局部清晰点,cn的取值至少要大于1次,三段之
间按精细程度,c1≥c2≥c3,一般cn取值到2就可以满足需求。
[0172]
本实施例提供了一种对焦方法,通过上述实施例对前述实施例的具体实现进行了详细阐述,从中可以看出,通过前述实施例的技术方案,加速初始图像解码、图像二值化过程,配合快速、精确的三段式定位算法,实现待对焦设备(例如投影仪)在当前距离下的快速对焦;从而不仅提高了对焦清晰度,还优化了用户的使用体验。
[0173]
实施例三
[0174]
基于前述实施例相同的发明构思,参见图7,其示出了本技术实施例提供的一种对焦装置70的组成结构示意图。如图7所示,所述对焦装置可以包括获取单元701、处理单元702和显示单元703;其中,
[0175]
获取单元701,配置为获取待对焦设备中摄像头拍摄的初始图像;
[0176]
处理单元702,配置为基于simd架构对所述初始图像进行加速处理,得到所述初始图像对应的目标图像;
[0177]
调焦单元703,配置为对所述目标图像与前一帧的目标图像进行清晰度对比分析,得到清晰度变化趋势,根据所述清晰度变化趋势操作对焦马达,以实现待对焦设备的自动对焦。
[0178]
在一些实施例中,处理单元702,具体配置为对所述初始图像进行解码处理,得到解码图像;以及基于simd架构对所述解码图像进行灰度处理,得到所述目标图像。
[0179]
在一些实施例中,处理单元702,具体配置为创建图像解码缓存区域;以及在所述图像解码缓存区域中,调用所述图形处理器并对所述初始图像进行解码处理;以及若所述解码成功且解码次数小于预设次数,则输出所述解码图像。
[0180]
在一些实施例中,处理单元702,具体配置为对所述解码图像进行像素分组,得到n个像素组;其中,每一个像素组包括若干个像素,n为大于零的整数;以及基于simd架构对所述n个像素组进行目标分量提取,得到所述目标图像。
[0181]
在一些实施例中,处理单元702,具体配置为获取第i个像素组对应的若干个像素;以及在预设向量寄存器中存储所述第i个像素组中每一像素对应的目标分量;以及将所述第i个像素组中每一像素对应的目标分量填充到预设矩阵中;以及若i小于或等于n-1,则对i执行加1处理,并返回所述获取第i个像素组对应的若干个像素的步骤;以及若i等于n,则根据所述预设矩阵得到所述目标图像;还配置为设置i的初始值等于1。
[0182]
在一些实施例中,调焦单元703,具体配置为根据所述清晰度变化趋势和目标马达步数,将对焦马达调整至目标清晰点对应的位置;其中,所述目标马达步数包括:第一马达步数、第二马达步数和第三马达步数;所述第二马达步数等于所述第一马达步数与第一常数值的乘积,所述第三马达步数等于所述第一马达步数与第二常数值的乘积。
[0183]
在一些实施例中,调焦单元703,具体配置为控制所述对焦马达向前移动所述第三马达步数;以及若所述对焦马达到达末尾位置,则判断所述清晰度变化趋势是否连续下降第三调整次数;以及若所述清晰度变化趋势连续下降所述第三调整次数,则控制所述对焦马达转向并移动第一预设步数,以及控制所述对焦马达继续向前移动所述第二马达步数;以及判断所述清晰度变化趋势是否连续下降第二调整次数;以及若所述清晰度变化趋势连续下降所述第二调整次数,则控制所述对焦马达转向并移动第一预设步数,以及控制所述对焦马达继续向前移动所述第一马达步数;以及判断所述清晰度变化趋势是否连续下降第
sdram,ddrsdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步链动态随机存取存储器(synchronous link dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,drram)。本文描述的系统和方法的存储器802旨在包括但不限于这些和任意其它适合类型的存储器。
[0194]
而处理器803可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器803中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器803可以是通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器802,处理器803读取存储器802中的信息,结合其硬件完成上述方法的步骤。
[0195]
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(application specific integrated circuits,asic)、数字信号处理器(digital signal processing,dsp)、数字信号处理设备(dsp device,dspd)、可编程逻辑设备(programmable logic device,pld)、现场可编程门阵列(field-programmable gate array,fpga)、通用处理器、控制器、微控制器、微处理器、用于执行本技术所述功能的其它电子单元或其组合中。
[0196]
对于软件实现,可通过执行本文所述功能的模块(例如过程、函数等)来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
[0197]
可选地,作为另一个实施例,处理器803还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的方法的步骤。
[0198]
在一些实施例中,参见图9,其示出了本技术实施例提供的一种电子设备80的组成结构示意图。如图9所示,该电子设备80至少包括前述实施例中任一项所述的对焦装置70。
[0199]
在本技术实施例中,对于电子设备80而言,获取摄像头拍摄的初始图像;基于simd架构对初始图像进行加速处理,得到初始图像对应的目标图像;对目标图像与前一帧的目标图像进行清晰度对比分析,得到清晰度变化趋势,根据清晰度变化趋势操作对焦马达,以实现待对焦设备的自动对焦。这样,利用simd架构对摄像头拍摄的初始图像进行加速处理,然后根据所得到的清晰度变化趋势操作对焦马达,从而不仅提高了对焦清晰度,还实现了设备的快速对焦。
[0200]
需要说明的是,在本技术中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括
该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0201]
上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
[0202]
本技术所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
[0203]
本技术所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
[0204]
本技术所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
[0205]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。