校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Python圖像處理之膨脹與腐蝕的操作

Python圖像處理之膨脹與腐蝕的操作

熱門標簽:鎮(zhèn)江人工外呼系統(tǒng)供應商 400電話辦理費用收費 騰訊地圖標注有什么版本 千呼ai電話機器人免費 申請辦個400電話號碼 柳州正規(guī)電銷機器人收費 深圳網絡外呼系統(tǒng)代理商 外呼系統(tǒng)前面有錄音播放嗎 高德地圖標注字母

引言

膨脹與腐蝕是圖像處理中兩種最基本的形態(tài)學操作,膨脹將目標點融合到背景中,向外部擴展,腐蝕與膨脹意義相反,消除連通的邊界,使邊界向內收縮。在本文中我們將了解使用內核的圖像膨脹與腐蝕的基本原理。

讓我們開始吧,同樣我們需要導入必需的庫。

import numpy as np
import matplotlib.pyplot as plt
from skimage.io import imread, imshow
from skimage.draw import circle
from skimage.morphology import erosion, dilation

首先讓我們創(chuàng)建一個容易操作的形狀--一個簡單的圓。

circ_image = np.zeros((100, 100))
circ_image[circle(50, 50, 25)] = 1
imshow(circ_image);

現在讓我們定義一個內核。

cross = np.array([[0,1,0],
   [1,1,1],
   [0,1,0]])
imshow(cross, cmap = 'gray');

將腐蝕函數應用到創(chuàng)建的圓上。

eroded_circle = erosion(circ_image, cross)
imshow(eroded_circle);

圖像看起來幾乎一模一樣。要看到那些微小的差異,我們必須仔細查看圖像。

linecolor = 'red'
fig, ax = plt.subplots(1, 2, figsize=(12, 5))
ax[0].imshow(circ_image, cmap = 'gray');
ax[0].set_title('Original', fontsize = 19)
ax[0].axvline(x = 25, color = linecolor)
ax[0].axvline(x = 75, color = linecolor)
ax[0].axhline(y = 25, color = linecolor)
ax[0].axhline(y = 75, color = linecolor)
ax[1].imshow(eroded_circle, cmap = 'gray');
ax[1].set_title('Eroded', fontsize = 19)
ax[1].axvline(x = 25, color = linecolor)
ax[1].axvline(x = 75, color = linecolor)
ax[1].axhline(y = 25, color = linecolor)
ax[1].axhline(y = 75, color = linecolor)
fig.tight_layout()

我們可以看到,被腐蝕的圓已經略微縮小了。這就是腐蝕一個對象的意義。如果我們對腐蝕函數進行迭代,它的效果會變得非常明顯。

def multi_erosion(image, kernel, iterations):
 for i in range(iterations):
 image = erosion(image, kernel)
 return image
ites = [2,4,6,8,10,12,14,16,18,20]
fig, ax = plt.subplots(2, 5, figsize=(17, 5))
for n, ax in enumerate(ax.flatten()):
 ax.set_title(f'Iterations : {ites[n]}', fontsize = 16)
 new_circle = multi_erosion(circ_image, cross, ites[n])
 ax.imshow(new_circle, cmap = 'gray');
 ax.axis('off')
fig.tight_layout()

上圖清楚地顯示了圖像是如何被腐蝕的。現在讓我們嘗試改變內核,如果我們使用水平線和垂直線內核代替交叉內核會怎樣呢?

h_line = np.array([[0,0,0],
   [1,1,1],
   [0,0,0]])
v_line = np.array([[0,1,0],
   [0,1,0],
   [0,1,0]])
fig, ax = plt.subplots(1, 2, figsize=(15, 5))
ax[0].imshow(h_line, cmap='gray');
ax[1].imshow(v_line, cmap='gray');
fig.tight_layout()

ites = [2,4,6,8,10,12,14,16,18,20]
fig, ax = plt.subplots(2, 5, figsize=(17, 5))
for n, ax in enumerate(ax.flatten()):
 ax.set_title(f'Horizontal Iterations : {ites[n]}', fontsize = 12)
 new_circle = multi_erosion(circ_image, h_line, ites[n])
 ax.imshow(new_circle, cmap = 'gray');
 ax.axis('off')
fig.tight_layout()
fig, ax = plt.subplots(2, 5, figsize=(17, 5))
for n, ax in enumerate(ax.flatten()):
 ax.set_title(f'Vertical Iterationss : {ites[n]}', fontsize = 12)
 new_circle = multi_erosion(circ_image, v_line, ites[n])
 ax.imshow(new_circle, cmap = 'gray');
 ax.axis('off')
