跳至主要内容

【转】相机的快门

快门的概念

快门是调节曝光的计时设备。它的作用是使光线通过镜头在底片(或电子感光材料)上得到适当时间的曝光,并使被摄体在瞬间结成清晰影像。

快门的动作以不同等级的速度计算,以秒为单位。其等级一般由2s、1s、1/2s、1/4s、1/8s、1/15s、1/30s、1/60s、1/125s、1/250s、1/500s、1/1000s等组成(还有一些高速或低速快门,其两端取值范围更大)。这里所列的快门速度,逐级相差一倍。例如1/2s比1/4s的进光时间多一倍,1/125s比1/60s的进光时间少一倍。(和上一讲介绍的光圈值逐渐差倍是一样的)


快门的分类

快门可以按照不同的标准分为不同的类型

1、按启动方式可分为机械快门电子快门

2、按操作方式,可分为T门B门

  使用T门,按一下即开,如欲关闭,需再按一下。(这类快门常使用在慢速快门上,普通相机一般没有这个功能)

  使用B门,手指按住不放,快门开启,手指放开,快门即关闭。

  

  六、景深

  我们在观看别人的摄影作品时,有的照片前后都十分清晰,可以看得很远。有的照片前景清晰,背景模糊。有的照片则背景很清晰,前景模糊。这些效果都是如何实现的呢? 靠景深,我们前面再介绍光圈的概念时提到这个概念,它不像光圈或者快门,是可以看到的实物,所以理解起来有一定的难度。

什么是景深

照相机拍摄景物,物体处于高度、宽度、深度的三维空间中。被摄体有远近、高低、深浅之别。人的眼睛观察景物,要同时把远近不同的对象都看清楚是不可能的,但眼睛的调节机能十分灵敏,它可以根据景物所在的不同位置快速进行调焦活动,在极短的时间内做到一目了然。摄影镜头不具备这种灵敏性,但又不可能通过多次调焦来分别处理每一个景物。用什么办法来解决这一矛盾呢,主要靠摄影中的景深原理来实现。所谓"景深",也就是能在胶片上形成清晰影像的景物深度的简称。也可表述为:被摄景物的聚焦点前后能被纪录的较为清晰的范围。

以下的示意图比较清楚的说明了大景深和小景深的区别:

   如果你对以上的示意图还不明了,那么再看以下两幅图,应该就明白大景深和小景深的区别了,其中左边是大景深,整幅图的前后都很清晰,而右边的图是小景深,只有前景的人比较清晰。


景深大,前后都清晰


景深小,只有精确对焦的部位清晰

景深的原理我们拍摄的对象如果是一幅平面的画,那么胶片上就结成一个清晰的像。事实上,我们平时所摄的景物处在三度空间中,物体离镜头有远有近,当某一点清晰,其他部位就会模糊。因此,景深关系到主要被摄体在照片上是否清晰。照片清晰度的标准主要与分散圈直径的大小有关。所谓分散圈就是被摄体上的光点透过镜头在胶片上聚成焦点,但这个会聚的小光点是一个极小极细的圈,这种"圈"称为分散圈。分散圈的粗细就是镜头会聚成影纹的粗细。被摄体有远近,物体上的光点不都是正好结聚在焦平面上,而是落在焦平面的前面或后面,这样分散圈粗了,说明分散圈直径大了,影像就变得模糊了。所以,景深原理在摄影造型中具有十分重要的作用。景深的作用1、表现景物的深度:在一幅照片中,把景物的高度和宽度表现出来十分容易,要把景物的立体形态表现出来就必须运用景深。比如以下的天安门图,如果从正面拍摄,仅能表现其高大和开阔;但从侧面拍摄,就能产生立体形态。此时必须运用景深原理。一般来说,表现景物的纵深感宜用较大景深。(即使前后较大范围内都能比较清晰)

评论

此博客中的热门博文

【转】VxWorks中的地址映射

