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

玩轉(zhuǎn)Python圖像處理之二值圖像腐蝕詳解

 更新時間:2021年09月23日 09:25:14   作者:趙卓不凡  
這篇文章主要給大家介紹了關(guān)于Python圖像處理之二值圖像腐蝕的相關(guān)資料,對原圖進(jìn)行二值化后,選擇不同的結(jié)構(gòu)元素對其進(jìn)行膨脹和腐蝕運算處理,并仿真出圖像結(jié)果,需要的朋友可以參考下

1 引言

形態(tài)學(xué)運算是針對二值圖像依據(jù)數(shù)學(xué)形態(tài)學(xué)集合論方法發(fā)展起來的圖像處理的方法.其主要內(nèi)容是設(shè)計一整套的變換概念和算法,用以描述圖像的基本特征.

在圖像處理中,形態(tài)學(xué)的應(yīng)用主要有以下兩點:利用形態(tài)學(xué)的基本運算,對圖像進(jìn)行觀察和處理,從而達(dá)到改善圖像質(zhì)量的目的;描述和定義圖像的各種幾何參數(shù)和特征等.

2 腐蝕概念

數(shù)學(xué)形態(tài)學(xué)的運算以腐蝕和膨脹這兩種基本運算為基礎(chǔ),腐蝕操作在數(shù)學(xué)形態(tài)學(xué)上的作用是消除物體的邊界點,使邊界向內(nèi)部收縮的過程,主要用于將小于物體結(jié)構(gòu)元素的物體去除.例如兩個物體之間有細(xì)小的連通,可以通過腐蝕操作將兩個物體分開.腐蝕的數(shù)學(xué)表達(dá)式為:

上述公式中:

  • S表示腐蝕后的二值圖像
  • B表示用來進(jìn)行腐蝕操作的結(jié)構(gòu)元素,結(jié)構(gòu)元素內(nèi)每一個元素取值為0或1,它可以組成任何一種形狀的圖形;
  • X表示原圖經(jīng)過二值化后的像素集合.

此公式的含義是用B來腐蝕X得到的集合S,S是由B完全包括在X中時B的當(dāng)前位置的集合.

3 舉個栗子

只看上面公式,是不是有種云里霧里的感覺,那我們不妨來舉個栗子說明一下,請看下圖:

  • 左側(cè)a為被處理的二值圖像,白色部分表示背景,灰色部分表示目標(biāo)X;
  • 中間為結(jié)構(gòu)元素B,黑色點為結(jié)構(gòu)元素的中心點,灰色的方格表示鄰域;
  • 右側(cè)c中黑色的部分表示腐蝕后的結(jié)果,灰色的部分表示目標(biāo)圖像被腐蝕掉的部分.

我們可以這樣理解上述腐蝕過程,即用B的中心點和X上的點一個一個地對比,如果B上所有對應(yīng)的點都在X的范圍內(nèi),則該點保留;否則將該點去除;

通俗的講就是將結(jié)構(gòu)元素在圖像中移動,如果結(jié)構(gòu)元素完全包含在目標(biāo)圖像X中,則保留目標(biāo)圖像中對應(yīng)于中心點的像素點,否則刪除該像素點.

4 水平腐蝕

4.1 理論基礎(chǔ)

圖像腐蝕操作按照所采用的結(jié)構(gòu)元素的類型,可以分為以下三類:水平腐蝕垂直腐蝕以及全方向腐蝕.其中水平腐蝕所采用的結(jié)構(gòu)元素為[0,0,0], 其具體實現(xiàn)步驟如下:

  1. 根據(jù)原始圖像的寬和高,初始化結(jié)果圖為全白圖(背景為白色)
  2. 由于我們采用的是橫向腐蝕操作,結(jié)構(gòu)元素為1X3,因此我們不處理最左邊和最右邊的兩列像素,從第2行第2列開始,逐個遍歷每行元素,判斷該元素的前一個像素和后一個像素是否含有背景點,有則說明在結(jié)果圖上該點需要被腐蝕掉,將該點像素點的灰度值賦值為255,否則保持不變
  3. 循環(huán)上述步驟,直至處理完原圖所有像素點。

4.2 代碼實現(xiàn)

使用python實現(xiàn)按上述過程,核心代碼如下:

