第一篇:全程自动对焦拍摄全高清视频的入门级单反
全程自动对焦拍摄全高清视频的入门级单反
D3100是尼康公司于2010年秋季推出的一款DX格式全新入门级数码单反相机(图1)。它的亮点在于,搭载了1080P全高清视频拍摄并具有连续自动对焦功能,可在拍摄后随机实现鱼眼、模型、彩色轮廓等创意功能。日前笔者有幸试用了这款相机,现将试用感受报告如下,与读者共享。
机身小巧便捷
D3100延续了尼康单反相机经典的设计,机身小巧,携带方便,重量仅为455克,是目前尼康单反系列中最轻巧的一款。尽管机身造型小巧,但操控键布局合理,握持手感没有轻飘和不舒服的感觉。
相机外观延续了尼康入门级单反相机的风格。最明显的变化是在机顶转盘周围加装了拨杆模式开关,能在单张、连拍、自拍和安静模式之间进行快速的切换,不必进入相机菜单设置(图2)。在机背方向键上方增加了独立的Live View(实时取景)拨杆开关、视频拍摄按钮,可以直接进入实时取景和视频拍摄,操作十分方便(图3);还新设了内置麦克采音孔等。总体来讲,D3100的操控性有了新的提高。
高感光度噪点少
D3100首次采用了一块尼康全新开发的DX格式1420万像素的CMOS传感器,图像处理器使用了新型的EXPEED 2,提高了相机的高感性能,感光度范围最高可扩展至ISO 12800。经过实拍测试,我认为D3100相机的噪点控制相当不错。感光度从ISO 100至ISO 3200,噪点变化不大,可满足常规需求,能拍出清楚的照片(图4组照)。
连续对焦给力视频拍摄
对于这款入门级单反相机,尼康为其注入了全高清1920×1080P、24fps(每秒24帧)的视频拍摄能力,能录制1080P全高清影片(单声道),也可以拍摄1280×720、30fps和640×424、24fps短片。相机每次最长可拍摄10分钟的视频。短片采用了MPEG-4 AVCHD/H.264的压缩模式。并在AF-F(全时伺服自动对焦)对焦模式下,无需半按快门钮就可以实现连续对焦视频拍摄。机身内置的影片编辑功能,可在相机上编辑和裁剪视频,使用相当方便。有些遗憾的是该相机没有设置立体声输入接口,只提供机内单声道录音。受风噪、对焦噪声的影响在所难免,也许这就是入门级相机刻意留下的标记。
操控简洁,创意有趣
D3100在对焦和曝光能力方面,使用了Multi-CAM 1000自动对焦模块。提供11点对焦,其中心对焦点为十字形对焦点,所有对焦点均由LED标记。D3100的11点自动对焦系统覆盖范围较广,使用时可灵活选择。中心对焦点以外的各个对焦点对焦精度比中心对焦点差一些,在较暗的环境中,有时会出现对焦迟滞现象。
作为入门级单反相机,D3100提供了6种场景模式,分别是人像、风景、儿童照、运动、近摄、夜间人像。而在曝光模式中,除常用的A、P、M、AUTO外,还添加了“GUIDE”(引导)模式。在引导模式下,相机系统界面增添了更多选项和辅助图像功能,使用者可按提示一步步地对相机进行拍摄设置,非常适用于入门级用户理解和操控相机,是活生生的一个电子随机操作指南。我认为此项功能只适合初学者平时学习相机使用,实际拍摄中用处不大。因为按照它的引导设置完相机参数,估计大多想拍的场景已经消失了。
值得一提的是,在D3100显示屏上经常可以看到一个小问号在闪烁,摁动机背问号标的键钮,就会显示当前某项参数设置可能不正确,提醒新手去调整它。这是一个相当人性化的设计,符合入门级相机的使用定位。
机身的背面配备了23万画点3英寸LCD显示屏,并能调节亮度,可以方便地查看照片、播放视频、实时取景。但作为新推出的新款相机,这个配置显得有些落伍和小气了。实用中,画面显示清晰度有些不够,有时无法通过显示画面判断合焦的准确性。因此,千万注意不要以它的显示结果来决定片子的删或留。
D3100的彩色操控界面加入众多形象图标,能在各种模式下提供简易模式引导,非常方便新手使用。为了便于使用,D3100机内内置了多款图像后期润饰处理程序。对于没有后期调片经验的新手来说,使用这样的机内自动图像处理方式,可能更加直观。笔者着重试用了其中比较有个性的修饰滤镜功能,如彩色轮廓、模型、以及鱼眼等功能。彩色轮廓(图5b)――就是直接输出影像的轮廓副本,还能手工着色,有点绘画的素描效果。模型(图6b)――直接输出一横条范围内清晰,横条外模糊的图像,横条位置可上下选择;图像有点玩具模型的效果,比较适合从上向下俯拍风景。鱼眼(图7)――能够将普通照片模仿成鱼眼镜头大视角并使画面中心外的部分产生扭曲变形。在鱼眼、透视控制等功能上,用户可根据需要,对效果自行调节变量。同时,D3100不仅提供了D-Lighting功能对图像的亮度、对比度、阴影等进行修饰优化,还增添了动态D-Lighting功能,使用者可以对已经摄影的图像进行大动态范围的调整。
套装镜头经济实用
D3100搭配的套机镜头是尼康AF-S DX 18-55mm VR。这是一款小巧的具备超声波对焦马达的防抖镜头,涵盖了常用的大部分焦段。尽管成像质量一般,广角端畸变比较明显,但能通过机内控制畸变的程序――自动失真控制功能加以改善。对于入门用户来说,它是一款经济实用的镜头。由于D3100不具备机身对焦功能,所以不能支持全部的尼康AF老镜头的自动对焦功能,但有合焦提示。笔者认为,随着尼康AF-S超声波对焦镜头的加速推出,这将是个不是问题的问题。
其他及总体评语
D3100在图像存储方面使用SD卡,支持SDHC和SDXC卡。电源采用了全新的EN-EL14可充式锂电池,容量为1030m/Ah,一次充电完毕可拍摄约500张照片。经过在东北地区寒冷的冬季气候条件下试用,笔者感觉这块电池在低温中失电较快,使用时需要注意电池的保温(图8)。尽管D3100存在一些不足或缺憾,但笔者认为这款相机的性能表现比较符合其入门单反的定位。其全程自动对焦拍摄全高清视频的功能、简单直观的操控性、较为出色的画质和时下比较流行的创意图片后期润饰,都属于当前单反相机的流行配置。该机具有很高的性价比,很适合家庭出游、初级摄影爱好者的使用,完全能够满足一般的人像、旅游以及扫街等的需要。
第二篇:全高清实时视频显示嵌入式系统设计与调试
实验名称
全高清实时视频显示
嵌入式系统设计与调试
课程名称
姓名学号
年级专业
嵌入式系统设计
彭嘉乔
3130104084
大三
电子信息工程
所在学院
电气工程学院 全高清实时视频显示嵌入式系统设计与调试报告
3130104084 彭嘉乔
心得体会:
我想了想,还是决定把心得体会放在这里。毕竟基础实验大家做的都是一样的内容,何况我们做的水平也就那样,Phase5还没有做完。但我的感想是独一无二的,不如把最有价值的部分排版到最前面。
如果让我直观总结下这22天小学期的感受,我会毫不犹豫地说:“累”。如果要具体点的话,“真的很累”。这种累,不仅是身体上的累,更是心累,大部分时候是一种深深的绝望。
我对这门课是有心理准备的。上课前我就看过往届学生写的报告,无一例外充斥着“大学最累的课”“大学生涯难度最高的课”“累得昏天黑地”这种话,然而我还是有着迷之自信。其实如果我不是有着迷之自信的话我压根就不会选这门课,毕竟我之前没有上过数字系统设计,没有任何与FPGA板开发有关的经验,对这门课的内容完全是两眼一抹黑。
这门课一开始是早上八点开始,到下午五点结束,后来才改成了早上八点半开始。最初我根本不适应这样的强度,而且由于这样改变了我睡午觉的习惯,导致我第一周每天回寝室后都先补觉睡到九点,再起来继续白天的进度到凌晨三点再睡觉,作息严重混乱。后面稍微调整过来了,回寝不需要补觉了,只是昏昏沉沉一晚上而已。
从Phase2第一次要求自己写代码开始我就感觉到了巨大的压力。因为没有上过数字系统设计,我压根就不会Verilog语言,得拿着数设的书从零开始自学,以致于连写个激励源文件都要折腾一天时间。这门课的玄学之处也从写这第一个testbench开始出现,我照着书上的例子一模一样的形式写的都运行不了。
当然这只算小儿科的,Phase2.3把之前的几个文件综合起来,本来分别检验都符合要求,综合起来后出现了严重的bug,仿真显示scl的输出有一半是高阻态,sda的输出始终为高阻态。即使将其强制赋值为1再输出仍然不行。我在i2c文件里通过注释掉其余语句逐句检验也发现不了问题。偶然间我发现,当注释掉与sda有关的一切,删掉sda的输出引脚后仿真显示scl正常,注释掉scl后sda仍然全为高阻态。我开始猜测是不是sda引脚出现了干扰,甚至去检查约束文件。为了这个bug我整整耽误了两天,最终在万念俱灰走投无路的情况下我干脆重建了工程把代码原样复制了进去,结果仿真就正常了„„
有趣的是重建工程前还可以生成bitstream文件,重建后就不行了。明明是一样的代码啊„„再花半天终于生成了bitstream文件,我也不知道怎么弄好的,然后烧录上去果然不能用,即使仿真波形和老师给的标准波形一模一样。干脆全部推倒重写吧。
这样的玄学在之后的实验中会一而再再而三地发生。同样的代码,重建工程复制进去就是截然不同的结果。同一个工程没有任何改动,重启下电脑就不能用了。同样的bitstream文件每次烧录显示都不同。一模一样的操作步骤在别人的电脑上行得通在自己电脑上就报错。不仅是我,其他同学也都发现了,人人都知道了重建大法好,出bug第一反应不再是去找原因而是先重建试试。想想以后我用的电子产品可能就是这样一群人用这样的方式做出来的,简直慌得要死。
除了玄学,很多时候一点小问题也会耽误我们一整天的时间。或者是数百行代码里的一句话,或者是软件的一个设置。在此不得不吐槽一下vivado和SDK都实在是太复杂太用户不友好了,如果老师不多教教软件的使用,告诉我们软件各个部分各种功能都是做什么的,只靠我们自己摸索实在是太难了。其实除了玄学问题我们真的没办法以外,大部分问题我们最终发现都是很简单的小问题,如果经验丰富的话很快就能解决,可让我们这些新手来自己解决的话往往无从下手,像无头苍蝇一样浪费非常多的时间。
整个小学期,我们可能只有5%的时间真正在写代码,70%以上的时间双眼空洞地盯着电脑屏幕,仰天长叹乞求上苍告诉自己究竟错在了哪里。当然上天不会回应,助教也不会。当我发现无论我问什么助教都会回答:“讲义上有自己好好看看吧”而我确定一定以及肯定我把讲义上的每一个字都看过了而且确实没有答案的时候,助教在我心中就已经不存在了。
虽然我可以理解老师和助教希望我们自己解决问题以提升能力积累经验的苦心,但是我质疑这样是否有效率。让高中生提前接触微积分他或许会感受到数学的美和神奇进而爱上数学,而换成个小学生只会感到枯燥厌烦。适当拔高确实可以考验打磨学生,拔得太高拔苗助长只是种折磨。如果在好几个关键时刻有过来人抬我们一手,稍微指点一下,我们的进度起码可以快一周,Phase5可能就做出来了,攀登到高峰看到最美的风景,创新实验也能做得更好。可实际上我们在很多没有意义的细节上浪费时间,向着看不见的敌人挥拳,收不到任何正反馈,仿佛身体被掏空一般难受。
我并不怕苦怕累,毕竟能考进浙江大学,吃不得苦高考就被淘汰掉了。可大多数时候我知道自己吃苦能换来什么,知道自己忙得有意义能忙出成果,但在这门课里大多数时候是“穷忙”,结果每天在电脑前忙个不停,却可能一整天都找不出bug原地踏步,没有任何充实的感觉,反而觉得异常空虚。
或许是作学生太久了变得娇惯了吧,觉得世间万事都该让着自己。幸好在我最烦躁最愤怒的时候被老师浇了一盆冷水,现在还记得特别深刻:“以后工作的时候,没人会问你遇到了什么问题,只会问你做出来了没有。”
这么一想大概也就释怀了吧。这个世界就是这么残酷啊,我确实可以找一万个理由来解释我为什么做得这么差,可还是掩盖不掉一个现实就是别人做出来了可我没有。没做出来就是没做出来,还是老实承认自己太菜吧。其实世间所有的不如意,都是自己不给力。
毕竟学渣是原罪。
以下是具体的实验过程。
Phase1、基于 Xilinx Vivado 的嵌入式系统设计入门实验。
Phase1是整个实验的入门,与其他实验相比,实验很简单,不过因为没有指导,需要自己摸索,所以,也是花了我们半天的时间。这次实验是对vivado软件的初步认识,如建立project,IP,sdk等等。
Phase2、设计 HDMI 控制器。
Phase2首先进行的是HDMI控制器的硬件设计,根据时序图得到hsync,vsync等信号和clk信号的关系,实验需要进行720p和1080p的设计,程序编写并不困难,但是由于对verilog语言的陌生,我和队友在testbench的编写上花费了较多的时间,后来经过上网找例子教程才明白,弄懂之后发现并不难,主要包括复位信号,时钟信号和输入信号,这些语句在不同的程序里大同小异,一次编写成功后,基本就掌握了testbench的编写。
下一节进行的是I2C总线控制器设计,以前曾经学习过I2C,所以我先是找了以前的I2C协议的程序,然后参考程序写出I2C协议,先是将频率转化为CLK_100K_A和CLK_100K_B,再利用二者的 | 或者&得到CLK_100K_SDA和CLK_100K_SCL,在这两个时钟下进行i2c_scl和i2c_sda的计算,最后经过仿真观察波形确定程序的正确性。
第三节是在前两节的基础上进行HDMI 显示测试图硬件电路设计。首先接触到的是yuv422编码方式,在理解这种编码方式上花费了一些时间,尽管如此,在之后还是出现了反色的问题。反色问题的原因是因为技术行数据写入了偶数行,使得yuyv的排列变成了yvyu,解决方案是地址整体加1或者减1。实验还是分为720p和1080p两部分,但是其实两部分差不多,所以我们为了节省时间,只做了和后面实验有关系的1080p部分。显示彩条和彩色砖块都是对地址进行划分。之后的显示小飞机需要从rom中读取数据,这一部分的步骤按照实验讲义进行,在rom的读取语句中有些困惑,经过询问同学,知道输入输出对应rom里用到的引脚便可。
在显示小飞机的实验中,图片出现了左右偏移的情况,最左侧一列为绿色,按照我们的想法,将loc_x地址加2进行调整,如果不够,再加2,然而加到8后最右侧一列已经出现明显偏移,而最左侧一列仍然是绿色,这让我们意识到,最左侧一列可能根本没有显示信号。进过检查代码,enable信号响应需要时间,由于在读取像素点信息时引入了enable信号,当扫到第一列的时候enable仍为0,导致第一列没有获得像素点信息。进行相应的更改,显示器上得以在每一处均有显示。最后经过合适的调整,使得显示不偏不倚。
Phase3、AXI-Lite 接口的设计。
Phase3 是从软件给出的AXI-Lite协议修改得到自己要用的AXI-Lite协议,封装成IP核添加到Block design中,利用cpu提供的150Mclk执行。这是我第一次接触到AXI协议,为了弄懂AXI-Lite协议,我阅读了讲义上提供的英文参考资料,因为对AXI协议没有基础,所以在阅读过程中比较吃力。在通读一遍后,对AXI协议有了简单的了解。从phase4.1中得到了zju_ip的AXI_Lite协议,尝试着去理解这个协议。AXI_Lite协议包括端口定义,各种信号和对register或者rom的调用。我们主要做的内容就是讲zju_ip中的register调用改为rom调用。在调用之前的I2C程序时,需要注意输入输出的匹配。
IP封装时,选择package current resource,完成封装后,就可以在Block design中直接调用创建的IP,选择自动连接,然后将输入输出引脚引出。Block design完成后,有时会发现IP核中的错误,需要对IP进行修改,可以直接找到IP的程序文件用记事本或其他阅读软件打开修改保存,然后在upgrade IP,然后generate outputs得到更新后的IP。直接在已创建好的IP上进行修改更新,比重新封装一个新的IP要简单快捷。
搭建好block design后,生成比特流文件并打开sdk,在sdk中编写软件,用cpu通过axi协议访问rom,对rom进行读写的操作。
Phase4、AXI-Full 接口的设计。
Phase3中用到的是axi slave,在phase4中用到的是axi master,master的程序代码与slave相比更加繁杂。在4.1提供了一份波形图供参考,我们通过波形图分析各个信号之间的关系。在信号的关系中,txn_request信号和axi总线的关系最为复杂,也最为重要。txn_request信号
sdk写完后进行烧录,出现了绿屏的现象,这是因为没有在sdk中写入elf文件,写入elf文件后在显示器上显示花屏,这是因为airbus.h文件没有正确的放入sdk中。在修改了一些错误后,终于在显示器上有了显示。
示器上显示出的大飞机图片出现了左右偏移的情况,且偏移的幅度很大。我们又开始进行漫长的debug过程。先是修改了地址位,结果大飞机却出现了雪花,急忙将地址为修改回来。后来,听从同学的意见,我们将fpga板子重启,重新烧录,在显示器上得到了正确的显示。
全高清数码相框的实验中,短学期已经将要结束,我们直接应用了老师提供的bmp.c和main.c代码,不过直接用这写代码在编译时不通过,问题出现在“f_mount(0,&fs);”一句,报错的原因是因为参数不够,打开“ff.h”文件查看f_mount的用法,并进行修改,编译得以通过。向sd卡里复制bmp图片,然后查到板子上,烧录后在显示器上没有显示图片,而在sdk中显示“airbus1 open success”和“It is not a bmp file”,出现这个问题的原因是因为main.c中的“sprintf(filename,“0:/bmp1080p/airbus%d.bmp”,j);”语句与sd卡中的bmp文件名airbus_1不匹配所导致,修改语句为
“sprintf(filename,“0:/bmp1080p/airbus_%d.bmp”,j);”bmp文件能够在显示屏上正常显示。这是出现的又一个问题只能显示前airbus_1.bmp至airbus_9.bmp这9张图片,这是因为文件名不能超过8个字符,我的解决办法是直接删掉airbus_9之后的图片并修改main.c中的for循环语句的循环次数,使得能够在显示器上循环显示9张图片。
Phase5 全高清摄像头视频采集
在完成phase4之后,已经到了短学期的末尾,所以整个phase5我们只是进行了GPIO口的实验部分。GPIO口在block design中添加,与scl和sda总线进行连接。GPIO引出的引脚可以自己设定如FPGA板子上的开关按钮,只要在xdc中进行标注,在sdk中说明即可。这样就可以实现硬件和软件的综合。