2018年11月5日

用imagej加手機前鏡頭偵測脈搏






有很多手機app都可以利用手機的前後鏡頭來偵測脈搏,只要手指蓋住鏡頭,App可以自動偵測出脈搏。其原理是計算每幀影格的像素強度變化,可能做些濾波和數值處理。

其實好幾年前就想自己寫個程式來偵測看看,但是當時對於電腦視覺根本不熟,現在想想其實imagej就可以做處理了。

讀入影像
1.使用fiji,先在Help/Update..,更新imagej,然後在Imagej Updater的視窗左下角選擇Manager Update sites,勾選FFMPEG,然後Apply Changes。這會加入一個匯入mp4影像的外掛。安裝後重新啟動fjij



2.開啟fiji,在File/Import/Movie(ffmpeg),把拍攝的影片匯入成stack。
3.由於影片的前後不一定是需要的部份,比方說還沒拍到手指,或是手指已經離開。因此需要剪接stack。不過imagej對於stack內的slices刪除不是很好用(或者是說我還沒找到好方法),所以建議是用複製影格的方式來做,比方說第10影格到第90影格才是需要的部份,那就在Image/Duplicate...把要的影格複製出來成一個stack。

繪製像素強度變化圖(即脈搏圖)
1.利用方框選取工具,然後選擇Image/Stack/Plot z-axis profile,即可以畫出如下圖的脈搏圖




如果不嫌費工夫,也可以把stack在分離出不同色頻來分析,例如這個是分析R Channel的強度變化,雜訊會少很多。方法有點複雜
1.利用Image/Type/RGB Stack,可以把原始的stack分離出不同的色頻,然後再用Image/Stack/Plot z-axis profile來繪製。




同樣也可以分離出HSB,這個是亮度B( brightness )的圖



以下是處理過程的教學影片

2018年10月30日

用Imagej疊圖看水波干涉的腹線(antinodal line)

前幾天看到小p拿出他的兵器-做水波干涉實驗的兵器,錄製了一段影片。突然我想到我在這篇《imagej將時間資料視覺化》寫到imagej可以將時間資料濃縮,可以從中看出特別的時間資訊。

一時手癢就來把小p拍攝的影片用imagej疊圖分析看看。

1.先用youtube-dl把影片用mp4格式下載回來。
2.用fiji(特製的imagej)的file/import/Movie(FFMPEG)將mp4檔讀成stacks
3.用Image/Stacks/Z Project製作疊圖

以下分別是用Min intensity和standard deviation製作的疊圖






Min intensity是把影像中每個隨著時間變化的像素,用最小的數值(相當於最暗的)去疊出來。

而standard deviation的圖我是第一次用這疊,發現還蠻有趣的。疊出來的影像中,黑色的部份代表標準差很小,意思就是數值變動不大,所以在影片中沒什麼變化的點就會呈現黑色。而動得越厲害的部份,就會越彩色。所以左方的水波產生器顏色就很彩色。

把影片做成疊圖來分析,在看水波干涉時產生的腹線(antinodal line),如中央腹線、第一腹線、第二腹線等可是特別明顯呢。

2018年10月28日

使用imagej的Macro切割細胞與細胞追蹤



來自網友的這個提問,其實目的是要做細胞追蹤,要處理的是細胞分裂的影片。希望能將A細胞在每個影格都能定位出來,網友也提供了判斷邏輯。將第一影格的A細胞和第二影格的兩個細胞都做交集處理,看看和第二影格的哪個細胞交集的比較多,就可以找到第二影格的A細胞在哪。

由於之前沒有寫過類似的Macro,所以也看了幾次說明文件,還參考了其他人寫的Macro,總算是寫出來了。要處理這個問題之前,其實得先把細胞切割好,還好網友已經先切好了給我處理。



影片中用的Macro我貼在本文最後,使用前提是要用wand tool先點選一個細胞,加入ROI Manager之後,再去執行Macro。

雖然網友已經提供給我切割好的細胞輪廓,不過我也還是手癢想處理看看這個影片,想說有沒有辦法可以把細胞切割好,不過我試了好幾個方法都切不好。最後只好用半自動的方法來做。

方法是先手動在細胞分界處劃線,存成ROI,再用這個ROI去切割開細胞。具體的作法就看影片囉



*********************************


setBatchMode(true);
setAutoThreshold("Default");
width = getWidth;
height = getHeight;