def horizon_erode(bin_img):
    out_img = np.zeros(shape=bin_img.shape, dtype=np.uint8) + 255
    h = bin_img.shape[0]
    w = bin_img.shape[1]
    for i in range(h):
        for j in range(1,w-1):
            out_img[i][j]=0
            for k in range(3):
                if bin_img[i][j+k-1] > 127:
                    out_img[i][j]=255
    return out_img

運行結(jié)果如下:

請?zhí)砑訄D片描述

上圖中,從左往右依次為彩色原圖,二值化后的結(jié)果圖,以及采用水平腐蝕后的效果圖,可以看到腐蝕后的圖相比二值圖外圍在縱向上被腐蝕掉一圈。

5 垂直腐蝕

5.1 理論基礎(chǔ)

垂直腐蝕和水平腐蝕原理類似,只是所采用的結(jié)構(gòu)元素不同,垂直腐蝕所使用的結(jié)構(gòu)元素為 [ 0 , 0 , 0 ] T [0,0,0]^T [0,0,0]T,其詳細(xì)的實現(xiàn)步驟如下:

  • 根據(jù)原始圖像的寬和高,初始化結(jié)果圖為全白圖(背景為白色)
  • 由于我們采用的是垂直腐蝕操作,結(jié)構(gòu)元素為3X1,因此我們不處理最上邊和最下邊的兩行像素,從第2行第2列開始,逐個遍歷每行元素,判斷該元素的上一個像素和下一個像素是否含有背景點,有則說明在結(jié)果圖上該點需要被腐蝕掉,將該點像素點的灰度值賦值為255,否則保持不變
  • 循環(huán)上述步驟,直至處理完原圖所有像素點。

5.2 代碼實現(xiàn)

使用python實現(xiàn)按上述過程,核心代碼如下:

def vertical_erode(bin_img):
    out_img = np.zeros(shape=bin_img.shape, dtype=np.uint8) + 255
    h = bin_img.shape[0]
    w = bin_img.shape[1]
    for i in range(1,h-1):
        for j in range(w):
            out_img[i][j]=0
            for k in range(3):
                if bin_img[i+k-1][j] > 127:
                    out_img[i][j]=255
    return out_img

運行結(jié)果如下:

請?zhí)砑訄D片描述

上圖中,從左往右依次為彩色原圖,二值化后的結(jié)果圖,以及采用垂直腐蝕后的效果圖,可以看到腐蝕后的圖相比二值圖在橫向上被腐蝕掉一圈。

6 全方向腐蝕

6.1 理論基礎(chǔ)

全方向腐蝕綜合了垂直腐蝕和水平腐蝕,所采用的結(jié)構(gòu)元素為十字形,全向腐蝕的一般實現(xiàn)步驟如下:

  • 根據(jù)原始圖像的寬和高,初始化結(jié)果圖為全白圖(背景為白色)
  • 全向腐蝕包含垂直腐蝕和水平腐蝕,這里我們采用3X3的結(jié)構(gòu)元素,如下所示:

  • 為防止越界,我們不處理最上邊、最右邊、最下邊和最左邊共四邊的元素,從第2行第2列開始,逐個遍歷每個元素,判斷該元素的上一個像素 下一個像素 前一個像素 以及后一個像素這四個位置(即數(shù)組中除中心點外,四個為0的位置)中是否含有背景點,有則說明在結(jié)果圖上該點需要被腐蝕掉,將該點像素點的灰度值賦值為255,否則保持不變。當(dāng)然也可以定義不同形狀的結(jié)構(gòu)元素B來進(jìn)行不同的腐蝕效果,但處理方法都是檢查B中所對應(yīng)的像素點是否全部為物體,是則保留該點,否則置為255.
  • 循環(huán)上述步驟,直至處理完原圖所有像素點。

6.2 代碼實現(xiàn)

使用python實現(xiàn)按上述過程,核心代碼如下:

def all_erode(bin_img):
    out_img = np.zeros(shape=bin_img.shape, dtype=np.uint8) + 255
    h = bin_img.shape[0]
    w = bin_img.shape[1]
    B=[1,0,1,0,0,0,1,0,1]
    for i in range(1,h-1):
        for j in range(1,w-1):
            out_img[i][j]=0
            for m in range(3):
                for n in range(3):
                    if B[m*3+n] == 1:
                        continue
                    if bin_img[i+m-1][j+n-1] > 127:
                        out_img[i][j]=255
    return out_img

