光場分佈圖像處理
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)
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選框中,即爲擬合信息。