文章

目前顯示的是 十二月, 2019的文章

用imagej做曲率分析的原理與實作

圖片
因為有朋友的研究需進行物體的曲率測量,因此周末研究了一下到底怎麼做。 (急著想知道怎麼做的,直接到頁面最底下看。前面一大段都是原理和原理實作) 要描述一個曲線有多彎,會用到一個密切圓的概念,曲線上取三個點,三點可成一個圓(三點都在圓弧上)。三點非常靠近時形成的圓,就是曲線上該點的密切圓。 當曲線越「彎」,密切圓就越小,而曲線越「直」,密切圓就越大。一個超大的圓,大到極大,圓弧看起來就變成直線。就像地球超大,你看海面就是幾乎是水平的。 以下兩張圖,分別可以看出在這個函數的曲線上,不同點的密切圓大小不同。 那麼曲率要怎麼描述呢?可以用1/r來表示,r是密切圓的半徑。下圖的黑線處就是這個sin函數在各點的曲率變化。 上述的過程,可以看這部影片的演示 其實要分析物體的曲率變化,其實就是要用函數圖形去貼合要測量的部分,然後去分析函數的曲率變化。接下來就是函數怎麼找出來。 方法是弄出一些控制點,用這些控制點擬合出一個多項式函數。下面的影片演示的是用ggb的FitPloy來擬合數個點來產生函數,然後再對函數求出一階微分和二階微分,再用那些微分方程式算出曲率。看起來好難,但其實意外的簡單。 這個連結裡有求曲率的公式,也詳細說明了公式怎麼出來的。 如何通俗地理解曲率? 我也繼續以ggb為工具,實際計算出雞蛋的表面曲率 用數個點去找出曲線,不只一種方法。可以用貝茲曲線或是B-spine(B樣條曲線)來做。 貝茲曲線在向量繪圖軟體,如inkscape會用到。我自己以前只是會用,但是實際原理不甚清楚,這次趁著機會也下手實作了解一下。 以下影片是用ggb來實作貝茲曲線 本來也想實作B-spine(B樣條曲線),但是發現有一點複雜,可能以後用python來實作看看吧。樣條曲線的原理說明,這篇應該是最清楚的 簡單粗暴 B樣條曲線入門 寫了一大堆之後,終於要進入用imagej測量曲率的部分了。 這裡需要使用的plugin叫做Kappa,已經有人寫得非常清楚了 ImageJ实用技巧——曲率计算与拟合(插件篇) kappa 的github  https://github.com/brouhardlab/Kappa/tree/master/docs 這裡就放一段實作的教學影片吧

用imagej做熱像影像的衍射映射變形合成

圖片
直接先來看結果吧! 以下這兩張圖,一個是手機相機拍攝的影像,另一張是熱像儀(Seek thermal)拍攝的影像。兩張影像來自不同相機、不同角度、不同焦距。影像大小也不一樣。 熱像影像有物體的溫度分佈,而相機影像有物體的紋理和邊緣,如果想要同時擁有兩者的優點,就像下圖的影像,該怎麼做呢? 我們使用imagej就可以做到了。 以下是影片教學。我也同時以文字紀錄在下 首先將兩張待處理的影像用imagej開啟,在imagej上用multi-point tool在定位點上做標記。我是在拍攝前就先以錢幣定位,分析時就是用錢幣位置來定位。做影像定位的時候,要注意每個點的順序是有意義的,兩張圖的定位點要能互相對應。 定位好了,就選擇Plugin/Transform/Landmark Correspondences,注意Transformation class要選擇affine。 如此就可以將圖片變形一致了,如下圖 下一步,由於希望將兩圖合成時,由手機影像提供物體的邊緣和紋理,所以選擇手機影像檢測邊緣。方法是Process/Find edge 圖片就會成為這樣 接下來關閉其他圖片,只留下變形後的熱像影像和邊緣化的手機影像,然後將兩張圖片疊成一張stack。 方法  Image/stack/Images to stack 選項就用預設值就好 接著就可以做疊合 方法是選擇這個stack之後,選擇Image/stack/Z project Projection type選擇 Sum slices 這樣就可以做出精確疊合的影像了

用客製化調整的負片後像程式進行探究

