Skip to content

Scikit-Image簡介

Scikit-Image (skimage) 是 Python 的 科學影像處理庫,提供 濾波、邊緣偵測、特徵提取、影像分割 等功能,適合影像分析與機器學習應用。


✅ 1. 安裝 Scikit-Image

pip install scikit-image

✅ 2. 讀取與顯示圖片

Scikit-Image 使用 io.imread() 來讀取圖片:

from skimage import io

img = io.imread("example.jpg")  # 讀取圖片
io.imshow(img)  # 顯示圖片
io.show()  # 確保圖片正常渲染

與 OpenCV (cv2.imread()) 不同,Scikit-Image 預設使用 RGB 格式** 而非 BGR。


✅ 3. 影像資訊

print(img.shape)  # (高度, 寬度, 色彩通道)
print(img.dtype)  # 資料型態 (float64 或 uint8)

Scikit-Image 讀取的圖片為 NumPy 陣列,且數值範圍為 0~1 (float64) 而非 0~255


✅ 4. 轉換圖片格式

from skimage import img_as_ubyte, img_as_float

img_255 = img_as_ubyte(img)  # 轉為 0~255 (uint8)
img_1 = img_as_float(img)    # 轉為 0~1 (float64)

適用於與 OpenCV、Pillow 互相轉換格式。


✅ 5. 灰階轉換

from skimage import color

gray = color.rgb2gray(img)  # 轉換為灰階
io.imshow(gray)
io.show()

rgb2gray() 轉換後仍為 NumPy 陣列,但只有單通道。


✅ 6. 影像濾波(模糊處理)

from skimage import filters

blurred = filters.gaussian(img, sigma=2)  # 高斯模糊
io.imshow(blurred)
io.show()

適用於影像增強與降噪。


✅ 7. 邊緣偵測(Sobel 運算子)

from skimage import filters

edges = filters.sobel(gray)  # Sobel 邊緣偵測
io.imshow(edges)
io.show()

適用於影像特徵提取。


✅ 8. 影像分割(找出特定區域)

from skimage import segmentation

segments = segmentation.felzenszwalb(img, scale=100)  # 影像分割
io.imshow(segments)
io.show()

適用於醫學影像、物件偵測。


📝 總結

功能 函數
讀取圖片 io.imread("image.jpg")
顯示圖片 io.imshow(img), io.show()
轉換灰階 color.rgb2gray(img)
高斯模糊 filters.gaussian(img, sigma=2)
邊緣偵測 filters.sobel(img)
影像分割 segmentation.felzenszwalb(img)

🚀 Scikit-Image 適用於影像分析、特徵偵測與科學應用,適合數據科學與機器學習! 😊