n = getSliceNumber();



for (i=n; i<=nSlices-1; i++) {
//for (i=n; i<=n; i++) {
print("==========");
print("i=",i);
roiMan_n = roiManager("count");
print("roiMan_n=",roiMan_n);

run("Select None");
setSlice(i+1);

run("Analyze Particles...", "display add slice");
roiMan_n_new = roiManager("count");
print("roiMan_n_new=",roiMan_n_new);

//計算下一張Slice增加了多少個ROI
roi_add = roiMan_n_new - roiMan_n ;
print("roi_add=",roi_add);

roiManager("Show None");

AND_Big_area= 0; //預設取交集後的面積為零
AND_Big_area_n = 0 ;//預設取交集後的面積,最大的是第零個

for (j=1; j<=roi_add; j++) {
roiManager("Select", newArray(roiMan_n-1,roiMan_n-1+j));
roiManager("AND");
getStatistics(area);
print("j=",j,",area=",area);

//沒交集的面積會回報成整張圖片的面積,所以將回報面積設為0
if(area == width * height){
area =0;
}

if(area>AND_Big_area){
AND_Big_area = area;
AND_Big_area_n = j;
}
}
print("Big=",AND_Big_area_n);
print("AND_Big_area=",AND_Big_area);

//select biggest area and add the new ROI in the next slice
roiManager("Select", roiMan_n -1 + AND_Big_area_n);
roiManager("Add");

//delete all new ROI in the next slice
for (j=1; j<=roi_add; j++) {
roiManager("Select", roiMan_n-1+1);
roiManager("Delete");
}

}

resetThreshold();
setBatchMode(false);

使用imagej將影像中的維管束群組化

最近一個網友來信問到的問題,是和影像群組化有關的。這方向的問題也是很多提問的人會問到的,不如在影片中詳細解說一下,有此疑惑的也可以藉此練習看看。


就以下面這圖為例,大方塊和小方塊在做Analyze Particles時,會被視作是不同的兩個Particle,但是如果我們的需求是要把這兩個圈在同一個ROI,那應該怎麼做?



什麼時候會有這種情況呢?來看看這個例子,這是竹子維管束的圖片,右圖是進行threshold之後,維管束分離的樣子,而在分析的時候,我們需要將那些分離的小碎片視作是一個完整的Particle。


以下四部影片就是在介紹這些步驟

第一部影片:imagej 將分散的小區塊用二值化影像處理流程做群組1 二值化處理的功能說明
是進行二值化處理的教學流程,介紹erode、dilate等程序的作用

第二部影片:imagej 將分散的小區塊用二值化影像處理流程做群組2 一步一步說明
利用上述的二值化程序一步一步說明,如何將影像中分散的小顆粒在分析時處理成一個完整的部份。


第三部影片:imagej 將分散的小區塊用二值化影像處理流程做群組3 用程式碼加快處理流程
將第二部的步驟化處理程序寫成Imagej的Macro程式碼。程式碼的檔案我放在雲端硬碟,文字我也貼在本文的最後。



第四部影片:imagej用Macro將影像的ROI都各自存圖
將分析後的ROI各自存成圖,然後再組成一個Montage
結果會如這張圖

程式碼比較簡單一些,我直接貼在這邊
***********************
path = "/home/shawn-pc/桌面/crop/";
//path="c:/users/user/Desktop/crop/";
fileTitle=getTitle; 

for (i=0; i<roiManager("count"); ++i) {
    roiManager("Select", i);
    roiname = call("ij.plugin.frame.RoiManager.getName", i);
    run("Duplicate...", "title=crop");
    saveAs("Jpeg", path + roiname +".jpeg");
    close();
    //Next round!
    selectWindow(fileTitle);
}

***********************


第三部影片提到的程式碼,則是這樣
*************************
//input = "C:/Users/user/Desktop/roi/";
input = "/home/shawn-pc/桌面/imagej竹子維管束/roi/"

particle_size = "70-140";
particle_size_connect= "150-500";
particle_size_horseshoe = "30-200";
particle_size_fragment = "10-100";


particle_cir = "0.6-1.0";
particle_cir_01 = "0.0-1.0";