圖片
前一篇【 python製作的負片後像GIF 】,我留下了一個問題:理論上紅色的補色是青色,但是在實際觀察上,看到的卻是淡淡的青色? 為什麼是這樣?我的答案是:背景顏色影響了你! 為了想讓這樣的疑惑成為一個能被探究的問題,我需要把這個負片後像中的許多變因,改變成可以調整的操縱變因,又為了考量到跨平台操作的簡便性,於是我使用HTML5的技術製作了這個程式,電腦或平板電腦上應該都能操作。 https://chihhsiangchien.github.io/afterimage/afterimage.html 你可以線上操作,或是右鍵下載回去,可以離線操作。它就一個檔案而已,沒有其他參照的檔案。其實它也在前一篇的同一個GitHub Repository裡 https://github.com/ChihHsiangChien/afterimage 你可以任意調整背景顏色,或是球的RGB顏色。執行速度也可以調整,不過目前有bug,速度調整後,會有一些球消失。 (以下只是程式截圖,不會真的動) 這個程式可以幫助你探究什麼事呢? 從最簡單的觀察開始,任意一種顏色產生的負片後像顏色,和原有顏色有什麼關係? 使用紅色的球,在什麼參數之下可以觀察到與理論相符的青色呢? 固定球的顏色之後,改變背景顏色,負片後像會發生什麼變化? 你觀察到的變化效果是「線性」的嗎?背景越淺效果就越好,或是其實有一個最佳背景值? 不同顏色的球,產生的負片後像顏色所需要的最佳背景值都相同嗎? 執行速度會影響觀察的效果嗎?速度和效果的關係是線性的嗎?

python製作的負片後像GIF

圖片
「負片後像」這個觀察,在實驗記錄本上通常都是紅花綠葉啦、或是藍色黃色的色塊等,讓學生盯著看之後,再說出看到了什麼顏色。但其實並不是每個學生都能看到所有顏色。 後來我用了這篇【 負片後像新玩法 】。用那隻會變色的龍貓,效果是好多了,大概能有七成到八成的學生說看得到負片後像。 但真的想回答到底看到了什麼顏色,其實還是有困難。像實驗記錄本那種圖案,就是有學生會說看不到啊。怎麼辦呢?後來看到有一個GIF檔的效果很好,就是很多顆洋紅色的球再那轉啊轉的,幾乎學生們都看得到那樣的顏色。 這給了我一個想法,不如就來做各種顏色的轉轉轉的GIF圖吧。用上了python 的 matplotlib 的animation,就可以做出各種顏色的圖了。 程式碼和圖片都在GitHub Repository上 https://github.com/ChihHsiangChien/afterimage 用了這些圖之後的學生達成率就變成百分百了,每個學生都能夠看到。我後來上課就把這些圖放到學生的自學網站上,就直接用這來進行實驗寫觀察記錄了。 這也稍微解決了一個錯誤「標準答案」的問題。我很討厭看到測驗題目問「盯著紅花綠葉看一陣子,產生的負片後像會變成什麼顏色」,討厭的原因是那個答案根本就不是正確答案!通常給的答案是什麼?看紅花綠葉的負片後像會變成綠花紅葉。但是啊,沒有人會真的看成綠花紅葉啊,因為這根本就是錯誤答案啊。 理論上的答案應該是紅色變成青色(cyan)、綠色變成洋紅(magenta)。但是實際上看了以下的GIF之後,你就會發現其實是淡淡的青色和淡淡的洋紅(或是說是淡粉紅)。 為什麼實際觀察經驗會跟理論有差距呢?這讓我忍不住繼續動手,不如就來做一個可以客製化調整參數的程式吧。 下篇 【用客製化調整的負片後像程式進行探究】

流感疫苗小知識

圖片
有鑑於每年冬天都會被傳染流感,整個人病懨懨快死掉的,今年我總算在11月去打了自費流感疫苗。 打完之後,跟診所要了藥盒和仿單來看看,做個紀錄。 這次打的疫苗名稱叫做伏適流FLUARIX TETRA,是四價的流感疫苗,成份是「去活化裂解病毒粒子」。每劑0.5毫升的疫苗含有四種流感病毒株的血凝素hemagglutinin抗原各15微克。 這裡修正一下,之前以為仿單上的字寫錯了。不過後來有讀者好心來信,其實只是美式英語和英式英語的差異。 單張上寫的haemagglutinin和hemagglutinin只是英式英語和美式英語在併寫上的分別,美式英語中haem-這個prefix會寫成hem 一微克是百萬分之一克,原來只有少少的15微克血凝素,就可以讓身體產生免疫反應,身體實在太精巧了。 血凝素的中文全名叫做血球凝集素,常聽到的H1N1的那個H就是指血凝素。病毒要附著在細胞上,就要靠這種醣蛋白,這也是人體產生中和及保護性抗體反應的關鍵。 在這篇文章《 流感病毒的感染以及疫苗設計的關鍵,都在於『醣』的多寡! 》提到了一項研究。研究人員把禽流感病毒表面的血球凝集素(HA)醣蛋白上多醣分子修飾成單醣分子後,用來開發出來的疫苗,可以誘發高度的免疫效力。 要挑哪些病毒株來製備疫苗呢?這是由世界衛生組織(WHO)來發布建議的。在這個公告裡頭,就說了2019-2020北半球季節流感病毒株有哪些 https://www.who.int/influenza/vaccines/virus/recommendations/2019_20_north/en/ an A/Brisbane/02/2018 (H1N1)pdm09-like virus; an A/Kansas/14/2017 (H3N2)-like virus; * a B/Colorado/06/2017-like virus (B/Victoria/2/87 lineage); and a B/Phuket/3073/2013-like virus (B/Yamagata/16/88 lineage). It is recommended that the influenza B virus component of tri