人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

Python光學仿真學習處理高斯光束分布圖像

發(fā)布日期:2021-12-23 01:35 | 文章來源:gibhub

通過python處理光斑圖像

1 相關(guān)包與圖像讀取

首先需要科學計算必備包numpy和畫圖包matplotlib.pyplot,我們通過后者進行圖像數(shù)據(jù)的讀取.

plt.imread讀取圖片之后為數(shù)據(jù)格式為numpy數(shù)組,可以通過成員函數(shù)astype將整型數(shù)據(jù)變成浮點型,有利于后期處理。

plt.imshowimg的數(shù)據(jù)加載到窗口,plt.show()顯示繪圖窗口,默認顯示為偽彩圖。

python自動畫出了偽彩圖,可以通過在plt.imshow的過程中輸入cmap參數(shù)使之得到灰度圖

>>> plt.imshow(img,cmap=plt.cm.gray)
<matplotlib.image.AxesImage object at 0x000002E84F5B4788>
>>> plt.show()

2 圖像截取

由于光斑只占據(jù)圖片中很小一部分,大量的冗余信息等同于噪聲,會對后期的數(shù)據(jù)處理造成影響,故需截取感興趣的區(qū)域,plt.ginput函數(shù)提供一種交互操作方法,可返回鼠標點擊的位置,其輸入?yún)?shù)為選取點數(shù),輸出為點擊的點的坐標。

>>> plt.imshow(img)
<matplotlib.image.AxesImage object at 0x000002E857A21448>
>>> plt.ginput(2)
[(717.0757575757577, 299.8290043290042), (783.5692640692644, 233.33549783549768)]

在python中,通過方括號進行矩陣索引,圖片的截取方法為

>>> roi = img[233:299,717:783]
>>> plt.imshow(roi)
<matplotlib.image.AxesImage object at 0x000002E84F5B4948>
>>> plt.show()

3顯示強度

為了更加直觀地反映光斑強度,以圖片行列為坐標,可以繪制3d強度圖。

繪制二維曲線,要求輸入相應的自變量和因變量,通過點和點的一一對應,畫出曲線。三維圖像繪制亦然,通過np.meshgrid生成網(wǎng)格坐標,作為其 x , y x,y x,y向的自變量,其輸入?yún)?shù)為兩個一維數(shù)組,返回兩個二維數(shù)組,用以表示這兩個數(shù)組方向的坐標。

>>> xNum,yNum = roi.shape#獲取roi的維度
>>> xAxis,yAxis = np.meshgrid(range(yNum),range(xNum))	#range創(chuàng)建長度為xNum的自然數(shù)列
>>> ax = plt.gca(projection='3d')				#建立3D坐標軸
>>> ax.plot_surface(xAxis,yAxis,roi)			#創(chuàng)建面元圖
<mpl_toolkits.mplot3d.art3d.Poly3DCollection object at 0x0000019EAFF19D48>
>>> plt.show()

結(jié)果為

4數(shù)據(jù)擬合

光斑在空間中的分布形式呈中心對稱的特征,故可抽取出其徑向坐標進行降維操作,考慮到數(shù)據(jù)的穩(wěn)定性,并排除非信號區(qū)的影響,可提取每一列的最大值

>>> arr = np.max(roi,0)
>>> x = np.arange(len(arr))
>>> plt.plot(x,arr)
[<matplotlib.lines.Line2D object at 0x0000019EB469EB48>]
>>> plt.show()

結(jié)果如圖所示

在python中,需要通過引入科學計算庫scipy中的優(yōu)化擬合包optimize中的curve_fit函數(shù)來進行數(shù)據(jù)的高斯擬合。curve_fit的輸入?yún)?shù)為擬合函數(shù),自變量和因變量;輸出參數(shù)為擬合函數(shù)中的其他參數(shù)以及擬合評價參數(shù)。

其中高斯函數(shù)的表達形式為

>>> from scipy.optimize import curve_fit
>>> def gauss(x, a, b, c):
...  return a*np.exp(-(x-b)**2/c**2)
...
>>> abc,  para = curve_fit(gauss,x,arr)
>>> abc	#即上式中的a,b,c
array([89.72326971, 35.58522403, 20.86186403])	
>>> fitValue = gauss(x,abc[0],abc[1],abc[2])	#擬合值
>>> plt.scatter(x,arr)			#繪制原始數(shù)據(jù)的散點圖
<matplotlib.collections.PathCollection object at 0x0000019EB5438D88>
>>> plt.plot(x,fitValue)		#繪制擬合數(shù)據(jù)的曲線圖
[<matplotlib.lines.Line2D object at 0x0000019EB46D4048>]
>>> plt.show()

問題

如果包沒有安裝的話,可以在命令行中用pip文件進行安裝

> pip install numpy
> pip install matplotlib
> pip install scipy

以上就是Python光學仿真學習處理高斯光束分布圖像的詳細內(nèi)容,更多關(guān)于Python處理高斯光束分布圖像的資料請關(guān)注本站其它相關(guān)文章!

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關(guān)注
微信

關(guān)注官方微信
頂部