自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用 Python 的基于邊緣和基于區(qū)域的分割

開發(fā) 前端
本文通過 Python 實現(xiàn),深入闡述了分割及其兩個重要技術(shù)(基于邊緣的分割和基于區(qū)域的分割)。?

在本文中,我們將重點討論基于邊緣和基于區(qū)域的分割技術(shù)。在討論細節(jié)之前,我們需要了解細分它們分別是什么以及它們是如何工作的。

分割

圖像分割是一種將數(shù)字圖像分割成各種圖像對象的技術(shù)。

區(qū)域中的每個像素(圖像對象)在某些屬性(如顏色、亮度、位置或紋理)上是相似的,這可以降低圖像的復(fù)雜性以便于分析。

在分割的幫助下,還可以從圖像中檢測隱藏信息。

分割算法基于圖像的兩個基本屬性:

  • 像素強度值(邊界方法)
  • 像素相似性(區(qū)域方法)

在下圖中,我們有一張以椅子、桌子、窗戶等為特征的圖像。我們可以借助分割來分別獲取這些對象。中間的圖像有一張椅子、一張桌子和一個窗戶作為我們的分割圖像對象。在最右邊的圖像中,通過標記圖像對象來使用實例分割。

隨著 Python 機器學(xué)習(xí)的到來,分割變得非常容易。

對圖像分割的需求

將一個圖像分割成不同的圖像對象,從中提取信息,然后進行標記,以訓(xùn)練各種機器學(xué)習(xí)模型來解決業(yè)務(wù)問題。

一個例子是在分割的幫助下自動標記出勤的面部識別系統(tǒng)。

分割的另一個應(yīng)用是在醫(yī)學(xué)領(lǐng)域,在檢測到腫瘤、癌癥等嚴重疾病后進行高效和快速的診斷。

圖像分割在機器人等領(lǐng)域也有巨大的應(yīng)用。

基于邊緣的圖像分割

在這種方法中,區(qū)域的邊界彼此之間以及與背景之間的差異很大,允許基于強度(灰度級)的局部不連續(xù)性進行邊界檢測。

換句話說,它是在圖像中定位邊緣的過程。這是理解圖像特征的非常重要的一步,因為我們知道邊緣由有意義的特征組成并且具有重要的信息。

基于區(qū)域的圖像分割

這種方法包括根據(jù)一組特定的標準將圖像劃分為相似的區(qū)域。

基于區(qū)域的分割技術(shù)包括一種通過將圖像分割成具有相似像素特征的不同部分來進行分割的算法。這種技術(shù)搜索輸入圖像中的小塊或大塊,以便進行分割。

它將為選定的塊添加更多的像素,或者進一步將塊點縮小為更小的段,并將它們與其他更小的塊點合并。因此,基于這種方法還有兩種基本的技術(shù): 區(qū)域生長和區(qū)域合并與分裂。

Python 實現(xiàn)

import numpy as np
import matplotlib.pyplot as plt
from skimage import data
coins = data.coins()
hist = np.histogram(coins, bins=np.arange(0, 256))
fig, (ax1) = plt.subplots()
ax1.imshow(coins, cmap=plt.cm.gray,interpolation='nearest')

基于邊緣的圖像分割

from skimage.feature import canny
edges = canny(coins/255.)
fig, ax = plt.subplots(figsize=(4, 3))
ax.imshow(edges, cmap=plt.cm.gray, interpolation='nearest')
ax.axis('off')
ax.set_title('Canny detector')
Text(0.5, 1.0, 'Canny detector')

在該代碼中,我們使用了 canny 庫,這是一種流行的邊緣檢測算法來檢測輸入圖像的邊緣。

通過設(shè)置有效對象的最小大小,可以輕松去除小的虛假對象:

from scipy import ndimage as ndi
fill_coins = ndi.binary_fill_holes(edges)
fig, ax = plt.subplots(figsize=(4, 3))
ax.imshow(fill_coins, cmap=plt.cm.gray, interpolation='nearest')
ax.axis('off')
ax.set_title('Filling the holes')
Text(0.5, 1.0, 'Filling the holes')

基于區(qū)域的分割

from skimage.filters import sobel
elevation_map = sobel(coins)
fig, ax = plt.subplots(figsize=(4, 3))
ax.imshow(elevation_map, cmap=plt.cm.gray, interpolation='nearest')
ax.axis('off')
ax.set_title('elevation_map')
Text(0.5, 1.0, 'elevation_map')

這里,我們從 skimage.filters 中導(dǎo)入 sobel 模塊,它用于在輸入圖像中查找邊緣。

Sobel 變換還幫助我們找到輸入圖像中的垂直和水平邊緣。

總結(jié)

本文通過 Python 實現(xiàn),深入闡述了分割及其兩個重要技術(shù)(基于邊緣的分割和基于區(qū)域的分割)。

責任編輯:趙寧寧 來源: 小白玩轉(zhuǎn)Python
相關(guān)推薦

2020-09-22 09:14:29

邊緣計算

2023-06-21 11:27:53

2021-12-08 17:33:59

邊緣

2015-05-28 10:34:16

TCPsocket

2024-07-04 09:22:24

2024-12-03 08:47:01

2023-06-02 09:16:11

云原生網(wǎng)絡(luò)區(qū)域

2022-09-13 15:33:48

KubeEdge邊緣計算容器

2023-04-11 08:00:00

PythonOtsu閾值算法圖像背景分割

2012-03-14 11:38:16

ibmdw

2018-08-28 06:42:06

邊緣計算SDNMEC

2023-09-12 10:27:41

2023-01-06 08:42:02

學(xué)習(xí)訓(xùn)練

2013-12-17 09:52:13

pythonhadoopmapreduce

2015-07-22 16:16:47

PythonScikit-Lear機器學(xué)習(xí)

2010-02-03 17:29:06

Python編譯

2024-12-11 08:47:47

2022-04-01 10:51:33

TektonArgoCDGitOps

2009-11-11 15:43:35

2023-07-04 08:28:27

點贊
收藏

51CTO技術(shù)棧公眾號