fig.tight_layout()

正如我們所看到的,水平和垂直的腐蝕以不同的方式影響著圖像。使用水平內核我們得到一個垂直方向細長的圓;而使用垂直內核我們得到一個水平方向細長的圓。

你可能會奇怪,為什么使用垂直內核,會得到一個水平方向細長的圓呢?

因為腐蝕函數是分別尋找垂直和水平的線條,并慢慢把它們削掉。膨脹函數將會讓我們更清晰的理解這一點。

使用下面的函數設置處理的圖像、膨脹內核以及迭代次數。

def multi_dilation(image, kernel, iterations):
 for i in range(iterations):
 image = dilation(image, kernel)
 return image

讓我們看一下處理后的圖像有什么不同。

dilated_circle = multi_dilation(circ_image, cross, 1)
linecolor = 'red'
fig, ax = plt.subplots(1, 2, figsize=(12, 5))
ax[0].imshow(circ_image, cmap = 'gray');
ax[0].set_title('Original', fontsize = 19)
ax[0].axvline(x = 25, color = linecolor)
ax[0].axvline(x = 75, color = linecolor)
ax[0].axhline(y = 25, color = linecolor)
ax[0].axhline(y = 75, color = linecolor)
ax[1].imshow(dilated_circle, cmap = 'gray');
ax[1].set_title('Dilated', fontsize = 19)
ax[1].axvline(x = 25, color = linecolor)
ax[1].axvline(x = 75, color = linecolor)
ax[1].axhline(y = 25, color = linecolor)
ax[1].axhline(y = 75, color = linecolor)
fig.tight_layout()

可以清楚地看到圓現在已經越過了紅線,這清楚地表明它已經擴大了。現在讓我們對水平和垂直擴張進行迭代。

ites = [2,4,6,8,10,12,14,16,18,20]
fig, ax = plt.subplots(2, 5, figsize=(17, 5))
for n, ax in enumerate(ax.flatten()):
 ax.set_title(f'Horizontal Iterations : {ites[n]}', fontsize = 
   12)
 new_circle = multi_dilation(circ_image, h_line, ites[n])
 ax.imshow(new_circle, cmap = 'gray');
 ax.axis('off')
fig.tight_layout()
fig, ax = plt.subplots(2, 5, figsize=(17, 5))
for n, ax in enumerate(ax.flatten()):
 ax.set_title(f'Vertical Iterationss : {ites[n]}', fontsize = 12)
 new_circle = multi_dilation(circ_image, v_line, ites[n])
 ax.imshow(new_circle, cmap = 'gray');
 ax.axis('off')
fig.tight_layout()

現在可以非常清楚地看到,水平擴張增加了圖像寬度,而垂直擴張增加了圖像高度。

現在我們已經了解了膨脹與腐蝕的基本原理,下面來看一個相對復雜的圖像。

complex_image = imread('complex_image.png')
imshow(complex_image);

在上面的圖像中,我們看到了水平線、垂直線和圓的混合物。我們可以使用膨脹和腐蝕函數孤立地觀察每一種形狀。

為了得到圓,我們可以先腐蝕垂直的線,再腐蝕水平的線。但要記住最后要對圖像進行膨脹,因為腐蝕函數同樣腐蝕了圓。

step_1 = multi_erosion(complex_image, h_line,3)
step_2 = multi_erosion(step_1, v_line,3)
step_3 = multi_dilation(step_2, h_line,3)
step_4 = multi_dilation(step_3, v_line,3)
steps = [step_1, step_2, step_3, step_4]
names = ['Step 1', 'Step 2', 'Step 3', 'Step 4']
fig, ax = plt.subplots(2, 2, figsize=(10, 10))
for n, ax in enumerate(ax.flatten()):
 ax.set_title(f'{names[n]}', fontsize = 22)
 ax.imshow(steps[n], cmap = 'gray');
 ax.axis('off')
fig.tight_layout()

同樣,下面的代碼將得到水平的線。

step_1 = multi_erosion(complex_image, cross, 20)
step_2 = multi_dilation(step_1, h_line, 20)
step_3 = multi_dilation(step_2, v_line,2)
steps = [step_1, step_2, step_3]
names = ['Step 1', 'Step 2', 'Step 3']
fig, ax = plt.subplots(1, 3, figsize=(10, 10))
for n, ax in enumerate(ax.flatten()):
 ax.set_title(f'{names[n]}', fontsize = 22)
 ax.imshow(steps[n], cmap = 'gray');
 ax.axis('off')
