iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 13
0
自我挑戰組

Machine Learning 學習筆記系列 第 13

[第13天] 影像處理 (3) morphology

數學形態學(mathematical morphology),簡稱形態學。專門用來處理、分析影像中的形狀。平移與反射這兩個方法高中已經學過了,接下來要介紹的是膨脹(dilation)與侵蝕(erosion)。

Dilation 膨脹

接下來練習一下範例
先看一下原始圖

%matplotlib inline
import os
import matplotlib.pyplot as plt
from skimage.data import data_dir
from skimage.util import img_as_ubyte
from skimage import io

orig_phantom = img_as_ubyte(io.imread(os.path.join(data_dir, "phantom.png"),
                                      as_gray=True))
fig, ax = plt.subplots()
ax.imshow(orig_phantom, cmap=plt.cm.gray)

https://ithelp.ithome.com.tw/upload/images/20181027/20112303vM5slmHs2x.png

定義一個方便檢視差別的繪圖函數

def plot_comparison(original, filtered, filter_name):

    fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(8, 4), sharex=True,
                                   sharey=True)
    ax1.imshow(original, cmap=plt.cm.gray)
    ax1.set_title('original')
    ax1.axis('off')
    ax2.imshow(filtered, cmap=plt.cm.gray)
    ax2.set_title(filter_name)
    ax2.axis('off')
from skimage.morphology import dilation
from skimage.morphology import disk
selem = disk(6)
dilated = dilation(orig_phantom, selem)
plot_comparison(orig_phantom, dilated, 'dilation')

可發現較亮的灰階開始膨脹
https://ithelp.ithome.com.tw/upload/images/20181027/20112303PkHpj7Mk0G.png

Erosion 侵蝕

接下來測試一下侵蝕結果,依樣可以參考youtube的動圖

eroded = erosion(orig_phantom, selem)
plot_comparison(orig_phantom, eroded, 'erosion')

https://ithelp.ithome.com.tw/upload/images/20181027/20112303X4qMus92aU.png
可發現白色部分縮小了~

morphology還有其他功能的演算法像是Opening、Closing、Skeletonize、Convex hull等等,以後有需要再來找熟悉一下~


上一篇
[第十二天]影像處理 (2)
下一篇
[第十四天] 深度學習淺介
系列文
Machine Learning 學習筆記30

尚未有邦友留言

立即登入留言