運行結(jié)果如下:

請?zhí)砑訄D片描述

上圖中,從左往右依次為彩色原圖,二值化后的結(jié)果圖,以及采用垂直腐蝕后的效果圖,可以看到腐蝕后的圖相比二值圖在橫向和縱向上都被腐蝕掉一圈。

7 總結(jié)

通過上述簡單步驟,我們實現(xiàn)了二值圖像水平腐蝕垂直腐蝕以及全向腐蝕,并給出了完整代碼實例。

您學(xué)廢了嗎?

到此這篇關(guān)于Python圖像處理筆記之二值圖像腐蝕的文章就介紹到這了,更多相關(guān)Python二值圖像腐蝕內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 學(xué)python爬蟲能做什么

    學(xué)python爬蟲能做什么

    這篇文章主要介紹了學(xué)python爬蟲能做什么的相關(guān)知識點內(nèi)容,有需要的朋友們可以閱讀參考下。
    2020-07-07
  • SecureCRTSecure7.0查看連接密碼的步驟

    SecureCRTSecure7.0查看連接密碼的步驟

    SecureCRTSecure7密碼查看的方法大概可以分為兩個步驟,第一步需要查看系統(tǒng)保存的連接的ini文件,第二步破解加密之后的密碼,具體腳本請參考下本文
    2021-06-06
  • 使用Flask-Cache緩存實現(xiàn)給Flask提速的方法詳解

    使用Flask-Cache緩存實現(xiàn)給Flask提速的方法詳解

    這篇文章主要介紹了使用Flask-Cache緩存實現(xiàn)給Flask提速的方法,結(jié)合實例形式詳細(xì)分析了Flask-Cache的安裝、配置及緩存使用相關(guān)操作技巧,需要的朋友可以參考下
    2019-06-06
  • python中的逆序遍歷實例

    python中的逆序遍歷實例

    今天小編就為大家分享一篇python中的逆序遍歷實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Pytorch使用VGG16模型進(jìn)行預(yù)測貓狗二分類實戰(zhàn)

    Pytorch使用VGG16模型進(jìn)行預(yù)測貓狗二分類實戰(zhàn)

    VGG16是Visual Geometry Group的縮寫,它的名字來源于提出該網(wǎng)絡(luò)的實驗室,本文我們將使用PyTorch來實現(xiàn)VGG16網(wǎng)絡(luò),用于貓狗預(yù)測的二分類任務(wù),我們將對VGG16的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行適當(dāng)?shù)男薷?以適應(yīng)我們的任務(wù),需要的朋友可以參考下
    2023-08-08
  • Python?seaborn?barplot畫圖案例

    Python?seaborn?barplot畫圖案例

    這篇文章主要介紹了Python?seaborn?barplot畫圖案例,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • 基于python實現(xiàn)上傳文件到OSS代碼實例

    基于python實現(xiàn)上傳文件到OSS代碼實例

    這篇文章主要介紹了基于python實現(xiàn)上傳文件到OSS,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Python中22個萬用公式的小結(jié)

    Python中22個萬用公式的小結(jié)

    在大家的日常python程序的編寫過程中,都會有自己解決某個問題的解決辦法,或者是在程序的調(diào)試過程中,用來幫助調(diào)試的程序公式,本文總結(jié)了22個萬用公式,感興趣的可以了解一下
    2021-07-07
  • wxpython中Textctrl回車事件無效的解決方法

    wxpython中Textctrl回車事件無效的解決方法

    這篇文章主要介紹了wxpython中Textctrl回車事件無效的解決方法,較為詳細(xì)的分析了TextCtrl支持的事件類型,并給出了TextCtrl綁定回車事件的相應(yīng)實現(xiàn)技巧,需要的朋友可以參考下
    2016-07-07
  • Python Matplotlib數(shù)據(jù)可視化模塊使用詳解

    Python Matplotlib數(shù)據(jù)可視化模塊使用詳解

    matplotlib是基建立在python之上,適用于創(chuàng)建靜態(tài),動畫和交互式可視化,通常與數(shù)據(jù)分析模塊pandas搭配使用,用于數(shù)據(jù)的分析和展示,適用于主流的操作系統(tǒng),如Linux、Win、Mac
    2022-11-11

最新評論