analy_string = "size="+ particle_size +" circularity="+ particle_cir +" show=Masks clear include summarize add";
analy_string_connect = "size="+ particle_size_connect +" circularity= " + particle_cir_01 +" show=Masks clear include summarize add";
analy_string_horseshoe = "size="+ particle_size_horseshoe +" circularity= " + particle_cir_01 +" show=Masks clear include summarize add";
analy_string_fragment = "size="+ particle_size_fragment +" circularity= " + particle_cir_01 +" show=Masks clear include summarize add";

function single(m){
run("Duplicate...", "title="+m);
run("Analyze Particles...", analy_string);
if(Table.size != 0){
//if ((Table.get("Count",Table.size-1)) != 0) { 
roiManager("Save", input + m +".zip");

selectWindow("0");
n=roiManager("count");
for(i=0;i<n;i++){
roiManager("Select", i);
setForegroundColor(255, 255, 255);
run("Fill", "slice");
}
}
n=roiManager("count");
for(i=0;i<n;i++){
roiManager("Select", 0);
roiManager("delete");
}
run("Select None");
roiManager("show none");
close("Mask of "+m);
close("Mask of 0");
close("Mask of Mask of 0");
close(m);

}

function connect(m){
run("Analyze Particles...", analy_string_connect);
run("Watershed");
single(m);
}

//=========================================


name=getTitle; 
run("Duplicate...", "title=0");
setAutoThreshold("Default");
run("Convert to Mask");

single(1);

connect(2);

//抓馬蹄形,單獨的
run("Analyze Particles...", "size=70-140 circularity=0.00-1.00 show=Masks clear include summarize add");
run("Close-");
single(3);

//抓馬蹄形,連在一起的
run("Analyze Particles...", analy_string_horseshoe);
run("Close-");
connect(4);

//抓碎片
run("Analyze Particles...", analy_string_horseshoe);
run("Close-");
single(5);

//抓更碎片
run("Analyze Particles...", analy_string_fragment);
run("Close-");
run("Dilate");
run("Fill Holes");
run("Watershed");
run("Erode");
single(6);


//抓更更碎片
run("Analyze Particles...", analy_string_fragment);
run("Dilate");
run("Fill Holes");
run("Erode");
single(7);




list = getFileList(input);
for (i = 0; i < list.length; i++){
roiManager("Open", input+list[i]);

}


selectWindow(name);
roiManager("show none");

roiManager("Show All without labels");


*************************

2018年10月12日

用在生態系的AR App介紹: WWF Free Rivers

昨天看到Apple網站上對新版本的iPad的廣告,特別強調了AR擴增實境的介紹。特別點進去看,看到了介紹幾款APP,然後我就試用了這個WWF Free Rivers。

這是WWF世界自然基金會出品的,簡單地說這個APP是個用AR方式帶你看一個模型裡發生的故事,本身互動性我覺得還好,沒有什麼特別的互動功能,但是能夠你讓你用上帝的視角去東看西看。

APP一開始先讓你設定模型的位置,你需要一張桌子(或是地板),然後你就決定模型要擺放的方向。這APP有中文介面,也有中文介紹,畫面就如同下面這樣,是個以河流為主的模型。不過陸域的設定其實是綜合的,看那裏面的動物,同時有熊、獅子、老虎、鱷魚還有白鱀豚...。大概是包含了非洲草原、熱帶雨林、三角洲等等之類的。



可以看看河流和周圍動物的之間的關係,或是人類怎麼利用河流,然後故事會進展到看到起雲降雨(這個場景用AR來看還蠻有意思的),接著就是蓋起水壩,看看水壩上游和下游有什麼不同,然後就是拆掉水壩再看看有什麼變化。蓋水壩是為了能源需求,所以場景中也加入了可以用風力發電來提供能源。












除了上述的場景外,也提供另外一個體驗,它像是你面向一個大展版,展板前方還有一些模型這樣。







我覺得這個APP在生態和環境的課程中應該可以使用看看,不過就不適合老師絮絮叨叨地介紹,應該是提供一個觀察提問的指引單,讓學生透過模型去看那些現象。

2018年10月8日

用QGIS取出海岸線的方法

最近一個網友來信問了問題,他想跟著做這篇文章的東西。
QGIS作透明的立體等高線地形模型

但是有個問題,取等高線的時候沒辦法直接取出等高線為0的線,其實也就是海岸線。

取不出那條海岸線的原因其實是因為圖檔中數值為0的地方為海,並不是海岸線。意思就是如果我們光看圖檔裡的數值,其實海洋的區域就是滿滿的0,而海岸線其實是一堆零和非零的數字交界的邊緣。

