通過matlab處理高斯光場分佈圖像

光場分佈圖像處理

1 讀圖與顯示

當被打開文件存在於Matlab的工作路徑中時,可以使用相對路徑;否則需要使用絕對路徑。
讀取圖片的函數爲imread,顯示圖片的函數爲imshow

>> img = imread('test.bmp');%通過相對路徑讀取圖片
>> size(img)
ans =
        1024        1280
>> img = imread('D:\MATLAB\Workfold\1106\test.bmp');%通過絕對路徑讀取圖片
>> size(img)
ans =
        1024        1280
>> imshow(img)
警告: 圖像太大,無法在屏幕上顯示;將以 50% 顯示 
> In images.internal.initSize (line 71)
  In imshow (line 336) 

imshow窗口

2 顯示強度信息

灰度圖並不直觀,所以我們需要通過3D網格圖來將圖像進行三維表示,mesh函數可以做到這一點

>> mesh(img)

得到圖片
在這裏插入圖片描述另外,通過view函數可以操作3D圖的視角。

>> view([0 0 1])

其中,輸入的向量[0 0 1]中的三個數分別代表三個軸,[0 0 1]表示從z軸的方向看去。
在這裏插入圖片描述

3 圖像截取

上面的圖片相對來說過於巨大,存在大量的無用信息,所以需要對圖像進行截取,首先通過函數ginput選擇截取區域。ginput操作的是最後被打開而未被關閉的窗口對象,其輸入參數爲將要選取的點的個數,在這裏我們選擇兩個點將目標區域框起來,其返回值爲選取點的橫縱座標。

>> ginput(2)
ans =
  709.9190  221.9512
  800.6073  314.6341
>> roi = img(221:315,709:801);

然後通過矩陣選取的方式,選擇感興趣的區域,需要注意的是,ginput的輸出參數中,x在前,y在後,但是在截取的時候則爲行在前,列在後,而x代表列數,y代表行數。截取之後的圖片如下圖所示
在這裏插入圖片描述

4 數據擬合

高斯光束在上述截面上自然遵循高斯分佈,可以看到光斑基本符合中心對稱,所以我們可以先將數據降維,可以通過對每一行選出最大值作爲單一座標下的強度

>> arr = max(roi);
>> x = 1:length(arr);	%創建x座標
>> plot(arr)

在這裏插入圖片描述在這裏插入圖片描述

在matlab中,可以通過polyfit進行線性擬合,也可以通過fittype自定義函數進行擬合,不過對於初學者而言,可以通過Curve Fitting工具箱進行傻瓜式擬合。

在這裏插入圖片描述在左下角的Results選框中,即爲擬合信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章