GoPiGo 小汽車︰格點圖像算術《色彩空間》時中︰全像術【四】

時逢『潤六月』,今年『炬雙明』,將『見微知著』乎?

雲南地方有多個民族 ── 彝族白族納西族… ── 他們有一個傳統的節日,叫做『火把節』,又有稱作『星回節』的,節期一般是在農曆六月二十五日。由於許多『考古』上的新發現,以及一些學者對『』『』『』斷代的『考據』之追求,於是許多看法觀點紛紛的出爐。或許有一天人們果真能解開伏羲卦象之謎』!『』『』何指?果有『麒麟』乎??從陳久金之《中國古代的天文與曆法》與何新的《諸神的起源》這兩本書的說法看來,其實陰陽五行起源的甚早,事實上是一種上古時期的『十月曆』之歷法

甲骨文夏

甲骨文 夏

甲骨文 十天干

甲骨文十二地支

十二生肖象形甲骨文图片

為了避免真假』『有無』『先後』…等等論斷爭議,作者想說的是,如果『西方』的學者經過多年的努力漸漸解讀了好些『古埃及象形文字』,又慢慢的剝開了『金字塔之謎』,那麼『東方』之學者也會一樣。只要本著『科學精神』去實事求是就好了。假使從人類學觀察來講,『語言』是先於文字』的,『概念』的表達當在更其後。有人說代是崇拜太陽神』的?又有人講甲骨文的『』字也說著同一件事?所謂萬卷書千絲萬縷』,求同存異的『抽絲剝繭』,著一個時代總不會只有一人』、『一事』和『一物』,又常須與其他民族『往來』,求其共相也許終會有『水落石出』的一天。

如果說商代甲骨文已有『十天干』和『十二地支』,龜卜上用『六十甲子』以紀時,商王很多用『天干』為,那麼『后羿射日』與『嫦娥奔月』的傳說,很可能是驚天動地神話了的『歷法變革』︰

傳說堯時十日並出草木枯亡,又有猰貐鑿齒九嬰大風封豨修蛇等等惡獸四方作怪后羿受堯之命去除惡獸並使射九日為民除害。……又說后羿之妻嫦娥后羿希望永世能『執子之手, 與子偕老』,不死藥於西王母處,共得了『兩顆』。不知怎的嫦娥卻是后羿外出獨自將藥全吃了,就飄飄然的飛向月宮。……其後或聞,她為了再返還人間一直叫著月兔搗藥!!

這個『日月之戀』是否已然大『』於天下,作者不得而知;或有人將要說

難怪今天日月總不愛相見,祇會之於朔望。

,恐有人又以為,甲骨文上早有的『十二生肖』,自是出自這個緣故』!!

─── 摘自《火把節

 

恰合介紹『立體顯微』也!

 

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:

Light scatters off a particle, and an interference pattern i.e. hologram is created.

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:

A reference beam propagating back through a hologram will be focussed to a point close to where the original object was

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)

../_images/show_example_holo.png

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