所以要取出海岸線就要換個想法來做,首先把所有有高度的地方(非零)都變成1,也就是做成二值化影像,然後將影像向量化,就可以取出海岸線的那條線了。

做法我也錄成影片啦


2018年9月27日

細胞熱縮片吊飾製作



去年參加工作坊做了微生物的雷射吊飾之後,當時就想了應該也可以放在課程中讓學生玩玩。只是製作流程和素材,就不會是使用雷射切割機和壓克力,畢竟是耗時又有成本,熱縮片應該是不錯的選擇。不過想著想著,材料也買了,但是就是放在那裡沒動作了。




前幾週看到永欽老師在臉書上貼文,就是讓學生以熱縮片製作細胞示意圖的課程,剛好我材料和課程也都剛好,所以就讓學生來玩玩吧。




這個課程適合在講完細胞構造,或是用顯微鏡觀察完動植物細胞構造之後。




製作熱縮片吊飾需要的工具如下,手機吊繩(賣熱縮片的網路賣家有些也有賣)、打孔機、剪成約5cm x 5cm的熱縮片(半透明,單面磨過方便上色),剪刀。另外還有熱風槍和玻璃杯是用來加熱用的。



繪圖工具有黑色油性筆和彩色色鉛筆



學生繪畫的素材包含課本的幾種細胞圖片(皮膜、肌肉、神經、紅血球)、動植物細胞模式圖、粒線體、葉綠體、顯微觀察的草履蟲、保衛細胞...等。先以鉛筆打底稿,再用油性筆畫輪廓,最後用色鉛筆上色。



用打孔機在圖片邊緣打一個孔,然後用剪刀把細胞輪廓剪下,但要注意打孔的位置要留多一些邊,避免縮小時邊緣會太窄。



將熱縮片放入玻璃杯中(我是使用燒杯),再用熱風槍加熱,只要幾秒就可以縮完成了,但是剛縮好的熱縮片會有點捲,所以要立刻倒出用物體壓平。完成後再用手機吊繩串在上面,讓學可以掛在鉛筆袋的拉鍊上。



以下就是學生的成果展示。紅血球



神經細胞



葉綠體和粒線體



紅血球


口腔皮膜細胞



肌肉細胞



精子



某某細胞



團藻



幾種細胞和胞器大集合



神經細胞

利用葉子和石頭訓練觀察能力

此活動的設計是源自去年十月參加的研習,我再依據自己的素材和需求而更改。

在科學方法的訓練上,觀察是非常重要的技能,而且還不是看看就好,必須是有目的有方向的觀察。

流程:
在這個課程裡,先帶學生進校園採集,要求採集一片葉子和一顆石頭,並要求大小都必須比手掌小(下回還得加上必須比一半的手掌大的要求)

回到教室後發下一張A4白紙,對折成四等分。先針對石頭進行活動,在上方的格子進行描繪。教師的指導語如下

  1. 先在紙上寫上班級做號姓名
  2. 在紙上畫下你的石頭
  3. 把同組的石頭放在一起,再用你的圖找出你的石頭
  4. 你可以在紙上再修飾你的圖,例如加圖加文字
  5. 同組成員的石頭和紙都收在一起,轉交給別組
  6. 請根據拿到的圖,找出對應的石頭,然後還給本人
  7. 請思考看看一張能夠找到主人的圖,應該有哪些特徵或敘述
建議在與其他人的石頭混和的階段,可以加上其他非同組或同班成員的石頭。例如一組只有四個人,應該只有四個石頭,但是教師可以另外投入幾顆無主石頭。



非生物的觀察後,接下來就是做生物的觀察,對象改成葉子,流程和前述的過程一樣。讓學生根據前面的經驗去增強對生物特徵的觀察與描述。但繪圖的位置改成下半部















當葉子和石頭都觀察後,接下來就是翻面在紙背後進行討論。題目為「在描述或繪圖時,有哪些特徵應該放進去?」要求學生寫出十個或二十個,並進行發表統整。

後半段的課程討論哪些特徵是主觀或客觀的,比方說漂亮、大,這些算是主觀特徵,而客觀特徵是長度、寬度、重量...等。而且為了描述精確,使用工具量化是很重要的,例如長度、面積等的物理量。更進一步可說明有些量化可以利用電腦來進行,例如使用imagej進行面積或顏色的量化。

2018年9月10日

使用imagej用色彩標註ROI Color Coder

