相信大家在使用OV5640摄像头时,有时会出现图像显示不是正中间的情况。如果大家查看过我们的教材文档,就会发现当中有这么一段对于OV5640输出图像过程的描述
从文中可以知道,OV5640输出图像,需要经历开窗、平移、尺寸压缩的过程。譬如图中1是OV5640的像素空间,2是开窗后得到的图像区域,3是平移后得到的结果(这里图中比较容易理解错误,平移只是移动开窗区域),4是将开窗区域压缩后最终输出的图像数据。
而要想最终输出的是摄像头中心的图像,我们只需要通过开窗和平移,让用于压缩的图像区域位于采集到的图像的中心地带即可。明白了方法,我们再来看OV5640的像素空间。在OV5640的数据手册中可以找到有关像素空间的描述
结合上下文可以知道,OV5640的像素空间中,只有红框这一部分是有效像素,也就是摄像头实际采集到的图像,其余部分则是黑边和虚拟像素。因此我们可以得出有效像素和像素空间的关系
而接下来我们要做的,就是在有效像素的中间,通过开窗和平移画出一个与最终输出图像分辨率呈比例的区域。以输出480P图像为例,输出分辨率为800*480,对应的,就可以在有效像素的中间开一个2400*1440的区域(取800*480的3倍,也可以是其他不超过有效像素空间的倍率)。从而我们可以计算出下图
此时,如果我们用坐标的形式来表示像素空间,便可以通过两个点来表示输出区域的位置
使用这两个点的坐标,配置OV5640摄像头的开窗、平移寄存器,即可实现镜头中心图像的输出。
|