從葉片學分析:空間校正、色彩空間與分割技巧
本章節將以 ImageJ 內建的 Leaf
範例影像為核心,進行完整的影像分析流程。過程包括:
- 如何利用影像中的比例尺進行空間校正。
- 理解 RGB 與 HSB (HSV) 色彩空間的差異,以及為何後者更利於顏色分割。
- 使用 Color Threshold 和 標準 Threshold 兩種方法來分割出目標物。
- 進行多種科學測量,包括面積、周長,以及碎形分析。
1. 開啟範例與空間校正
先賦予影像真實的物理單位。
- 開啟範例影像
File > Open Samples > Leaf (36K)
。 - 影像上方有一支尺。這就是我們校正的依據。
- 從工具列選擇直線工具 (Line Tool)。
- 沿著
2 cm
的黑色線段,從一端精確地畫到另一端。 - 執行
Analyze > Set Scale...
。 - 在彈出的對話框中:
Distance in pixels
: ImageJ 會自動填入你剛畫的線段長度。Known distance
: 輸入 2。Unit of length
: 輸入 cm。Global
: 不要勾選,這樣此校正只會應用於這張葉子影像。- 點擊
OK
。
現在,你的影像已經被校正。之後的所有測量單位都將是 cm
。
試試Global
- 開啟葉子和小丑的範例圖片,然後重複上述的步驟,只針對葉子做空間校正,但是勾選了Global,你會看到只進行葉子的校正,但小丑也被進行了。
- 如何取消特定圖片的空間校正呢?
Image > Properties...
把校正的資訊都刪除就可以了,你也可以在這裡直接設定比例尺。
2. 認識色彩空間:為何需要 HSB?
我們要如何從影像中分離出「綠色」的葉子?在電腦中,顏色可以用以下模型來描述:
-
RGB (Red, Green, Blue):
- 這是最常見的硬體導向模型,對應螢幕顯示的三原色光。
- 缺點: 對人類不直觀。一片葉子的「綠色」可能包含多種不同的R、G、B組合(亮綠、暗綠、黃綠),很難用簡單的RGB範圍來定義。
-
HSB (Hue, Saturation, Brightness),也常稱為 HSV (Value):
- 這是人類視覺導向的模型,更符合我們描述顏色的方式。
- 色相 (Hue): 純粹的顏色,如紅、黃、綠、藍。可以想成一個360度的色環。
- 飽和度 (Saturation): 顏色的純度或鮮豔度。從灰色到最鮮豔的顏色。
- 亮度 (Brightness/Value): 顏色的明暗程度。
-
Lab (CIELAB):
- 這是一個感知導向的模型,其設計目的是為了讓數值上的差異能更好地對應人類視覺感知的顏色差異。
- L*: 亮度,從 0 (純黑) 到 100 (純白)。
- a*: 顏色在綠色 (-a) 和紅色 (+a) 之間的維度。
- b*: 顏色在藍色 (-b) 和黃色 (+b) 之間的維度。
- 優點: Lab 色彩空間的感知均勻性 (perceptual uniformity) 讓它在顏色分割上非常強大。因為顏色之間的歐幾里得距離約略等於人眼感知的顏色差異,所以可以更穩定地分離出特定顏色的物體,即使它們的亮度和飽和度有變化。
-
YUV:
- 常見的影像與影片處理用的色彩表示方式,主要設計目的是為了與人眼感知相容,同時方便進行壓縮與傳輸。
- Y:亮度 (Luminance),類似黑白影像,人眼最敏感。
- U:色度藍 (Cb) 表示藍色和亮度的差(藍色色偏)。
- V:色度紅 (Cr) 表示紅色和亮度的差(紅色色偏)。
實作:分離所有通道並用直方圖評估
以下將葉片的 RGB 、HSB、Lab 通道全部拆分出來,並用直方圖來「定量」地觀察它們的差異。
- 確保
Leaf
影像是當前視窗。 - 分離 RGB 通道: 執行
Image > Type > RGB Stack
。你會得到一個包含Red
,Green
,Blue
三個灰階影像的堆疊。 - 觀察直方圖: 依序點選這三個灰階影像,執行
Analyze > Histogram
(或按Ctrl+H
) 來查看其像素分佈。 - 重複上述步驟,執行
Image > Type > HSB Stack
與Image > Type > Lab Stack
。你認為哪一個通道最適合將目標進行分割?
分割的原理與決策
影像分割 (Segmentation) 的核心原理是根據像素的某一項特徵將其分類。最簡單的方法是閾值分割 (Thresholding),即「設定一個值,高於此值的為目標,低於此值的為背景」。
一個好的分割策略,就是要選擇一個能最大化「目標」與「背景」差異的特徵。一個適合用來分割的通道,其直方圖應該呈現雙峰分佈 (Bimodal),且兩個峰之間有清晰、深邃的山谷。這個山谷就是設定閾值的最佳位置。
3. 分割葉片區域 (Segmentation)
方法一:Standard Threshold (在 8-bit影像上使用)
此方法是影像分割的經典流程:先將影像轉換為單一的灰階通道,然後再使用 Image > Adjust > Threshold...
進行分割。關鍵在於選擇一個最能凸顯目標的灰階通道。從我們先前的直方圖分析可知,Saturation 通道是不錯的選擇。
做法 A: 使用 Saturation 通道
- 使用我們在步驟2中產生的 HSB Stack 影像,或是也可以用彩色影像轉成的
8-bit
影像 - 點選 Saturation 通道的圖片將其複製一份
Image > Duplictate...
。 - 執行
Image > Adjust > Threshold...
(或按Ctrl+Shift+T
)。 - 拖動滑桿,將代表葉片的灰色區域選取起來。
- 點擊
Apply
。影像會被轉換成一張黑白的二值化遮罩 (Binary Mask),白色代表目標區域(前景),黑色代表背景。 - mask和selection可以互相轉換。
- mask可用
Edit › Selection › Create Selection
轉成selection。 - selection可以用
Edit › Selection › Create Mask
轉成mask。
- mask可用
做法 B: 直接轉換為 8-bit 灰階影像
- 重新載入一張原始的
Leaf
影像。 - 執行
Image › Type › 8-bit
。- 原理說明: 這一步會將 RGB 彩色影像轉換為 8-bit 灰階影像。ImageJ 提供兩種轉換公式,可在
Edit > Options > Conversions...
中設定:- 平均法 (預設不勾選 "Weighted RGB to Grayscale Conversion"):
灰階值 = (紅 + 綠 + 藍) / 3
- 加權法 (勾選 "Weighted RGB to Grayscale Conversion"): 這種方法更符合人眼對綠色的敏感度。
灰階值 = 0.299 * 紅 + 0.587 * 綠 + 0.114 * 藍
- 平均法 (預設不勾選 "Weighted RGB to Grayscale Conversion"):
- 原理說明: 這一步會將 RGB 彩色影像轉換為 8-bit 灰階影像。ImageJ 提供兩種轉換公式,可在
- 對這張新產生的 8-bit 灰階影像執行
Image > Adjust > Threshold...
。
方法二:Color Threshold (在原始RGB影像上)
此方法直接在彩色影像上操作,非常直觀。
- 開啟原始的
Leaf
影像。 - 執行
Image > Adjust > Color Threshold...
。 - 在
Color Threshold
視窗中:- 下拉選單的Color Space可以選擇不同的色彩空間,例如
HSB
- 調整滑桿: 將代表綠色的區間選取起來。你會看到影像預覽中,只有葉子被標示為紅色。
- 可以微調 Saturation 和 Brightness 滑桿來排除背景中的雜點。
- 確認選取範圍無誤後,點擊視窗下方的
Select
按鈕。
- 下拉選單的Color Space可以選擇不同的色彩空間,例如
此時,葉子的輪廓已經被建立成一個選區 (ROI)。
4. 進行測量
現在我們有了葉子的選區或遮罩,可以開始測量了。若二值化遮罩影像有多個不相連的白色區域,可先使用工具列上的 魔術棒工具 (Wand Tool) (快捷鍵 W
),在要測量的目標白色區域內點擊一下,系統會自動選取相連的白色區域,將之變成選取區。
如何用seleciton進行測量
目前我們的selection在原始圖像上,如果只是要進行面積、周長等輪廓測量,則selecion在哪張影像上都無所謂。但如果要進行影像像素強度的測量,就要讓原始影像也有這個選取區。
你有兩種方式可以進行
1. 到原始影像上復原選取區Edit > Selection > Restore Selection
2. 將選區存在ROI manager
實作:測量形狀參數 (面積與周長)
測量面積與周長這類形狀參數時,我們關心的是物體的輪廓,而不是其內部像素的灰階值。因此,無論是直接分析二值化影像,還是在任意影像上使用由該輪廓建立的選區(ROI),得到的面積和周長結果都會是一樣的。
先執行 Analyze > Set Measurements...
,確保 Area
和 Perimeter
都已勾選。
參數說明
以下我們介紹兩種方法來測量。
方法 A: 使用 Analyze Particles...
(推薦用於多物件分析)
此指令會掃描整張二值化影像,找出所有白色物體並逐一測量。
- 使用 二值化遮罩 影像。
- 執行
Analyze > Analyze Particles...
。Size (cm^2)
: 可以設定一個最小值(如0.1
)來過濾掉可能的微小雜訊。Show
: 選擇Outlines
,這樣可以在新視窗中看到被測量的物體輪廓。- 勾選
Display results
和Summarize
。
- 點擊
OK
。 - 觀察結果: 在 "Results" 表格中,你會看到每個被偵測到的粒子(葉子)的
Area
和Perimeter
。
方法 B: 使用 Analyze > Measure
(推薦用於單一物件測量)
此指令只會測量當前作用中的選區。
- 利用選區工具執行
Analyze > Set Measurements...
,確保Area
和Perimeter
都已勾選。 - 執行
Analyze > Measure
(或按Ctrl+M
)。
實作:進階測量 (碎形維度)
碎形維度 (Fractal Dimension) 是一個用來描述複雜、不規則邊界的指標。一個平滑的圓周長,其碎形維度接近1;而一個極度皺褶、複雜的海岸線,其維度會更高(例如1.2~1.3)。我們可以藉此量化葉緣的複雜程度。
碎形維度測量的意義與用途
傳統的歐幾里得幾何(如周長、面積)擅長描述規則形狀,但對於自然界中常見的複雜、不規則的結構(如海岸線、雲朵、血管網路)就顯得力不從心。碎形維度(D)提供了一個超越傳統整數維度(線=1D, 面=2D, 體=3D)的量化指標,用來描述一個物體「填充空間」的複雜程度。
數值解讀: 一個二維輪廓的碎形維度 D 值介於1和2之間。D值越接近1,表示邊界越平滑、簡單(像一條直線)。D值越接近2,表示邊界越曲折、複雜,幾乎快要能填滿一個平面。
應用舉例:
- 神經科學: 量化神經元樹突分支的複雜度。一個D值較高的神經元,可能代表其連結能力更強或更成熟。
- 腫瘤學: 分析腫瘤邊緣的規律性。惡性腫瘤的邊緣通常更不規則,其碎形維度可能比良性腫瘤更高。
- 植物學: 比較不同生長條件下,植物根系或葉緣的複雜程度。
- 材料科學: 描述材料斷裂面的粗糙度。
- 使用二值化遮罩影像。
- 執行
Analyze > Tools > Fractal Box Count...
。 - ImageJ 會產生一個圖表和一個 Log 視窗。在 Log 視窗中,你會看到
D=1.234
這樣的數值,這個 D 值就是葉緣的碎形維度。這個值越高,代表葉緣越不規則、越複雜。Box Counting細節說明