這篇文章說明的是用imagej將不同選取區依照面積大小上色的功能。以下面附圖為例,看到面積最大的就用黃色標註,面積小的就用藍色標註。所以可以用肉眼觀察各種顏色去判斷面積大小,這在某些實驗結果的呈現上是很有用的資訊視覺化處理。




在imagej上怎麼做到呢?首先請使用fiji這個特製的imagej
點選Help/Update... ,等待程式自動更新後,出現manager update sites,勾選BAR就可以增加這個外掛了。

整個做法我錄製成影片說明,但是這邊還是以文字說明流程
1.欲分析的影像,要先測量出每個區塊的面積,並且要將區塊存在ROI manager裡。
2.開啟BAR/Annotation/ROI Color Coder即可標註。
*如果想要知道不同的LUT是怎麼樣,可以在Image/Color/Display LUTs裡看到所有的LUT


用desmos瀏覽器版做線性迴歸(畫趨勢線)

國中階段要做專題,畫出散布圖然後畫出趨勢線,是很常見的統計方式。
要做這件事,大家想到的大概比較多都是Excel上,或者Google試算表上也有,不過如果是在做實驗的當下,也許是沒有電腦的情況,那麼有沒有什麼工具可以快速驗證一下自己的實驗數據呢?

這件事有智慧型手機就可以了,不過用的不是Google試算表,而是DESMOS這個網站服務,雖然它也有app可以使用,不過我試用了,其實跟網頁版差不多,所以就用網頁版就行,即連即用,還不用安裝app,多麼方便。

圖中即為Desmos的線性迴歸功能範例,只要開啟網站直接修改表格數據就行了。




如果還想要手動加線也可以,以下我錄製一段影片說明Desmos如何做線性回歸

2018年9月6日

結晶偏光的厚度分析

前一陣子在科學maker社團裡在推自己做結晶顯微偏光觀察的活動,看到那些結晶偏光的顏色是在很奧妙,就很想多知道一些事情。剛巧,前陣子也同時被詢問了薄膜干涉的分析,所以就多了解了一些,想到正好可以用在分析結晶偏光圖,

這裡會用到一個色表,叫做Michel-lévy color chart,這本來是用在礦物結晶的分析。把岩石切磨成30µm的薄片,放在偏光顯微鏡下看顏色。既然知道礦物結晶在偏光顯微鏡下的干涉色,又知道礦物薄片的厚度,就可以對照出那種礦物的雙折射率,然後就可以推論那是什麼礦物。

作法:
1.先從縱座標找到礦物切片的厚度,比方說30µm就是0.03mm,可以從這些圖上找到從0.03mm畫出的水平線
2.從偏光顯微鏡裡看結晶的干涉色,假設是紅色接近藍色的顏色。就從剛剛的0.03mm找到和那顏色的交叉點
3.從那交叉點找到右上連接左下的斜線,往右上看去可以看到birefringence n1- n2,那個就是雙折射率。由於不同礦物結晶有不同的雙折射率,藉此就可以推論出結晶的成分。


