網(wǎng)站首頁 編程語言 正文
引言
對(duì)圖像進(jìn)行形態(tài)學(xué)變換。變換對(duì)象一般為灰度圖或二值圖,功能函數(shù)放在morphology子模塊內(nèi)。
1、膨脹(dilation)
原理:一般對(duì)二值圖像進(jìn)行操作。找到像素值為1的點(diǎn),將它的鄰近像素點(diǎn)都設(shè)置成這個(gè)值。1值表示白,0值表示黑,因此膨脹操作可以擴(kuò)大白色值范圍,壓縮黑色值范圍。一般用來擴(kuò)充邊緣或填充小的孔洞。
功能函數(shù):skimage.morphology.dilation(image,?selem=None)
selem表示結(jié)構(gòu)元素,用于設(shè)定局部區(qū)域的形狀和大小。
from skimage import data
import skimage.morphology as sm
import matplotlib.pyplot as plt
img=data.checkerboard()
dst1=sm.dilation(img,sm.square(5)) #用邊長(zhǎng)為5的正方形濾波器進(jìn)行膨脹濾波
dst2=sm.dilation(img,sm.square(15)) #用邊長(zhǎng)為15的正方形濾波器進(jìn)行膨脹濾波
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)
分別用邊長(zhǎng)為5或15的正方形濾波器對(duì)棋盤圖片進(jìn)行膨脹操作,結(jié)果如下:
可見濾波器的大小,對(duì)操作結(jié)果的影響非常大。一般設(shè)置為奇數(shù)。
除了正方形的濾波器外,濾波器的形狀還有一些,現(xiàn)列舉如下:
morphology.square: 正方形
morphology.disk: ?平面圓形
morphology.ball: 球形
morphology.cube: 立方體形
morphology.diamond: 鉆石形
morphology.rectangle: 矩形
morphology.star: 星形
morphology.octagon: 八角形
morphology.octahedron: 八面體
注意,如果處理圖像為二值圖像(只有0和1兩個(gè)值),則可以調(diào)用:
skimage.morphology.binary_dilation(image,?selem=None)
用此函數(shù)比處理灰度圖像要快。
2、腐蝕(erosion)
函數(shù):skimage.morphology.erosion(image,?selem=None)
selem表示結(jié)構(gòu)元素,用于設(shè)定局部區(qū)域的形狀和大小。
和膨脹相反的操作,將0值擴(kuò)充到鄰近像素。擴(kuò)大黑色部分,減小白色部分。可用來提取骨干信息,去掉毛刺,去掉孤立的像素。
from skimage import data
import skimage.morphology as sm
import matplotlib.pyplot as plt
img=data.checkerboard()
dst1=sm.erosion(img,sm.square(5)) #用邊長(zhǎng)為5的正方形濾波器進(jìn)行膨脹濾波
dst2=sm.erosion(img,sm.square(25)) #用邊長(zhǎng)為25的正方形濾波器進(jìn)行膨脹濾波
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兩個(gè)值),則可以調(diào)用:
skimage.morphology.binary_erosion(image,?selem=None)
用此函數(shù)比處理灰度圖像要快。
3、開運(yùn)算(opening)
函數(shù):skimage.morphology.openning(image,?selem=None)
selem表示結(jié)構(gòu)元素,用于設(shè)定局部區(qū)域的形狀和大小。
先腐蝕再膨脹,可以消除小物體或小斑塊。
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)) #用邊長(zhǎng)為9的圓形濾波器進(jìn)行膨脹濾波
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兩個(gè)值),則可以調(diào)用:
skimage.morphology.binary_opening(image,?selem=None)
用此函數(shù)比處理灰度圖像要快。
4、閉運(yùn)算(closing)
函數(shù):skimage.morphology.closing(image,?selem=None)
selem表示結(jié)構(gòu)元素,用于設(shè)定局部區(qū)域的形狀和大小。
先膨脹再腐蝕,可用來填充孔洞。
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)) #用邊長(zhǎng)為5的圓形濾波器進(jìn)行膨脹濾波
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兩個(gè)值),則可以調(diào)用:
skimage.morphology.binary_closing(image,?selem=None)
用此函數(shù)比處理灰度圖像要快。
5、白帽(white-tophat)
函數(shù):skimage.morphology.white_tophat(image,?selem=None)
selem表示結(jié)構(gòu)元素,用于設(shè)定局部區(qū)域的形狀和大小。
將原圖像減去它的開運(yùn)算值,返回比結(jié)構(gòu)化元素小的白點(diǎn)
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)
函數(shù):skimage.morphology.black_tophat(image,?selem=None)
selem表示結(jié)構(gòu)元素,用于設(shè)定局部區(qū)域的形狀和大小。
將原圖像減去它的閉運(yùn)算值,返回比結(jié)構(gòu)化元素小的黑點(diǎn),且將這些黑點(diǎn)反色。
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')
原文鏈接:https://www.cnblogs.com/denny402/p/5132677.html
相關(guān)推薦
- 2022-02-07 使用laravel框架開發(fā)接口時(shí)post請(qǐng)求報(bào)錯(cuò)419,get請(qǐng)求正常
- 2022-02-25 commons-fileupload文件上傳的時(shí)候?qū)懭雸D片無數(shù)據(jù)
- 2022-05-23 如何在Python?中使用?join()?函數(shù)把列表拼接成一個(gè)字符串_python
- 2022-10-13 云服務(wù)器Windows?Server2012配置FTP服務(wù)器詳細(xì)圖文教程_FTP服務(wù)器
- 2022-09-27 React?函數(shù)式組件和類式組件詳情_React
- 2022-04-24 python使用技巧-文件讀寫_python
- 2022-08-05 Entity?Framework主從表數(shù)據(jù)加載方式_C#教程
- 2022-08-04 解析Mybatis對(duì)sql表的一對(duì)多查詢問題_MsSql
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支