fig.tight_layout()

為了得到垂直的線,我們可以創(chuàng)建一個新的內核。

long_v_line = np.array([[0,1,0],
   [0,1,0],
   [0,1,0],
   [0,1,0],
   [0,1,0]])
step_1 = multi_erosion(complex_image, long_v_line, 10)
step_2 = multi_dilation(step_1 ,long_v_line, 10)
steps = [step_1, step_2]
names = ['Step 1', 'Step 2']
fig, ax = plt.subplots(1, 2, figsize=(10, 10))
for n, ax in enumerate(ax.flatten()):
 ax.set_title(f'{names[n]}', fontsize = 22)
 ax.imshow(steps[n], cmap = 'gray');
 ax.axis('off')
fig.tight_layout()

注意,內核并不局限于本文中提到的這幾種,可以根據不同的需求自己定義合適的內核。

總結

內核腐蝕和膨脹是圖像處理領域需要理解的基本概念。它們甚至可能是任何圖像處理模塊的第一課。直觀地理解它們將是你以后在這個領域成功的關鍵。

到此這篇關于Python圖像處理之膨脹與腐蝕的操作的文章就介紹到這了,更多相關Python圖像膨脹與腐蝕內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 2021年最新用于圖像處理的Python庫總結
  • python圖像處理基本操作總結(PIL庫、Matplotlib及Numpy)
  • Python圖像處理之圖像拼接
  • python數字圖像處理之估計噪聲參數
  • python opencv圖像處理(素描、懷舊、光照、流年、濾鏡 原理及實現)
  • 基于python的opencv圖像處理實現對斑馬線的檢測示例
  • Python圖像處理之圖片拼接和堆疊案例教程

標簽:烏蘭察布 平頂山 海南 烏蘭察布 哈爾濱 合肥 大慶 郴州