知道這個方法後,反過來進行就可以幫助我們知道蔗糖結晶的厚度了。蔗糖結晶的作法很容易,準備飽和的蔗糖水,放在玻片上讓它自然乾燥,就會形成結晶。蔗糖是單斜晶系的結晶,也會有雙折射,然後我從這邊(https://ppt.cc/fVCIxx)看到蔗糖的雙折射率是0.032,再借用 社團的朋友 Chiachan Tsai的蔗糖偏光圖來用,對照一下Michel-lévy color chart。

先從birefringence(雙折射率)找到0.032那條往左下的斜線,然後在那條斜線上找到干涉色的顏色,就可以對照出那個結晶的厚度。比方說蔗糖結晶邊緣的灰白顏色,大約是0.01mm厚度,再往結晶中心方向看去的藍色,大約是0.02mm厚度。

有了這樣的知識,當你在看結晶的干涉色時,就可以感受到結晶的厚度了,而不單純只是看到漂亮的顏色。



後來我看到另外有板友 Jen-Yao Lin 發布了冰糖結晶縮時攝影,覺得可以拿來分析一些東西。

連結:(要加入社團才看得到)
https://www.facebook.com/groups/571073709717955/permalink/1071587466333241/?comment_id=1071643609660960&reply_comment_id=1071665616325426&notif_id=1535071375256708&notif_t=group_comment&ref=notif

影片裡是結晶的縮時攝影,我想到可以把這個影片處理分析出不同時序的厚度變化。

方式是把把每一幀影格裡AB這條線都切出來,再由上而下排列成一張新圖,就成了右邊的時序疊圖。

1.在這圖裡找任何一點,往下延伸看去,可以看到某一點隨著時間的干涉色變化。顏色的變化與結晶厚度有關,同樣顏色的點也代表同樣的厚度

2.觀察每條顏色構成的斜線,如果斜線彼此都平行,代表AB線上的每點結晶增厚速度一樣。如果不平行,就是增厚速度不同了。

3.顏色構成的斜線是直線,代表結晶速度一致,如果是線是彎彎曲曲,就是結晶速度不穩定。


拍拍中耳炎的耳膜長什麼樣,順道聊聊耳咽管是怎麼起源的?

哼!要能拍出這些照片也是要點運氣的呢(壞運)
事情是這樣的,大概是開學前幾天的研習被傳染了感冒,結果這感冒感很久啊,久到耳朵都覺得塞住了呢。

去看醫生時,醫生用耳鏡看了一眼,就說這是急性中耳炎。頓時讓我好奇起,到底看到了什麼?是否是耳膜上寫了「中二」二字?

回家之後,拿出以前買的工具-內視鏡,其實就是很迷你的webcam啦。三年前就拿來拍過一次耳膜,請見【手機延長鏡頭拍耳膜、會厭、唾液分泌】。這次再拿出來拍拍看,不過這次可以拍到中耳炎時的耳膜呢,怎麼感覺有點驕傲。

老樣子再說一次,這種內視鏡沒辦法調焦,所以只能模模糊糊地拍出這樣的影像。這張是左耳,就是中耳炎時的耳膜,膜後面有一根小骨頭-錘骨,看起來淹沒在水中了。看到膜後面的樣子,我就想該不會晃晃頭部就會有水跟著晃呢?結果並沒有。



這是右耳,健康的耳膜,錘骨就好好地放在耳膜後面


既然得了中耳炎,總是要趁機多了解一下它,中耳炎的發生和耳咽管有關,耳咽管顧名思義就是一條連通耳和咽部的管子,最常感受到它存在的時候,就是外界壓力改變的時候,像是搭車上高山或是下山,或是搭飛機,甚至是嚼著口香糖過高鐵的隧道時。

想像一下這個狀況,你在平地是一大氣壓的環境,你的中耳腔室也是一大氣壓,而耳咽管平常這個管子是關起來的。所以你搭車上高山的時候,就是帶著一大氣壓的中耳腔室,但是到高山時,外界壓力變小了,假設是0.9大氣壓好了,這時候中耳腔室壓力比較大,耳膜就會往外鼓起來,然後你就會覺得不太舒服。這時候怎麼解決這個問題呢?只要耳咽管打開來就好,讓中耳腔室內的壓力和外界一樣就行,不然就是拿針把耳膜穿一個洞好了,但是這樣太蠢還是不要做比較好。

耳咽管要怎麼開?吞嚥和打呵欠時它就開了,所以你可以嚼口香糖或是張大嘴巴就行了。那麼前面有提到嚼口香糖過高鐵隧道又是怎麼一回事呢?因為高鐵隧道裡壓力變化太大,所以你耳咽管因為嚼口香糖而開開關關,耳膜就會忽膨忽凹。後來我就學會了,搭高鐵的時候,特別是台北到新竹一帶太多隧道了,就不要嚼口香糖啦。


講這些事是因為,我對耳咽管實在太好奇了,為什麼會有根管子就長在那邊,然後說它功能就是平衡中耳壓力,怎麼想都覺得裏頭應該還有什麼故事才對。

經過一路盤查後,發現果然故事很有意思!我先說重點,原來耳朵一開始不是用來聽的,是拿來呼吸的。怎麼會呢?

先來看看我們哺乳類的耳朵,聲音經由空氣震動傳到鼓膜,然後經過三小聽骨的傳遞與放大聲音之後再傳到內耳。三小聽骨所在的地方就是中耳,中耳和咽則是藉由耳咽管相通。

把演化的時間軸倒轉到爬蟲類,中耳裡就一個聽骨,也沒有外耳(有看過烏龜蜥蜴長了小耳多嗎?)。哺乳類的三小聽骨,科學家在十九世紀就知道那些其實來自爬蟲類上下頷的其他骨頭,(看這圖會清楚一點)

演化的時間軸再往前拉一些,看看這個中耳是怎麼來的,我從這篇nature的論文【Tetrapod-like middle ear architecture in a Devonian fish】裡讀到大致上可能是這樣的,原來早期的陸生度物是用耳朵呼吸的。中耳本來的起源是個用來呼吸的管道,是作為咽和外界氣體相通的通道,通道會接到頭骨的某處開口,開口處有瓣膜(valve)可以開閉。後來演化上的種種改變,裏頭多了聽骨和內耳連接,管道靠咽的部分就成了耳咽管,和外界交界的地方有了鼓膜,當然也就沒辦法呼吸了。



現生某些魚類也還是有這個氣門開口,比方說這種多鰭魚,影片中可以看到它會利用頭骨上的小洞來呼吸空氣。

在知道【中耳+耳咽管】本來起源就是呼吸外界氣體的通道之後,似乎有些事情也有道理了。回想一下前面提到的,耳咽管平時都關閉,只有在什麼時候會開啟呢?打呵欠和吞嚥。

打呵欠是什麼?就是口咽部擴大,讓氣體進入口咽部。吞嚥不只是吞東西進食道,同時也是把氣體往內運送。所以我們做這兩件事情,其實本來是要讓【中耳+耳咽管】吸氣吐氣的啊。打呵欠和吞嚥的肌肉是有關連的。

雖然中耳現在成了聽覺器官,但是關係上還是離不開呼吸器官啊。首先是感冒的上呼吸道感染,很容易就感染到我們古時候的呼吸管道-中耳。也因為這個關聯,所以「耳鼻喉科」才會是連在一起的啊。

我覺得應該也有人突然想到,阿如果耳朵本來是用來呼吸的,那鼻孔呢?答案是鼻孔本來只是個嗅覺器官,並不負責把外界氣體送到口咽部呼吸。鼻孔本來都只有開口在體表,沒有延伸到口咽部,不過因緣際會的情況下,鼻孔延伸到嘴巴裡,出現了內側開口(內鼻孔),然後鼻孔就轉型成為可以呼吸的器官了。

關於這點,這兩篇寫得很不錯。

由於對耳咽管太好奇了,後來找資料又看到了一篇論文講耳咽管演化造成的影響「Impact of Evolution on the Eustachian Tube」。

作者提出人類似乎是唯一有中耳炎的物種,而有中耳炎造成的聽力降低問題,應該會讓生病的個體早早被淘汰,因為聽不到捕食者的聲音所以就會被抓去吃掉。

所以作者提出一些假說,首先是小孩子是比較容易有中耳炎的,作者提出的觀點是小孩子會有中耳炎,是因為相較於其他靈長類,我們人類是早產的(出生之後不會自己動,還得親代照護),這種特徵當然讓我們的大腦有機會比其他靈長類發育得更好,但是問題就是耳咽管還沒長好,太短太軟,加上免疫系統也沒長好,所以就容易有中耳炎。

可是大人也有慢性中耳炎啊,作者的觀點是這是和「說話」這項特徵有關。我們的面部和喉嚨結構的改變使得我們得以「說話」,不過改變的肌肉也同時影響了耳咽管的收縮。

簡言之就是演化和中耳炎的關係,作者是這麼認為的:幼獸早產,使大腦得以繼續長大,但是其他器官沒有跟著長好,所以人類又獸容易有中耳炎。成獸有說話的能力,但是肌肉的改變也使得容易有慢性中耳炎。

另外也看到另外一篇要探討某些原住民族群有比較高流行率的中耳炎。
Evolution and Otitis Media: A Review, and a Model to Explain High Prevalence in Indigenous Populations」。作者的推論是如澳大利亞原住民,美洲原住民,因紐特人和毛利人,會有比較高的流行率,是因為十五六世紀歐洲殖民帶進了一些細菌,而這些原住民族群因為早就遷徙到那與後來的其他人類隔絕,所以沒有演化出抗那些細菌的能力。

2018年7月25日

用科學Maker社團工具,解剖觀察果蠅卵巢睪丸與精子

在「科學Maker」社團裡,江老師前些時候推出了新設計的「超級物鏡」(大約等於20x物鏡),然後也鼓勵大家用超級物鏡觀察精子
那時候我就想唉呦,觀察也不一定要人類的對吧,其實也可以看其他生物的啊。第一個我想到的是蕨類的,可是看看住家附近的,結果沒找到原葉體。後來看到回應裡Eredh Ereb 說據說果蠅的精子尾巴超長長長。

有些果蠅(Drosophila)的精子尾巴非常長,有種學名叫作 Drosophila bifurca 的二裂果蠅,擁有記錄上最長的精子,尺寸大到要以公分計算,一隻精子從頭到尾可以長達「5.8 公分」


喔喔,一隻果蠅還不到一公分,牠精子就5.8公分,這也太厲害了吧,真是想親眼看看啊。不過我得先一件一件事解決。
  1. 我可能找不到二裂果蠅,住家附近能找到的大概是黑腹果蠅(Drosophila melanogaster),我猜精子大概也很長。
  2. 我沒解剖過果蠅,不知道哪裡下刀。而且它睪丸長怎樣啊?
  3. 我得抓到果蠅啊
第二件事好解決一些,就上youtube找「fruit fly dissection」,可以看到解剖腦部卵巢睪丸的影片。那長怎樣呢?就查圖片 fruit fly ovary或是fruit fly testis,看一看大概就有個底了。

那果蠅哪裡來呢?當然就自己抓啊。得先準備好陷阱。其實我一開始笨笨的,想說弄個塑膠袋裝果皮果肉,然後等果蠅來,我再用蟲網撈起來。這樣的確有果蠅來,但是用蟲網卻抓不到啦,果蠅可是比蟲網的洞還小啊。

準備寶特瓶(我覺得四方型的茶飲罐不錯),把頭切開反插回去



斜立在牆邊,不是這樣就好喔,要記得放一些果皮果肉進去啊。



這四罐左至右分別是鳳梨果皮、臍橙和奇異果皮、香蕉果皮帶一小塊果肉、又是鳳梨果皮。這裡順便做個實驗,看看哪一種最容易吸引果蠅,結果啊,是香蕉呢。看到留在罐子裡的大部分都是母果蠅(還好還有一些公果蠅可以做實驗),它們千里迢迢來這邊,其實也順便找到產卵的地方,香蕉對牠們應該是很不錯的培養基吧。


接下來拿個大塑膠袋,把罐子放進去。在袋子裡把罐子打開,讓果蠅飛進袋子,我再把罐子拿到袋子外。裝了果蠅的塑膠袋,再綁起來放在冰箱冷凍庫幾十秒麻醉果蠅就可以進行實驗了。




整個解剖與觀察的過程,我剪輯在這部影片裡




這個觀察活動,我打算全程都使用「科學Maker」的工具來操作。首先上場的是微距鏡。加在手機鏡頭上的微距鏡,搭配科學積木組成的觀察架,可以把手機當作解剖顯微鏡來用啊,而且還可以全程錄影紀錄呢。工作距離足以讓我在鏡頭下操作鑷子,只是要練習一件事,就是這樣觀察是沒有立體感的,所以鑷子移動時可能會弄錯高度,夾不到東西。




這是母果蠅

解剖之後


卵巢的顯微圖,規律的美感還蠻特別的。我查果蠅卵巢的圖時,看到很多人都會用果蠅卵巢來做美美的科學攝影,看一下這搜尋結果


接下來就是雄果蠅了,腹部尺寸和顏色和雌果蠅不同,在挑的時候,肉眼就可以分辨出來了。而在顯微鏡下還可以用性梳來分辨(長在第一對前足的跗節上)


挑出來的卵巢


我不知道有什麼比較好的方法可以把精子從睪丸裡弄出來,所以我是用鑷子挑破或是用蓋玻片壓破。在youtube上看到有人拍攝的精子都會動得很厲害,不過我看到的都安安靜靜的,不知道哪個環節有問題啊。

畫面中央的一團捲捲的就是精子,可以看到頭部


這在超級物鏡下觀察的一團捲在一起的精子(尾巴這麼長,如何游泳不互卡?)


這是睪丸的一部分,可以看到睪丸裡頭的精子尾巴喔


總結一下,科學Maker的工具真是不錯,即使沒有實驗室用的解剖顯微鏡、複式顯微鏡也可以進行許多科學實驗,即便是這種小小昆蟲的解剖觀察精子也行。

有興趣的就臉書找社團加入,每隔一段時間就有工具贊助的活動。

你可能對這有興趣

Related Posts Plugin for WordPress, Blogger...