小編寫這篇文章的主要目的,主要是給大家介紹關于python數字圖像處理的一些相關介紹,包括基本的形態學濾波,比如可以使用數字圖像去進行處理類似的形態學濾波。那么,具體的內容呢?下面就給大家詳細解答下。
引言
對圖像進行形態學變換。變換對象一般為灰度圖或二值圖,功能函數放在morphology子模塊內。
1、膨脹(dilation)
原理:一般對二值圖像進行操作。找到像素值為1的點,將它的鄰近像素點都設置成這個值。1值表示白,0值表示黑,因此膨脹操作可以擴大白色值范圍,壓縮黑色值范圍。一般用來擴充邊緣或填充小的孔洞。
功能函數:skimage.morphology.dilation(image,selem=None)
selem表示結構元素,用于設定局部區域的形狀和大小。
from skimage import data import skimage.morphology as sm import matplotlib.pyplot as plt img=data.checkerboard() dst1=sm.dilation(img,sm.square(5))#用邊長為5的正方形濾波器進行膨脹濾波 dst2=sm.dilation(img,sm.square(15))#用邊長為15的正方形濾波器進行膨脹濾波 plt.figure('morphology',figsize=(8,8)) plt.subplot(131) plt.title('origin image') plt.imshow(img,plt.cm.gray) plt.subplot(132) plt.title('morphological image') plt.imshow(dst1,plt.cm.gray) plt.subplot(133) plt.title('morphological image') plt.imshow(dst2,plt.cm.gray)
分別用邊長為5或15的正方形濾波器對棋盤圖片進行膨脹操作,結果如下:
可見濾波器的大小,對操作結果的影響非常大。一般設置為奇數。
除了正方形的濾波器外,濾波器的形狀還有一些,現列舉如下:
morphology.square:正方形
morphology.disk:平面圓形
morphology.ball:球形
morphology.cube:立方體形
morphology.diamond:鉆石形
morphology.rectangle:矩形
morphology.star:星形
morphology.octagon:八角形
morphology.octahedron:八面體
注意,如果處理圖像為二值圖像(只有0和1兩個值),則可以調用:
skimage.morphology.binary_dilation(image,selem=None)
用此函數比處理灰度圖像要快。
2、腐蝕(erosion)
函數:skimage.morphology.erosion(image,selem=None)
selem表示結構元素,用于設定局部區域的形狀和大小。
和膨脹相反的操作,將0值擴充到鄰近像素。擴大黑色部分,減小白色部分。可用來提取骨干信息,去掉毛刺,去掉孤立的像素。
from skimage import data import skimage.morphology as sm import matplotlib.pyplot as plt img=data.checkerboard() dst1=sm.erosion(img,sm.square(5))#用邊長為5的正方形濾波器進行膨脹濾波 dst2=sm.erosion(img,sm.square(25))#用邊長為25的正方形濾波器進行膨脹濾波 plt.figure('morphology',figsize=(8,8)) plt.subplot(131) plt.title('origin image') plt.imshow(img,plt.cm.gray) plt.subplot(132) plt.title('morphological image') plt.imshow(dst1,plt.cm.gray) plt.subplot(133) plt.title('morphological image') plt.imshow(dst2,plt.cm.gray)
注意,如果處理圖像為二值圖像(只有0和1兩個值),則可以調用:
skimage.morphology.binary_erosion(image,selem=None)
用此函數比處理灰度圖像要快。
3、開運算(opening)
函數:skimage.morphology.openning(image,selem=None)
selem表示結構元素,用于設定局部區域的形狀和大小。
先腐蝕再膨脹,可以消除小物體或小斑塊。
from skimage import io,color import skimage.morphology as sm import matplotlib.pyplot as plt img=color.rgb2gray(io.imread('d:/pic/mor.png')) dst=sm.opening(img,sm.disk(9))#用邊長為9的圓形濾波器進行膨脹濾波 plt.figure('morphology',figsize=(8,8)) plt.subplot(121) plt.title('origin image') plt.imshow(img,plt.cm.gray) plt.axis('off') plt.subplot(122) plt.title('morphological image') plt.imshow(dst,plt.cm.gray) plt.axis('off')
注意,如果處理圖像為二值圖像(只有0和1兩個值),則可以調用:
skimage.morphology.binary_opening(image,selem=None)
用此函數比處理灰度圖像要快。
4、閉運算(closing)
函數:skimage.morphology.closing(image,selem=None)
selem表示結構元素,用于設定局部區域的形狀和大小。
先膨脹再腐蝕,可用來填充孔洞。
from skimage import io,color import skimage.morphology as sm import matplotlib.pyplot as plt img=color.rgb2gray(io.imread('d:/pic/mor.png')) dst=sm.closing(img,sm.disk(9))#用邊長為5的圓形濾波器進行膨脹濾波 plt.figure('morphology',figsize=(8,8)) plt.subplot(121) plt.title('origin image') plt.imshow(img,plt.cm.gray) plt.axis('off') plt.subplot(122) plt.title('morphological image') plt.imshow(dst,plt.cm.gray) plt.axis('off')
注意,如果處理圖像為二值圖像(只有0和1兩個值),則可以調用:
skimage.morphology.binary_closing(image,selem=None)
用此函數比處理灰度圖像要快。
5、白帽(white-tophat)
函數:skimage.morphology.white_tophat(image,selem=None)
selem表示結構元素,用于設定局部區域的形狀和大小。
將原圖像減去它的開運算值,返回比結構化元素小的白點
from skimage import io,color import skimage.morphology as sm import matplotlib.pyplot as plt img=color.rgb2gray(io.imread('d:/pic/mor.png')) dst=sm.white_tophat(img,sm.square(21)) plt.figure('morphology',figsize=(8,8)) plt.subplot(121) plt.title('origin image') plt.imshow(img,plt.cm.gray) plt.axis('off') plt.subplot(122) plt.title('morphological image') plt.imshow(dst,plt.cm.gray) plt.axis('off')
6、黑帽(black-tophat)
函數:skimage.morphology.black_tophat(image,selem=None)
selem表示結構元素,用于設定局部區域的形狀和大小。
將原圖像減去它的閉運算值,返回比結構化元素小的黑點,且將這些黑點反色。
from skimage import io,color import skimage.morphology as sm import matplotlib.pyplot as plt img=color.rgb2gray(io.imread('d:/pic/mor.png')) dst=sm.black_tophat(img,sm.square(21)) plt.figure('morphology',figsize=(8,8)) plt.subplot(121) plt.title('origin image') plt.imshow(img,plt.cm.gray) plt.axis('off') plt.subplot(122) plt.title('morphological image') plt.imshow(dst,plt.cm.gray) plt.axis('off')
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家帶來幫助。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/128820.html
??歡迎訂閱《從實戰學python》專欄,用python實現爬蟲、辦公自動化、數據可視化、人工智能等各個方向的實戰案例,有趣又有用!?? 更多精品專欄簡介點這里 治愈生活的良方 就是保持對生活的熱愛 前言 哈嘍,大家好,我是一條。 每次和女朋友出去玩,拍照是必須的,天氣好還行,天氣要是不好,加上我這破手機,那拍的簡直慘不忍睹,自己都不過去。 但是沒什么能難倒程序員的,為了不挨罵,連夜寫出去霧...
摘要:但無論是用于何種用途,這些圖像都需要進行處理。圖像處理中的常見任務包括顯示圖像,基本操作如裁剪翻轉旋轉等,圖像分割,分類和特征提取,圖像恢復和圖像識別。圖像處理系統有時被稱為圖像處理的瑞士軍刀。 showImg(https://segmentfault.com/img/remote/1460000019631626); 原文標題:10 Python image manipulation...
摘要:之成為圖像處理任務的最佳選擇,是因為這一科學編程語言日益普及,并且其自身免費提供許多最先進的圖像處理工具。該庫包含基本的圖像處理功能,包括點操作使用一組內置卷積內核進行過濾以及顏色空間轉換。圖像處理系統有時被稱為圖像處理的瑞士軍刀。 showImg(https://segmentfault.com/img/remote/1460000019442221);編譯:張秋玥、小七、蔣寶尚 本...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1982·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02