巨人網絡通訊聲明:本文標題《Python圖像處理之膨脹與腐蝕的操作》,本文關鍵詞  Python,圖像處理,之,膨脹,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python圖像處理之膨脹與腐蝕的操作》相關的同類信息!
  • 本頁收集關于Python圖像處理之膨脹與腐蝕的操作的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    国产精品无遮挡| 国产99精品国产| 欧美中文字幕亚洲一区二区va在线| 欧美韩国日本不卡| 不卡大黄网站免费看| 国产精品不卡在线| 99国产欧美另类久久久精品| 亚洲综合在线免费观看| 欧美日韩免费高清一区色橹橹| 日日摸夜夜添夜夜添精品视频| 欧美大片在线观看| 大白屁股一区二区视频| 亚洲啪啪综合av一区二区三区| 一本久道中文字幕精品亚洲嫩| 亚洲r级在线视频| 日韩一区二区电影| 国产不卡在线视频| 自拍偷拍亚洲激情| 69堂亚洲精品首页| 国产成人99久久亚洲综合精品| 亚洲色图制服丝袜| 欧美一级xxx| 国产高清亚洲一区| 亚洲一区二区三区四区在线观看| 日韩一区二区免费高清| 成人深夜视频在线观看| 天涯成人国产亚洲精品一区av| www久久久久| 91久久一区二区| 久久99久久久久久久久久久| 国产精品蜜臀av| 日韩一区二区三区免费观看 | 婷婷成人激情在线网| 国产午夜精品美女毛片视频| 欧美亚洲国产bt| 国产精品一区二区三区四区| 亚洲一区二区av在线| 国产亚洲1区2区3区| 欧美日韩中文字幕一区| 国产精品1区2区| 日韩高清一区二区| 中文字幕日本不卡| 精品成人一区二区三区四区| 欧美视频三区在线播放| 成人av网站免费观看| 久久狠狠亚洲综合| 亚洲 欧美综合在线网络| 国产精品乱码久久久久久| 精品美女一区二区| 欧美日韩一区二区三区视频| 99热这里都是精品| 国产成人免费视频网站| 久久99久久99精品免视看婷婷| 亚洲一区在线视频观看| 日韩精品专区在线影院观看 | 欧美丰满嫩嫩电影| 91在线精品一区二区| 国产麻豆成人精品| 亚洲高清在线精品| 亚洲欧美欧美一区二区三区| 国产精品色婷婷久久58| 久久综合九色综合97_久久久| 欧美精品日韩一区| 欧美日韩一区三区| 欧美亚洲国产bt| 91麻豆精品视频| 99久久久久免费精品国产| 成人毛片老司机大片| 国产成人免费视频网站高清观看视频| 蜜桃视频一区二区三区在线观看 | 久久精品国产精品亚洲红杏| 日韩国产高清在线| 亚洲在线中文字幕| 亚洲午夜免费电影| 亚洲成人福利片| 亚洲国产精品影院| 亚洲女人小视频在线观看| 中文字幕一区二区三区不卡| 欧美国产日韩在线观看| 国产精品乱人伦一区二区| 亚洲国产精品99久久久久久久久 | k8久久久一区二区三区| 久草中文综合在线| 国产一区999| 成人性视频免费网站| 成人综合婷婷国产精品久久蜜臀| 国产精品一品视频| jlzzjlzz欧美大全| 日本高清成人免费播放| 欧美午夜精品久久久久久超碰| 欧美三级资源在线| 3751色影院一区二区三区| 欧美v日韩v国产v| 国产亚洲精品久| 亚洲男人的天堂在线观看| 亚洲自拍偷拍欧美| 另类调教123区| 国产91在线看| 色综合天天综合网国产成人综合天 | 欧美一区二区观看视频| 欧美美女一区二区| 2020国产精品| 精品欧美乱码久久久久久1区2区| 精品国内二区三区| 亚洲视频免费观看| 日本系列欧美系列| 国产精品一区二区男女羞羞无遮挡| 成人网在线播放| 欧美日韩国产高清一区二区| 欧美精品一区二区三区蜜桃| 最新日韩在线视频| 天天综合网天天综合色| 成人午夜看片网址| 欧美精选午夜久久久乱码6080| 欧美变态tickle挠乳网站| 国产精品色呦呦| 午夜成人免费电影| 国产成人aaa| 欧美日韩免费观看一区三区| 2020日本不卡一区二区视频| 一区二区国产盗摄色噜噜| 免费成人在线影院| jlzzjlzz亚洲日本少妇| 日韩亚洲欧美在线观看| 国产精品美女一区二区三区| 五月婷婷久久丁香| va亚洲va日韩不卡在线观看| 精品乱人伦一区二区三区| 曰韩精品一区二区| 久国产精品韩国三级视频| 色88888久久久久久影院按摩| 久久夜色精品一区| 欧美一区二区三区四区视频| 欧美国产日韩精品免费观看| 五月天丁香久久| 日韩—二三区免费观看av| 国产精品一区二区三区网站| 不卡在线观看av| 欧美变态tickling挠脚心| 一区av在线播放| 成人一区二区在线观看| 欧美一区二区三区四区五区| 亚洲精品视频免费观看| 国产精品77777| 91麻豆精品国产91久久久久久久久 | 日韩欧美国产综合在线一区二区三区 | 国产片一区二区| 丝袜亚洲另类丝袜在线| 99re成人在线| 久久久久久久久久久黄色| 日韩精品欧美成人高清一区二区| 丁香啪啪综合成人亚洲小说| 日韩三区在线观看| 亚洲成人在线观看视频| 91视频一区二区| 国产精品美女一区二区| 国产精品一区在线观看乱码| 日韩欧美中文字幕精品| 日韩精品91亚洲二区在线观看| 色域天天综合网| 国产精品成人免费在线| 粉嫩在线一区二区三区视频| 欧美精品一区二区在线观看| 青草av.久久免费一区| 6080国产精品一区二区| 亚洲福中文字幕伊人影院| 色婷婷av一区二区三区软件 | 高清不卡一区二区在线| 久久无码av三级| 激情欧美日韩一区二区| 欧美成人国产一区二区| 久久精品国产亚洲高清剧情介绍| 欧美日韩大陆在线| 午夜伦理一区二区| 欧美日韩成人一区| 日韩av一区二区三区| 欧美精品久久天天躁| 日本美女视频一区二区| 日韩一区二区三区四区五区六区| 五月天国产精品| 欧美电影免费观看高清完整版在| 久久激情五月婷婷| 国产日韩一级二级三级| 不卡的电影网站| 亚洲综合色噜噜狠狠| 欧美老人xxxx18| 美女免费视频一区二区| 欧美精品一区二区三区很污很色的 | 色婷婷久久综合| 午夜精品久久久久| 日韩欧美成人激情| 国产v综合v亚洲欧| 一区二区三区不卡在线观看| 欧美日韩高清影院| 国产在线不卡一区| 亚洲天堂av老司机| 欧美久久久久久久久久| 国产一区福利在线| 中文字幕综合网| 欧美一区欧美二区|