此篇文章主要是詳細介紹了python圖像處理之邊沿輪廊檢驗實例詳細說明,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家多多的發(fā)展,盡早漲薪
前言
在前的python圖像處理簡易過濾中,己經(jīng)介紹了許多算法用于檢驗邊沿,在其中用到較多的canny算法圖像分割。
這篇大家介紹某些其他方式來測試輪廊。
1、搜索輪廊(find_contours)
measure控制模塊中的find_contours()函數(shù)公式,主要用來檢驗灰度圖像邊緣輪廊。
函數(shù)原型為:
skimage.measure.find_contours(array,level)
array:一種二值二維數(shù)組圖象
level:在源圖像搜索輪廊的等級值
回到輪廊目錄結(jié)合,能用for循環(huán)取下每條輪廊。
例1:
importnumpyasnp importmatplotlib.pyplotasplt fromskimageimportmeasure,draw #生成二值測試圖像 img=np.zeros([100,100]) img[20:40,60:80]=1#矩形 rr,cc=draw.circle(60,60,10)#小圓 rr1,cc1=draw.circle(20,30,15)#大圓 img[rr,cc]=1 img[rr1,cc1]=1 #檢測所有圖形的輪廓 contours=measure.find_contours(img,0.5) #繪制輪廓 fig,(ax0,ax1)=plt.subplots(1,2,figsize=(8,8)) ax0.imshow(img,plt.cm.gray) ax1.imshow(img,plt.cm.gray) forn,contourinenumerate(contours): ax1.plot(contour[:,1],contour[:,0],linewidth=2) ax1.axis('image') ax1.set_xticks([]) ax1.set_yticks([]) plt.show()
結(jié)果如下:不同的輪廓用不同的顏色顯示
importmatplotlib.pyplotasplt fromskimageimportmeasure,data,color #生成二值測試圖像 img=color.rgb2gray(data.horse()) #檢測所有圖形的輪廓 contours=measure.find_contours(img,0.5) #繪制輪廓 fig,axes=plt.subplots(1,2,figsize=(8,8)) ax0,ax1=axes.ravel() ax0.imshow(img,plt.cm.gray) ax0.set_title('originalimage') rows,cols=img.shape ax1.axis([0,rows,cols,0]) forn,contourinenumerate(contours): ax1.plot(contour[:,1],contour[:,0],linewidth=2) ax1.axis('image') ax1.set_title('contours') plt.show()
2、逼近多邊形曲線
逼近多邊形曲線有兩個函數(shù):subdivide_polygon()和approximate_polygon()
subdivide_polygon()采用B樣條(B-Splines)來細分多邊形的曲線,該曲線通常在凸包線的內(nèi)部。
函數(shù)格式為:
skimage.measure.subdivide_polygon(coords,degree=2,preserve_ends=False)
coords:坐標(biāo)點序列。
degree:B樣條的度數(shù),默認為2
preserve_ends:如果曲線為非閉合曲線,是否保存開始和結(jié)束點坐標(biāo),默認為false
返回細分為的坐標(biāo)點序列。
approximate_polygon()是基于Douglas-Peucker算法的一種近似曲線模擬。它根據(jù)指定的容忍值來近似一條多邊形曲線鏈,該曲線也在凸包線的內(nèi)部。
函數(shù)格式為:
skimage.measure.approximate_polygon(coords,tolerance)
coords:坐標(biāo)點序列
tolerance:容忍值
返回近似的多邊形曲線坐標(biāo)序列。
例:
importnumpyasnp importmatplotlib.pyplotasplt fromskimageimportmeasure,data,color #生成二值測試圖像 hand=np.array([[1.64516129,1.16145833], [1.64516129,1.59375], [1.35080645,1.921875], [1.375,2.18229167], [1.68548387,1.9375], [1.60887097,2.55208333], [1.68548387,2.69791667], [1.76209677,2.56770833], [1.83064516,1.97395833], [1.89516129,2.75], [1.9516129,2.84895833], [2.01209677,2.76041667], [1.99193548,1.99479167], [2.11290323,2.63020833], [2.2016129,2.734375], [2.25403226,2.60416667], [2.14919355,1.953125], [2.30645161,2.36979167], [2.39112903,2.36979167], [2.41532258,2.1875], [2.1733871,1.703125], [2.07782258,1.16666667]]) #檢測所有圖形的輪廓 new_hand=hand.copy() for_inrange(5): new_hand=measure.subdivide_polygon(new_hand,degree=2) #approximatesubdividedpolygonwithDouglas-Peuckeralgorithm appr_hand=measure.approximate_polygon(new_hand,tolerance=0.02) print("Numberofcoordinates:",len(hand),len(new_hand),len(appr_hand)) fig,axes=plt.subplots(2,2,figsize=(9,8)) ax0,ax1,ax2,ax3=axes.ravel() ax0.plot(hand[:,0],hand[:,1],'r') ax0.set_title('originalhand') ax1.plot(new_hand[:,0],new_hand[:,1],'g') ax1.set_title('subdivide_polygon') ax2.plot(appr_hand[:,0],appr_hand[:,1],'b') ax2.set_title('approximate_polygon') ax3.plot(hand[:,0],hand[:,1],'r') ax3.plot(new_hand[:,0],new_hand[:,1],'g') ax3.plot(appr_hand[:,0],appr_hand[:,1],'b') ax3.set_title('all')
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)韼椭?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/128805.html
摘要:一基礎(chǔ)水平觸發(fā)基本概念讀緩沖區(qū)不為空時讀事件觸發(fā)。開啟時,會把監(jiān)聽套接字所有可讀的事件全部讀取,此時可以使用邊沿觸發(fā)。但為了保證連接不丟失,仍然采用水平觸發(fā)通信套接字設(shè)置對于與客戶端通信使用的套接字默認使用水平觸發(fā)。 一. 基礎(chǔ) 1.1 水平觸發(fā) 基本概念 讀緩沖區(qū)不為空時, 讀事件觸發(fā)。寫緩沖區(qū)不為滿時, 寫事件觸發(fā)。處理流程 accept新的連接, 監(jiān)聽讀事件。讀事件到達, 處理讀...
摘要:今天痞子衡給大家分享的是系統(tǒng)中斷延遲及其測量方法。至此,系統(tǒng)中斷延遲及其測量方法痞子衡便介紹完畢了,掌聲在哪里歡迎訂閱歡迎訂閱文章會同時發(fā)布到我的博客園主頁主頁知乎主頁微信公眾號平臺上。 大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家分享的是Cortex-M系統(tǒng)中斷延遲及其測量方法。 在嵌入式領(lǐng)域里,實時性是個經(jīng)常被我們掛在嘴邊的概念,這里的實時性主要強調(diào)得是當(dāng)外界事件發(fā)生時,...
摘要:目錄概述概述總線機制總線機制的四種工作模式的四種工作模式數(shù)據(jù)交換數(shù)據(jù)交換概述是一種同步串行通信協(xié)議,由一個主設(shè)備和一個或多個從設(shè)備組成,主設(shè)備啟動與從設(shè)備的同步通信,從而完成數(shù)據(jù)的交換。 目錄 1.SPI概述 2.SPI總線機制 3.SPI的四種工作模式 4.SPI數(shù)據(jù)交換 1.SPI概述...
摘要:下面是二維空間的高斯分布函數(shù)公式這個公式被稱作高斯核。高斯模糊使用高斯平均算子來實現(xiàn)的圖像模糊叫高斯模糊,也叫高斯平滑被認為是一種最優(yōu)的圖像平滑處理。 SciPy庫 SciPy庫,與之前我們使用的NumPy和Matplotlib,都是scipy.org提供的用于科學(xué)計算方面的核心庫。相對NumPy,SciPy庫提供了面向更高層應(yīng)用的算法和函數(shù)(其實也是基于NumPy實現(xiàn)的),并以子模塊...
閱讀 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