在运用嵌入式系统VxWorks和MPC860进行通信系统设计开发时,会遇到一个映射地址不能访问的问题。 缺省情况下,VxWorks系统已经进行了如下地址的映射:   memory地址、bcsr(Board Control and Status)地址、PC_BASE_ADRS(PCMCIA)地址、Internal Memory地址、rom(Flach memory)地址等,但是当你的硬件开发中要加上别的外设时,如(falsh、dsp、FPGA等),对这些外设的访问也是通过地址形式进行读写,如果你没有加相应的地址映射,那么是无法访问这些外设的。   和VxWorks缺省地址映射类似,你也可以进行相应的地址映射。   如下是地址映射原理及实现:   1、 地址映射结构 在Tornado\target\h\vmLib.h文件中 typedef struct phys_mem_desc { void *virtualAddr; void *physicalAddr; UINT len; UINT initialStateMask; /* mask parameter to vmStateSet */ UINT initialState; /* state parameter to vmStateSet */ } PHYS_MEM_DESC; virtualAddr:你要映射的虚拟地址 physicalAddr:硬件设计时定义的实际物理地址 len;要进行映射的地址长度 initialStateMask:可以初始化的地址状态: 有如下状态: #define VM_STATE_MASK_VALID 0x03 #define VM_STATE_MASK_WRITABLE 0x0c #define VM_STATE_MASK_CACHEABLE 0x30 #define VM_STATE_MASK_MEM_COHERENCY 0x40 #define VM_STATE_MASK_GUARDED 0x80 不同的CPU芯片类型还有其特殊状态 initialState:实际初始化的地址状态: 有如下状态: #define VM_STATE_VALID 0x01 #define VM_STATE_VALID_NOT 0x00 #define VM_STATE_WRITA

【转】cs8900网卡的移植至基于linux2.6内核的s3c2410平台

cs8900网卡的移植至基于linux2.6内核的s3c2410平台(转) 2008-03-11 20:58 硬件环境:SBC-2410X开发板(CPU:S3C2410X) 内核版本:2.6.11.1 运行环境:Debian2.6.8 交叉编译环境:gcc-3.3.4-glibc-2.3.3 第一部分 网卡CS8900A驱动程序的移植 一、从网上将Linux内核源代码下载到本机上,并将其解压: #tar jxf linux-2.6.11.1.tar.bz2 二、打开内核顶层目录中的Makefile文件,这个文件中需要修改的内容包括以下两个方面。 (1)指定目标平台。 移植前:         ARCH?= $(SUBARCH) 移植后: ARCH            :=arm (2)指定交叉编译器。 移植前: CROSS_COMPILE ?= 移植后: CROSS_COMPILE   :=/opt/crosstool/arm-s3c2410-linux-gnu/gcc-3.3.4-glibc-2.3.3/bin/arm-s3c2410-linux-gnu- 注:这里假设编译器就放在本机的那个目录下。 三、添加驱动程序源代码,这涉及到以下几个方面。(1)、从网上下载了cs8900.c和cs8900.h两个针对2.6.7的内核的驱动程序源代码,将其放在drivers/net/arm/目录下面。 #cp cs8900.c ./drivers/net/arm/ #cp cs8900.h ./drivers/net/arm/ 并在cs8900_probe()函数中,memset (&priv,0,sizeof (cs8900_t));函数之后添加如下两条语句: __raw_writel(0x2211d110,S3C2410_BWSCON); __raw_writel(0x1f7c,S3C2410_BANKCON3); 注:其原因在"第二部分"解释。 (2)、修改drivers/net/arm/目录下的Kconfig文件,在最后添加如下内容: Config ARM_CS8900    tristate "CS8900 support" depends on NET_ETHERNET && A

【转】多迷人Gtkmm啊

前边已经说过用glade设计界面然后动态装载,接下来再来看看怎么改变程序的皮肤(主题)     首先从 http://art.gnome.org/themes/gtk2 下载喜欢的主题,从压缩包里提取gtk-2.0文件夹让它和我们下边代码生成的可执行文件放在同一个目录下,这里我下载的的 http://art.gnome.org/download/themes/gtk2/1317/GTK2-CillopMidnite.tar.gz     然后用glade设计界面,命名为main.glade,一会让它和我们下边代码生成的可执行程序放在同一个目录下边     然后开始写代码如下: //main.cc #include <gtkmm.h> #include <libglademm/xml.h> int main(int argc, char *argv[]) {     Gtk::Main kit(argc,argv);         Gtk::Window *pWnd;        gtk_rc_parse("E:\\theme-viewer\\themes\\gtk-2.0\\gtkrc");       Glib::RefPtr<Gnome::Glade::Xml> refXml;     try     {         refXml = Gnome::Glade::Xml::create("main.glade");     }     catch(const Gnome::Glade::XmlError& ex)     {         Gtk::MessageDialog dialog("Load glade file failed!", false,       \                                   Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK);         dialog.run();               return 1;     }         refXml->get_widget("main", pWnd);     if(pW