傅里叶光学随机散斑原理 matlab仿真实现随机散斑
2019年12月26日
本人第三篇博客終于出來了!撒花慶祝。。。。。。
最近在學習傅里葉光學相關知識,將近期整理的知識點做一記錄。主要圍繞隨機散斑,因為主要為自己記錄,加之才疏學淺,實在難以做到表述嚴謹,面面俱到,還望見諒。
這一篇將從以下幾個方面來整理,:
1,何為隨機散斑
在這里,我將“隨機散斑”定義為具有隨機位相的結構光散斑,區別于有特定光學分布形式的散斑,例如哈達瑪(Hadamard)散斑、小波散斑等等,在實際實驗中,隨機散斑則為激光通過毛玻璃后,相位被隨即調制過的散斑樣式。
其具有一下特性:
- 分布隨機
- 分辨率可以做到更高
- 實際光路發散性強,需要有透鏡組約束
2,隨機散斑的影響變量
我們將隨機散斑的生成過程簡單做圖:
隨機散斑產生機理圖如圖,激光經過小孔約束后,照射到毛玻璃G.G.上,經過毛玻璃疊加上隨即相位,再投影到遠處。
在這里我們有輸入參數:
? 波長 lambda
? 孔徑 w
? 傳播距離 z
為了方便描述,我們規定:
? Pattern為一張隨機散斑圖
? Speckle為一張圖中的一個散斑
? Pattern的像素大小為 M = 1024,對應真實長度為 L1 = 1m
那么我們通過計算可得:
? 單個像素對應真實長度為 dx1 = L1/M 米
? Speckle的真實尺寸 s = lambda*z/w 米
?則隨機散斑產生過程可以拆分為:
3,隨機散斑的數學推導
那么我們接下來就按照這幾步進行數學推導。我們先來復習一下傅里葉變換公式:
請記住這個數學形式。
接下來,我們來看一下弗朗禾費傳播,因為在傅里葉光學中,遠場傳播遵從弗朗禾費傳播條件:
距離遠大于源場的平方
則夫瑯禾費傳播公式為:
經過變量替換:
?
表達式可以理解為帶有變量替換的源場的傅里葉變換。
尺寸對應關系:
由上式可得,根據源面參數求得觀測面邊長和采樣間隔:
觀測平面坐標為:
由此,我們可以開始我們對隨機散斑的matlab仿真:
4,隨機散斑的matlab仿真
這個就不多說了,直接整!
%% Generate the Pattern M = 1024; Pattern_a = Create_speckels(650,0.1,0.32); Pattern = Pattern_a(:,:)/max(max(Pattern_a(:,:))); figure(1);imagesc(Pattern);colormap('gray');title('Patterns');其中M是分辨率,650,0.1,0.32分別對應波長,孔徑和傳播距離。
函數Create_speckles附在代碼的下邊即可。
function [I2]=test_speckels(lam_value,w,z) L1=1; M=1024; dx1=L1/M; x1=-L1/2:dx1:L1/2-dx1; y1=x1; lambda=lam_value*10^-9; k=2*pi/lambda; s = lambda*z/w; [X1,Y1] = meshgrid(x1,y1); u1 = circle_(X1/(2*w),Y1/(2*w)).*exp(1j*2*pi*rand(M)); [u2]=propFF(u1,L1,lambda,z); I2=abs(u2.^2);關于弗朗禾費的仿真函數,大家可以參考我給參考書籍,在本文最后的鏈接部分,如果大家懶得查閱書籍,可以從我給的連接中自行下載我寫好的代碼,直接粘貼到主體代碼下邊,就可以直接運行出結果,而且代碼有注釋方便閱讀。不過需要少量下載幣,但是肯定是可以運行的,知識無價,還望諒解。
最終得到的散斑圖像為:
看到這里,第三篇博客就結束了,主要在理論和仿真層面介紹了隨機散斑,還望批評指正。
參考書籍:《傅里葉光學導論》Joseph,W,Goodman?https://item.jd.com/12004623.html
代碼下載鏈接:https://download.csdn.net/download/weixin_40678482/12055524
總結
以上是生活随笔為你收集整理的傅里叶光学随机散斑原理 matlab仿真实现随机散斑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 调用未知DLL中的导出函数
- 下一篇: matlab人脸追踪,求大神帮助我这个菜