My lovely Zernike polynomial subplots that are arranged in a triangle shape 😊
Xiaopeng's blog
Wednesday, March 1, 2017
Saturday, November 5, 2016
Thursday, October 13, 2016
Numerical Aperture vs. F-Number
Numerical Aperture and F-Number(or focal ratio) are unit-less numbers. They describe the angle extended by the diameter of a lens. These numbers characterize the resolving power, depth of field of a lens, as well as how much light it could collect.
1. Numerical Aperture
The numerical aperture of a lens is defined as
$NA = nsin\theta$
where $n$ is the refraction of index of the mediumi in which the lens is placed (1.0 for air, 1.3 for water, 1.52 for typical immersion oil). $\theta$ is the half cone extended by the lens.
2. F-Number
The F-number (or focal ratio) of a lens is defined as
$N = \frac{f}{D} $
where $f$ and $D$ are focal length and diameter of the lens respectively. As can be seen, the definition of NA associates with the index of the refraction of the medium in which the lens is working, while F-number does not. Therefore, numerical aperture is commonly used in scientific scenario, i.e. microscopic objective lens, which may work in different medium. F-number is more widely used in general photography, which more likely takes place in the air.
3. Numerical Aperture and F-Number
Noticed that
$tan\theta=\frac{D/2}{f}=\frac{D}{2f}$
$NA = nsin\theta=n\left(arctan(\frac{D}{2f})\right)\approx \frac{nD}{2f} = \frac{n}{2f/D} = \frac{n}{2N} $
For the special case, where the lens is placed in the air, last equation can be simplified into
$NA = \frac{1}{2N}$
4. Resolving Power
The fundamental resolution limit of an optical system is due to diffraction. In a diffraction limited system, the smallest angular separation two objects can have before they blur together is given by Rayleigh criterion as:
$sin\theta=1.22\frac{\lambda}{D}$
where $\lambda$ is the wavelength. The separation of the two objects in image (plane) can be expressed as
$r = 1.22\frac{\lambda f}{D}= 1.22\lambda N = 1.22\frac{\lambda}{2NA}$
This also gives the radius of smallest spot size that can be distinguish in a diffraction limited system
For a given wavelength, the ability of an imaging system in resolving details is limited by the diameter of the aperture(lens). The larger the aperture is, the smaller the diffraction spot size is, thus finer the detail can be distinguished in the image plane.
For high numerical apertures lens, depth of field is determined primarily by wave optics, while for lower numerical apertures, the geometrical optical circle of confusion
$d_{total} = d_{wave}+d_{geom}$
$=\frac{\lambda \cdot n}{NA^{2}} + \frac{n}{M \cdot NA}r$
where $M$ is the magnification factor of the lens.
$=\frac{\lambda \cdot n}{NA^{2}} + \frac{n}{M \cdot NA}r$
Saturday, September 10, 2016
Tuesday, May 13, 2014
Course Project: Mobile Panorama Stitching
Come check out our project page, efficient seamless panorama stitching :D
RIT Panorama App
The app includes following features:
RIT Panorama App
The app includes following features:
- Pre image selection to ensure adequate overlapping
- Basic stitching pipeline based on OpenCV
- Optimal color correction, seam finding, and blending.
- Real time preview
Saturday, June 15, 2013
Setting up OpenGL with Visual Studio
1. place dependencies to system folders
copy header files into C:\Program Files(x86)\Windows Kits\8.0\Include\um\gl
copy lib files into C:\Program Files(x86)\Windows Kits\8.0\Lib\win8\um\
copy dll files into C:\windows\SysWOW64\
By placing dependencies into system folders, one doesn't have to specify directories from Visual Studio side. However, if you wanna run your project at any place without messing up the system folders, try the procedure below.
2. place dependencies to arbitrary folders
Assuming header, library, and binary files(.dll) were placed in an arbitrary folder, i.e.
header and lib were placed in 'C:\Project_Folder\Dependencies\gl\'
binaries were placed in 'C:\Project_Folder\Dependencies\gl\bin\'
header and lib were placed in 'C:\Project_Folder\Dependencies\gl\'
binaries were placed in 'C:\Project_Folder\Dependencies\gl\bin\'
Here is how to set up these directories with visual studio
(1) header and library
header: Propoertie Pages\VC++ Directories\Include Directories\
library : Propoertie PagesVC++ Directories\Library Directories\
(2) linker
Linkers can be specified through
Property Pages\Linker\Input\Additional Dependencies\
or added in the code as
#pragma comment (lib , "glew32.lib" )
#pragma comment (lib , "freeglutd.lib" )
#pragma comment (lib , "glu.lib" )
#pragma comment (lib , "glut.lib" )
#pragma comment (lib , "glut32.lib" )
(3) binary
In order to have your application run smoothly, the OpenGL binary files have to be placed in the same folder with your application(.exe). You may copy OpenGL binary files into each of the output folder of your project, or you could switch the project output dir to where the OpenGL binaries located. The output dir can be specified at: Propoertie Pages\Common Properties\General\Output Directory. Note: end the directory with a trailing slash, or VS will throw a warning.
The whole procedure can be done through project properties page for each single project. This can also be completed at View\Property Manager to avoid repeating the same setup for different projects. Once directories were added through property manager, the properties will be applied to all projects automatically.
Subscribe to:
Posts (Atom)