【scipy】 scipy.ndimage 数学形态学(Mathematical morphology)
____tz_zs筆記
形態學
形態學(morphology)一詞通常表示生物學的一個分支,該分支主要研究動植物的形態和結構。而我們圖像處理中指的形態學,往往表示的是數學形態學。
數學形態學(Mathematical morphology) 是一門建立在格論和拓撲學基礎之上的圖像分析學科,是數學形態學圖像處理的基本理論。其基本的運算包括:二值腐蝕和膨脹、二值開閉運算、骨架抽取、極限腐蝕、擊中擊不中變換、形態學梯度、Top-hat變換、顆粒分析、流域變換、灰值腐蝕和膨脹、灰值開閉運算、灰值形態學梯度等。
數學形態學以形態結構元素為基礎對圖像進行分析的數學工具。數學形態學的應用可以簡化圖像數據,保持它們基本的形狀特征,并除去不相干的結構。通常用于處理二值圖像。
形態學目的
- 圖像預處理(去噪聲,簡化形狀)
- 增強物體結構(抽取骨骼,細化,粗化,凸包,物體標記)
- 從背景中分隔物體
- 物體量化描述(面積,周長,投影,Euler-Poincare特征)
?
腐蝕和膨脹
首先需要注意,腐蝕和膨脹是對白色部分(高亮部分)而言的,不是黑色部分。膨脹就是圖像中的高亮部分進行膨脹,“領域擴張”,效果圖擁有比原圖更大的高亮區域。腐蝕就是原圖中的高亮部分被腐蝕,“領域被蠶食”,效果圖擁有比原圖更小的高亮區域。
腐蝕和膨脹基本上是所有形態學操作的基礎,除此之外還有補集(即二值圖全部取反的操作,0變1,1變0),和反射(將所有坐標去反)。
膨脹:
?
- 橋接縫隙(縫隙點為0,且寬度比SE的寬度小)
- 消除細小的黑點(二值圖像中的0,黑點比SE小)
?
腐蝕:
?
- 消除“橋梁”(細線裝的白色條紋,值為1,寬度小于SE的寬度)
- 消除細小的白點(二值圖像中的1,白點比SE小)
?
開操作和閉操作
?
簡單來說所謂開操作和閉操作就是把腐蝕和膨脹結合起來,先腐蝕后膨脹就是開,膨脹后腐蝕就是關。
開操作,一般會平滑物體輪廓,斷開較窄的狹頸(細長的白色線條),所以叫開,并消除細小的突出物。
閉操作,一般也會平滑物體輪廓,但與開操作相反,彌合較窄的間斷和細長的溝壑,所以叫閉,消除小的空洞,填補輪廓線的中的斷裂。
·
# -*- coding: utf-8 -*- """ @author: tz_zs 數學形態學 """import numpy as np import matplotlib.pyplot as plt from scipy import ndimagesquare = np.zeros((32, 32)) square[10:15, 10:20] = 1 square[16:20, 10:20] = 1 square[22:28, 10:20] = 1square[4:8, 10] = 1 square[4:8, 12] = 1x, y = (np.random.random((2, 15)) * 32).astype(np.int) square[x, y] = 1plt.imshow(square) plt.show() # 圖1# 腐蝕 square_erosion = ndimage.binary_erosion(square) plt.imshow(square_erosion) plt.show() # 圖2# 膨脹 square_dilation = ndimage.binary_dilation(square) plt.imshow(square_dilation) plt.show() # 圖3# 開運算 square_open = ndimage.binary_opening(square) plt.imshow(square_open) plt.show() # 圖4# 閉運算 square_closing = ndimage.binary_closing(square) plt.imshow(square_closing) plt.show() # 圖5·圖1
·圖2
·圖3
·圖4
·圖5
·
?
參考資料:
https://blog.csdn.net/poem_qianmo/article/details/23710721
https://blog.csdn.net/tonyshengtan/article/details/42119773
總結
以上是生活随笔為你收集整理的【scipy】 scipy.ndimage 数学形态学(Mathematical morphology)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云计算的一些常见安全风险
- 下一篇: CAS单点登出,调整CAS源码,实现前后