欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python進行常見圖像形態(tài)學處理操作的示例代碼

 更新時間:2024年03月01日 10:02:42   作者:微小冷  
這篇文章主要為大家詳細介紹了如何使用Python進行常見的圖像形態(tài)學處理,例如腐蝕、膨脹、禮帽、黑帽等,感興趣的小伙伴可以跟隨小編一起學習一下

最基礎(chǔ)的形態(tài)學操作有四個,分別是腐蝕、膨脹、開計算和閉計算,【scipy.ndimage】分別實現(xiàn)了二值數(shù)組和灰度數(shù)組的這四種運算。而針對灰度圖像,【scipy.ndimage】還提供了禮帽、黑帽、形態(tài)學梯度和拉普拉斯梯度等操作。

二值形態(tài)學

二值圖像中只有0和1兩種元素,故而可將其表示為元素值為1的元素位置集合A={(i,j)∣Aij?=1},則腐蝕和膨脹可表示為

A?B={(i,j)∣Bij?⊆A}

A⊕B?={(i,j)∣Bij?∪A≠∅}?

其中Bij表示當B的原點在(i,j)處時,B中所有為1的值的集合。

用結(jié)構(gòu)B腐蝕A,當B的原點平移到圖像A的像元(i,j)時,若B完全被二者的重疊區(qū)域所包圍,則賦值為1,否則賦值為0。更直觀的例子是,如果B中為1的元素位置上,對應(yīng)的A的像素值也都為1,則(i,j)處為1。膨脹則與之相反。

開運算和閉運算則是腐蝕、膨脹的疊加,開運算是先腐蝕后膨脹;閉運算是先膨脹后腐蝕。這四種運算的差別如下

二值圖像的腐蝕、膨脹、開、閉運算分別由函數(shù)binary_erosion, binary_dilation, binary_opening, binary_closing來是實現(xiàn),上述繪圖代碼如下。

import numpy as np
import matplotlib.pyplot as plt
import scipy.ndimage as sn

x = np.zeros([20,20])
x[5:15, 5:15] = 1
x[10:12,10:12] = 0
x[2:4, 2:4] = 1

func = {
    "origin": lambda x : x,
    "erosion": sn.binary_erosion,
    "dilation": sn.binary_dilation,
    "opening": sn.binary_opening,
    "closing": sn.binary_closing
}

fig = plt.figure()
for i,key in enumerate(func):
    ax = fig.add_subplot(2,3,i+1)
    ax.imshow(func[key](x))
    plt.title(key)

plt.show()

灰度形態(tài)學

【ndimage】中為灰度圖像也提供了腐蝕、膨脹、開、閉運算,只需將二值函數(shù)中的binary替換為grey即可。此外,針對灰度圖像,【ndimage】還額外提供了四種運算,如下表所示

函數(shù)名稱備注
morphological_gradient形態(tài)學梯度膨脹圖減去腐蝕圖
white_tophat禮帽(頂帽)運算原圖減去開運算
black_tophat黑帽(底帽)運算原圖減去閉運算
morphological_laplace拉普拉斯變換

這些方法的差異如下

繪圖代碼如下。

from scipy.misc import ascent
img = ascent()

funcs = {
    "original": lambda x, tmp:x,
    "erosion" : sn.grey_erosion,
    "dilation" : sn.grey_dilation,
    "opening" : sn.grey_opening,
    "closing" : sn.grey_closing
}

fig = plt.figure()
for i, key in enumerate(funcs):
    ax = fig.add_subplot(2,5,i+1)
    plt.imshow(funcs[key](img, (10,10)), cmap=plt.cm.gray)
    plt.axis('off')
    plt.title(key)


ori = img[350:500, 400:500]
funcs = {
    "ori": lambda x, tmp:x,
    "white" : sn.white_tophat,
    "black" : sn.black_tophat,
    "gradient" : sn.morphological_gradient,
    "laplace" : sn.morphological_laplace,
}

for i, key in enumerate(funcs):
    ax = fig.add_subplot(2,5,i+6)
    plt.imshow(funcs[key](ori, (5,5)), cmap=plt.cm.gray)
    plt.title(key)
    plt.axis('off')

plt.show()

參數(shù)列表

二值函數(shù)和灰度函數(shù)的參數(shù)并不相同,下面以closing運算為例,二值和灰度函數(shù)的所有參數(shù),除了輸入input之外,二者共有的參數(shù)有

structure 為數(shù)組類型,表示構(gòu)造元素,可以理解為是卷積模板

output 與輸入相同維度的數(shù)組,可以存下結(jié)果

orgin 過濾器設(shè)置,默認為0

二值形態(tài)學濾波的其他參數(shù)如下

binary_closing(input, iterations=1, mask=None, border_value=0, brute_force=False)

其中

iterations 執(zhí)行次數(shù)

mask 掩模數(shù)組,為bool類型的數(shù)組,對應(yīng)False的位置將不會改變

border_value 邊緣處的值

brute_force 如果為False,則只有上次迭代中發(fā)生變化的值才會更新

grey_closing(input, size=None, footprint=None, mode='reflect', cval=0.0)

size 為濾波模板

mode 可選reflect,constant,nearest,mirror, wrap,邊緣填充方式

cval 邊緣填充值

到此這篇關(guān)于Python進行常見圖像形態(tài)學處理操作的示例代碼的文章就介紹到這了,更多相關(guān)Python圖像形態(tài)學處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python分割單詞和轉(zhuǎn)換命名法的實現(xiàn)

    Python分割單詞和轉(zhuǎn)換命名法的實現(xiàn)

    本文主要介紹了Python分割單詞和轉(zhuǎn)換命名法的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • Python實現(xiàn)圖像增強

    Python實現(xiàn)圖像增強

    這篇文章主要為大家詳細介紹了Python實現(xiàn)圖像增強,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • python實現(xiàn)煙花小程序

    python實現(xiàn)煙花小程序

    這篇文章主要為大家詳細介紹了python實現(xiàn)煙花小程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • python plt.plot bar 如何設(shè)置繪圖尺寸大小

    python plt.plot bar 如何設(shè)置繪圖尺寸大小

    這篇文章主要介紹了python plt.plot bar 設(shè)置繪圖尺寸大小的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Python實現(xiàn)扣除個人稅后的工資計算器示例

    Python實現(xiàn)扣除個人稅后的工資計算器示例

    這篇文章主要介紹了Python實現(xiàn)扣除個人稅后的工資計算器,涉及Python流程控制與數(shù)學運算相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • python生成多個只含0,1元素的隨機數(shù)組或列表的實例

    python生成多個只含0,1元素的隨機數(shù)組或列表的實例

    今天小編就為大家分享一篇python生成多個只含0,1元素的隨機數(shù)組或列表的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python異常模塊traceback用法實例分析

    Python異常模塊traceback用法實例分析

    這篇文章主要介紹了Python異常模塊traceback用法,結(jié)合實例形式分析了Python異常模塊traceback的基本功能、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-10-10
  • Python繼承和子類從Person到Student演示實例

    Python繼承和子類從Person到Student演示實例

    這篇文章主要為大家介紹了Python繼承和子類從Person到Student演示實例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • 離線安裝python的requests庫方法

    離線安裝python的requests庫方法

    大家好,本篇文章主要講的是離線安裝python的requests庫方法,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • DRF框架API版本管理實現(xiàn)方法解析

    DRF框架API版本管理實現(xiàn)方法解析

    這篇文章主要介紹了DRF框架API版本管理實現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08

最新評論