Wednesday, March 1, 2017

Zernike Polynomial


My lovely Zernike polynomial subplots that are arranged in a triangle shape 😊



Sunday, January 8, 2017

Love the small woods from my window 😇


Winter

Summer

[TBC]

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}$ 

Under paraxial approximation, we have

$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.

5. Depth of Field
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.              

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:
  • 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\'
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 atPropoertie Pages\Common Properties\General\Output DirectoryNote: 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.