時逢『潤六月』,今年『炬雙明』,將『見微知著』乎?
雲南地方有多個民族 ── 彝族、白族、納西族… ── 他們有一個傳統的節日,叫做『火把節』,又有稱作『星回節』的,節期一般是在農曆的六月二十五日。由於許多『考古』上的新發現,以及一些學者對『夏』『商』『周』斷代的『考據』之追求,於是許多新的看法與觀點紛紛的出爐。或許有一天人們果真能解開『伏羲卦象之謎』!『龍』『鳳』何指?果有『麒麟』乎??從陳久金之《中國古代的天文與曆法》與何新的《諸神的起源》這兩本書的說法看來,其實陰陽五行起源的甚早,事實上是一種上古時期的『十月曆』之歷法。
為了避免『真假』『有無』『先後』…等等論斷爭議,作者想說的是,如果『西方』的學者經過多年的努力漸漸解讀了好些『古埃及象形文字』,又慢慢的剝開了『金字塔之謎』,那麼『東方』之學者也會一樣。只要本著『科學精神』去實事求是就好了。假使從人類學的觀察來講,『語言』是先於『文字』的,『概念』的表達當在更其後。有人說夏代是崇拜『太陽神』的?又有人講甲骨文的『夏』字也說著同一件事?所謂萬卷書中有『千絲萬縷』,求同存異的『抽絲剝繭』,因著一個時代總不會只有『一人』、『一事』和『一物』,又常須與其他民族『往來』,求其共相也許終會有『水落石出』的一天。
如果說商代甲骨文已有『十天干』和『十二地支』,龜卜上用『六十甲子』以紀時,商王很多用『天干』為名,那麼『后羿射日』與『嫦娥奔月』的傳說,很可能是驚天動地神話了的『歷法變革』︰
傳說堯時,十日並出草木枯亡,又有猰貐、鑿齒、九嬰、大風、封豨、修蛇等等惡獸四方作怪,后羿受堯之命去除惡獸並使射九日,為民除害。……又說后羿之妻為嫦娥,后羿因希望永世能『執子之手, 與子偕老』,求『不死藥』於西王母處,共得了『兩顆』。不知怎的嫦娥卻是乘著后羿外出,獨自將藥全吃了,就飄飄然的飛向了月宮。……其後或聞,她為了再返還人間,一直叫著月兔搗藥!!
這個『日月之戀』是否已然大『明』於天下,作者不得而知;或有人將要說︰
難怪今天日月總不愛相見,祇會之於朔望。
,恐有人又以為,甲骨文上早有的『十二生肖』,自是出自『這個緣故』!!
─── 摘自《火把節》
恰合介紹『立體顯微』也!
Thursday 2:30 p.m.–2:45 p.m.
HoloPy: Holograpy and Light Scattering in Python
Tom Dimiduk, Rebecca Perry, Vinothan Manoharan
- Audience level:
Description
Digital holography microscopy is a powerful tool for fast 3D imaging of soft matter systems. However, making measurements from holograms requires special computation. HoloPy is a set of tools for reconstructing and fitting to holograms. It also includes tools for computing light scattering, setting up inverse problems, and working with images and metadata.
Abstract
Digital holographic microscopy is fast and powerful tool for 3D imaging. Holography captures information about a 3D scene onto a 2D camera using interference. This means that the speed of holographic imaging is limited only by camera speed, making holography an ideal tool for studying fast processes in soft matter systems. However, making use of this encoded information requires significant computational post processing. We have developed and released HoloPy, a python based tool for doing these calculations.
The traditional method for extracting information from holograms is to optically reconstruct by shining light through a hologram to obtain an image of the recorded scene. HoloPy implements the digital equivalent of this, numerical reconstruction, in the form of light propagation by convolution. This is a fast technique based on fast Fourier transforms, which effectively allows refocusing a holographic image after it is taken.
For systems where a detailed scattering model is available, Lee and coworkers showed that it is possible to make more precise measurements by fitting a scattering model to a recorded hologram [1]. We have extended this technique to clusters of spheres [2][3] and to non-spherical particles [4]. HoloPy implements all of these fitting techniques such that they can be used with a few lines of python code. HoloPy also exposes an interface to all of its scattering models compute light scattering of microscopic particles or clusters of particles for other purposes.
HoloPy is open source (GPLv3) and is hosted on launchpad. HoloPy uses Numpy for most of its manipulations, though it calls out to Fortran and C codes to compute light scattering. HoloPy also includes matplotlib and mayavi based tools for visualizing holograms and particles.
[1] Lee et.al., Optics Express, Vol. 15, Issue 26, pp. 18275-18282 (2007)
[2] Fung et. al., JQSRT, Vol 113, Issue 18, pp. 2482-2489 (2012)
[3] Perry et. al., Faraday Discussions, Vol 159, pp. 211-234 (2012)
[4] Wang et. al. JQSRT, (2014)
Manoharan Lab
Soft matter, biophysics, and optics
Harvard John A. Paulson School of Engineering and Applied Sciences
Department of Physics
Holographic microscopy
We use a fast imaging method called holographic microscopy to watch self-assembling systems. In a holographic microscope, the sample is illuminated by laser light, and the resulting image (or hologram) can be used to determine the 3D structure, position, and orientation of a microscopic sample. We build new holographic microscopes and develop software to analyze the holograms.
An introduction to holography
Dennis Gabor developed holography in the 1940s as a way to improve the resolving power of electron microscopes. However, his ideas apply to imaging with any coherent source. With the development of lasers in the 1960s, it became possible to do holographic recording and reconstruction with visible light and photographic film. Later, when CCD and CMOS cameras arrived on the scene, holograms could be recorded digitally. Today, with high-speed computers, we can not only record holograms digitally, but also reconstruct them digitally as well.
To understand holography, we need to consider the wave nature of light. At any point in space, a light wave can be described by an amplitude and phase. Whereas a conventional photograph captures the intensity of light reflected or scattered from an object, a hologram can capture both amplitude and phase. This is because the hologram is recorded by using two light beams, one of which (called the object beam) is scattered from the object, and other (called the reference beam) is aimed at the camera. If the two waves are coherent (meaning the phase is well-defined at each point in space), they can interfere, or beat, with each other to produce interference fringes, like this:
In the picture above, the small blue particle is illuminated by the red beam. It scatters light into an object beam, shown as a cone radiating from the sphere. That object beam interferes with the red beam to produce a fring pattern, shown on the right side of the image.
The fringes encode information about the phase of light and, implicitly, about the position and structure of the object. That information can be recovered through reconstruction. The simplest way to recover the 3D information is to record the hologram as an intensity pattern on a camera. If, say, we take the image and print it on photographic film, we can then shine light back through it. The hologram will diffract the light so that an image of the object will become visible:
This can most easily be understood if one imagines recording the hologram of a spherically scattered wave (like the light scattered from a microscopic particle). If one interferes that spherical wave coming from the object with a plane wave, a pattern of concentric rings will be observed. These fringes will resemble a Fresnel zone plate. And, just like a Fresnel zone plate, the fringes will focus a plane wave illuminating it to a point.
In our lab, we build holographic microscopes, and we develop techniques for doing 3D reconstruction on a computer. Below are some of the techniques we use.
此處且列出 HoloPy GitHub 『原始碼』︰
Holography and Light Scattering in Python
HoloPy is a python based tool for working with digital holograms and light scattering. HoloPy can:
- Load images, associate them with experimental metadata, and visualize loaded or calculated images.
- Reconstruct 3D volumes from digital holograms
- Do Scattering Calculations
- Compute Holograms, electric fields, scattered intensity, cross sections, …
- From spheres, clusters of spheres, and arbitrary structures (using DDA)
- Make precise measurements by fitting scattering models (based on the above structures) to experimental data.
HoloPy provides a powerful and user-friendly interface to scattering and optical propagation theories. It also provides a set of flexible objects that make it easy to describe and analyze data from complex experiments or simulations.
The easiest way to see what HoloPy is all about is to jump to the examples in our user guide.
HoloPy started as a project in the Manoharan Lab at Harvard University. If you use HoloPy, you may wish to cite one or more of our papers. We also encourage you to sign up for our User Mailing List to keep up to date on releases, answer questions, and benefit from other users’ questions.
HoloPy is based upon work supported by the National Science Foundation under grant numbers CBET-0747625, DMR-0820484, DMR-1306410, and DMR-1420570.
以及『使用者指南』網頁︰
Loading Data
HoloPy can work with any kind of image data, but we use it for digital holograms, so our tutorials will focus mostly on hologram data.
Loading and viewing a hologram
We include a couple of example holograms with HoloPy. Lets start by loading and viewing one of them
import holopy as hp from holopy.core.io import get_example_data_path imagepath = get_example_data_path('image01.jpg') raw_holo = hp.load_image(imagepath, spacing = 0.0851) hp.show(raw_holo)
(Source code, png, hires.png, pdf)
The first few lines just specify where to look for an image. The most important line actually loads the image so that you can work with it:
raw_holo = hp.load_image(imagepath, spacing = 0.0851)
HoloPy can import any image format that can be handled by Pillow.
The spacing argument tells holopy about the scale of your image. Here, we had previously measured that each pixel is a square with side length 0.0851 microns. In general, you should specify spacing
as the distance between adjacent pixel centres. You can also load an image without specifying a spacing value if you just want to look at it, but most holopy calculations will give erroneous results on such an image.
The final line simply displays the loaded image on your screen with the built-in HoloPy show()
function. If you don’t see anything, you may need to set your matplotlib backend. Refer to Using HoloPy for instructions.
但思如樹莓派不能使用,豈不遺憾!!本著試誤法給了安裝參考︰
git clone https://github.com/manoharan-lab/holopy.git cd holopy/ sudo apt-get install python3-dev sudo apt-get install hdf5-helpers sudo apt-get install libhdf5-dev sudo apt-get install python3-pandas sudo pip3 install numpy sudo pip3 install numpy --upgrade sudo pip3 install Cython sudo pip3 install pyYaml sudo python3 setup.py install sudo apt-get install ipython3-qtconsole ipython3 qtconsole
與測試驗證結果◎
ipython3
pi@raspberrypi:~ $ ipython3 Python 3.4.2 (default, Oct 19 2014, 13:31:11) Type "copyright", "credits" or "license" for more information. IPython 2.3.0 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object', use 'object??' for extra details. In [1]: %matplotlib qt In [2]: import holopy as hp In [3]: from holopy.core.io import get_example_data_path In [4]: imagepath = get_example_data_path('image01.jpg') In [5]: raw_holo = hp.load_image(imagepath, spacing = 0.0851) In [6]: hp.show(raw_holo) In [7]: /usr/lib/python3/dist-packages/matplotlib/collections.py:571: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison if self._edgecolors == str('face'): In [7]:
ipython3 qtconsole