国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python光學仿真學習處理高斯光束分布圖像

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

2022-02-12 12:10微小冷 Python

這篇文章主要為大家介紹了Python光學仿真學習之如何處理高斯光束的分布圖像,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步

 

通過python處理光斑圖像

 

1 相關包與圖像讀取

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

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

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

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

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

 

2 圖像截取

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

>>> 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()

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

 

3顯示強度

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

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

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

結果為

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

 

4數據擬合

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

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

結果如圖所示

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

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

其中高斯函數的表達形式為

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

>>> 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)			#繪制原始數據的散點圖
<matplotlib.collections.PathCollection object at 0x0000019EB5438D88>
>>> plt.plot(x,fitValue)		#繪制擬合數據的曲線圖
[<matplotlib.lines.Line2D object at 0x0000019EB46D4048>]
>>> plt.show()

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

 

問題

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

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

以上就是Python光學仿真學習處理高斯光束分布圖像的詳細內容,更多關于Python處理高斯光束分布圖像的資料請關注服務器之家其它相關文章!

原文鏈接:https://blog.csdn.net/m0_37816922/article/details/102943533

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 黄色动漫在线观看 | 久久综合久色欧美综合狠狠 | 亚洲成人久久久 | 亚洲综合无码一区二区 | 99在线视频播放 | 黄色在线 | av在线一区二区三区 | 精精国产xxxx视频在线播放 | 日韩中文在线观看 | 国产精品久久久精品 | 中文一区 | 亚洲视频精品在线 | 一区二区三区国产 | 91av国产视频 | av免费网站在线观看 | 在线观看国产成人av片 | 成人影音| 国产精品1区2区 | 日本中文字幕在线观看 | 国产一区久久 | 久久国产精品久久久久久电车 | 国产欧美在线观看 | 日韩精品 电影一区 亚洲 | 91久久久久久久久 | 韩日一区二区三区 | 精品一级 | 成人精品网站在线观看 | 成人精品网站在线观看 | 日韩欧美视频一区 | 可以在线观看的av网站 | 国产免费一区二区三区 | 国产视频福利 | 日韩av福利 | 看a网址| 亚洲精品久久久久国产 | 国产精品成人在线观看 | 亚洲三级黄色 | 欧美视频在线一区 | 成人av在线网站 | 福利视频网址导航 | 亚洲一二三|