
簡介傅里葉光學4f系統邊緣提取資源包面向光學信息處理與圖像處理方向的課程設計、畢業設計及學習參考人員。資源從理論推導出發研究邊緣提取算子尺寸與空間復濾波器空間分布之間的嚴格關系并給出濾波器振幅與位相分布的設定依據同時利用多張圖片驗證邊緣提取效果幫助學習者完整掌握從理論建模到系統實現的鏈路。壓縮包共19個文件含Matlab源碼、14張實驗圖像、PDF報告及說明文檔源碼覆蓋邊緣提取核心實現圖像展示輸入、頻譜、相位及邊緣結果報告詳述推導過程與參數設計包體僅1.2MB結構清晰、便于下載。該資源已有679人學習適合具備基礎傅里葉光學知識、希望動手實現光學圖像邊緣提取的本科生和研究生深入參考與復用。1. 傅里葉光學中的4f系統邊緣提取一次透鏡變換取代逐像素卷積邊緣提取在數字圖像處理里是卷積運算Sobel 核一滑至少 O(N2) 的乘加換成 Canny還得先高斯導數、非極大值抑制。而傅里葉光學給出的做法是把圖像放在 4f 系統的物面第一個透鏡把圖像變換到頻譜面那里正好是光學圖像的空間頻率坐標。邊緣對應高頻成分頻譜中心是零頻和低頻于是只需要在頻譜面擋掉中心區域第二個透鏡做逆變換輸出面上直接就是邊緣增強圖像。這個過程在光速量級并行完成沒有逐像素循環。基于傅里葉光學中的4f系統實現光學圖像的邊緣提取關鍵是濾波器傳遞函數與系統參數匹配適用于光計算加速、顯微成像、機器視覺預檢。從透鏡相位公式到 Python 數值仿真再到實驗調參可以一步步落地。2. 4f系統成像鏈路的前提透鏡傅里葉變換、頻譜面坐標與數值模擬2.1 薄透鏡的傅里葉變換性質從光程差到焦平面空間頻譜薄透鏡對光場的相位調制近似為t(x, y) exp[ -j (π / (λ f)) (x2 y2) ]當一個復振幅分布 U?(x, y) 放在透鏡前焦面在傍軸條件下透鏡后焦面上的光場 U_f(u, v) 可以寫成對 U? 的二維傅里葉變換U_f(u, v) ∝ ? U?(x, y) exp[ -j 2π (u x v y) / (λ f) ] dx dy把這里的 u / (λ f) 和 v / (λ f) 解釋成空間頻率 ξ、η就得到結論后焦面各點位置與圖像的空間頻率一一對應光是圖像頻譜的“物理顯示器”。4f 系統就是在這個事實之上再接一個透鏡把頻譜面上的場做逆變換恢復成一幅圖像。整個系統長度嚴格來說是 4 個焦距物面在透鏡 L1 前焦面L1 后焦面是頻譜面該平面同時作為透鏡 L2 的前焦面L2 后焦面輸出處理后的圖像。中間這段“頻譜面”就是放濾波器的位置。2.2 4f系統的坐標、波長與孔徑約束頻譜面上的物理坐標與空間頻率的換算關系是x_f ξ λ f y_f η λ f如果拍某個方向上的周期條紋周期 d則空間頻率 ν 1/d。在頻譜面上它對應的半徑是r λ f ν這里非常容易把單位搞錯。常見做法是把 ν 用 cycles/mm 表示λ 用 mm 表示f 用 mm 表示算出來的 r 仍然是 mm。例如 λ 532 nm 0.000532 mmf 100 mmν 20 cycles/mm則 r 0.000532 × 100 × 20 1.064 mm。也就是要擋住零頻、保留 20 cycles/mm 以上頻率時遮光圓斑半徑大約是 1 毫米。透鏡口徑和頻譜面濾波器的物理尺寸都要按這個式子預估否則濾出來的邊緣可能只是光斑邊緣而不是圖像邊緣。2.3 用 Python 數值模擬 4f 系統的邊緣提取最小流程在沒有光路時先用numpy.fft把 4f 系統的兩次變換完整模擬一遍。下面這段代碼可以直接跑通輸入一個簡單二值圖形在頻譜面做高通濾波輸出邊緣增強圖。import numpy as np import matplotlib.pyplot as plt N 512 # 采樣點數 pitch 4.8e-6 # 模擬像元尺寸單位 m lam 532e-9 # 波長單位 m f 150e-3 # 透鏡焦距單位 m # 構造模擬物面兩個灰色矩形作為待檢測物體 obj np.zeros((N, N)) obj[96:192, 128:384] 1.0 obj[256:384, 96:256] 0.7 obj[32:64, 32:64] 0.0 # 頻域坐標零頻在數組中心 fx np.fft.fftshift(np.fft.fftfreq(N, dpitch)) fy np.fft.fftshift(np.fft.fftfreq(N, dpitch)) FX, FY np.meshgrid(fx, fy) FU np.sqrt(FX**2 FY**2) # 空間頻率幅度單位 cycles/m # 物體到頻譜面一次傅里葉變換 U_f np.fft.fftshift(np.fft.fft2(obj)) # 高通濾波器擋掉 20 cycles/mm 以下分量 # 20 cycles/mm 20000 cycles/m r0 20e3 H (FU r0).astype(np.float32) # 頻譜面濾波后再還原到像面 U_filt U_f * H out np.abs(np.fft.ifft2(np.fft.ifftshift(U_filt))) # 歸一化輸出方便觀察 out (out - out.min()) / (out.ptp() 1e-12) # 打印有效高頻分量對應的頻譜面半徑 radius_mm lam * f * r0 * 1e3 print(f頻譜面遮擋半徑: {radius_mm:.2f} mm)邏輯說明np.fft.fftfreq(N, dpitch)生成一維空間頻率坐標fftshift讓零頻落在數組中央FU可以理解成頻譜面上各點的空間頻率。U_f是物面的二維傅里葉變換等效于經過透鏡 L1 到達頻譜面。H是一個以零頻為中心的圓形高通閾值掩模把低頻乘成 0第二個透鏡的逆變換就把剩下頻譜還原成邊緣圖像。參數說明r0的單位是 cycles/m寫成20e3是 20 cycles/mm。如果改變波長或焦距要注意同步調整r0否則可能出現“低通濾波”或“全黑”的結果。pitch只影響頻域坐標刻度卻決定FU與真實空間頻率的對應是調參時最容易錯的一條。3. 邊緣提取的空間濾波核高通、拉普拉斯、螺旋相位的傳遞函數選擇3.1 振幅高通擋零頻的最直接做法最常見的 4f 邊緣提取實現是在頻譜面中心放一個不透光圓點。傳遞函數寫成H(ξ, η) 0, sqrt(ξ2 η2) ν0 H(ξ, η) 1, sqrt(ξ2 η2) ν0這個濾波器去除直流和低頻輸出的強度圖邊緣非常亮但需要注意邊緣顯示成“雙線”。原因是圖像中臺階邊緣經過高通后兩側都會出現沖激輪廓人眼看到的是邊緣兩側各一圈亮線。這在工業缺陷檢測里問題不大但如果要做亞像素定位后續還需要數字細化。優點是光學實現簡單一塊膠合玻璃上鍍不透明圓斑就能用缺點是低頻信息全部丟失均勻區域輸出接近零邊緣強度也受照明背景影響。3.2 拉普拉斯濾波器頻域傳遞函數與邊緣位置的對應數字圖像處理中拉普拉斯算子對應頻域乘 -4π2(ξ2 η2)。在 4f 系統里如果能制作一塊振幅透過率隨半徑平方變化的濾波片那么輸出可以直接等效于光學拉普拉斯算子H_lap(ξ, η) -4π2(ξ2 η2)實際工程里很少做這種漸變玻璃因為工藝誤差會直接影響頻響。更常見的做法是在數字仿真里用它作為“標準答案”用來評估實際濾波器的性能。仿真代碼只需把上一節的H替換成H_lap -4.0 * np.pi**2 * (FX**2 FY**2) # 零頻附近直流噪聲會被放大先擋掉 H_lap[FU 20e3] 0這個濾波器放大高頻的同時也放大探測器噪聲。頻譜面高頻區如果有塵埃或灰塵點會在輸出面形成亮斑因此實驗時后面一定要接低通或中值濾波。3.3 螺旋相位濾波各向同性邊緣增強的光學實現螺旋相位濾波的傳遞函數是H_spiral(ξ, η) exp(jθ), θ arctan2(η, ξ)它不遮擋任何頻率而是給頻譜引入一個隨方向旋轉的相位延遲。物面上的邊緣經過逆變換后不同方向的邊緣由于頻譜相位差會被同等增強并且輸出保留直流分量看到的邊緣是“浮雕”而不是純黑背景。這種濾波器近年經常出現在顯微成像和定量相位成像中光學實現是螺旋相位板。THETA np.arctan2(FY, FX) H_spiral np.exp(1j * THETA) U_spiral np.fft.fftshift(np.fft.fft2(obj)) * H_spiral out_spiral np.abs(np.fft.ifft2(np.fft.ifftshift(U_spiral)))注意螺旋相位濾波后輸出是復數場取模后可以看到邊緣但相位信息里還包含更多邊緣方向線索。如果只取強度會丟掉方向信息后續要做高精度定位建議同時保留實部和虛部。3.4 三種濾波核的選型表濾波器傳遞函數輸出邊緣特征光學實現難度對低頻噪聲敏感度振幅高通H0 當 νν0雙線亮邊背景暗低光闌/鍍膜點低拉普拉斯H∝ν2二階微分邊緣兩側正負峰高漸變膜難均勻高螺旋相位Hexp(jθ)浮雕式各向同性邊緣中一體化相位板中選型時優先考慮物面照明穩定性。照明均勻性不夠好時振幅高通的輸出背景波動會遠大于邊緣信號這時螺旋相位濾波的優勢更明顯它保留直流分量不會把背景照明梯度變成假邊緣。4. 4f系統中的3個必調參數截止半徑、焦距像元匹配、相干噪聲抑制4.1 截止半徑的物理換算與微調依據實驗臺上調整高通濾波圓點首先要知道“擋多大”對應“濾掉多低頻”。換算公式為r0_mm λ_mm × f_mm × ν_cutoff_cycles_per_mm以 532 nm 波長為例不同焦距下截止頻率和圓點半徑的關系如下截止頻率f100mmf150mmf200mm10 cycles/mm0.532 mm0.798 mm1.064 mm20 cycles/mm1.064 mm1.596 mm2.128 mm50 cycles/mm2.660 mm3.990 mm5.320 mm注意這個半徑是頻譜面上不透明圓點的半徑。激光光斑如果不到 1 mm直接用直徑 2 mm 的點就能擋掉幾乎所有低頻。調試時不要只看邊緣亮度還要觀察均勻區域的背景波動。背景波動大通常是圓點太小或照明中心沒有對準頻譜面中心。順帶提醒4f 系統頻譜面上的圓點不能理解成“擋住零頻”就完事它對頻譜的衰減是硬截斷。截斷會導致輸出圖像產生衍射振鈴邊緣周圍出現明暗交替條紋。如果實驗里看到邊緣附近一圈一圈的紋路優先懷疑這個原因而不是鏡頭污點。4.2 透鏡焦距與像元尺寸匹配讓邊緣方向落在奈奎斯特頻率內光學邊緣提取最終要送到 CCD 或 CMOS 上量化。探測器對空間頻率有硬上限ν_nyquist 1 / (2 × pixel_size)以 4.8 μm 像元為例奈奎斯特頻率約為 104 cycles/mm。4f 系統輸出面上可用的最大空間頻率由透鏡口徑決定近似為ν_max D / (2 λ f)如果 ν_max 高于探測器奈奎斯特頻率邊緣細節會產生混疊出現摩爾紋或假邊緣。常規做法是讓 ν_max 略低于 ν_nyquist或者直接在輸出面加一個光學低通濾波片。具體到系統設計先量出物面需要檢測的最小特征尺寸 d_min用它的倒數作為目標截止頻率然后倒推f r0 / (λ ν_cutoff)如果算出的焦距太長頻譜面濾波器物理尺寸會很大系統占據桌面空間迅速增加焦距太短頻譜面上高頻和低頻擠在一起難以用普通光闌分離。我一般會把 r0 控制在 13 mm 之間以此倒推焦距。4.3 激光散斑與照明孔徑的折中用激光照明時4f 系統輸出的邊緣圖像上常有一層顆粒狀散斑這種散斑在頻譜上表現為寬帶噪聲和高頻邊緣混在一起。高通濾波后散斑顆粒被放大邊緣圖像看起來像蒙了一層砂紙。解決思路有三個使用旋轉毛玻璃或漫射器降低空間相干性但會降低系統截止頻率需要重新調截止半徑。在光源后加一個小孔光闌把照明光束的數值孔徑控制在頻譜面濾波器尺寸的 1/3 以內。改用可調諧半導體激光或相干長度較短的激光二極管讓散斑對比度下降。這三點沒有絕對優先級。需要做邊緣精確測量的場景優先降低空間相干性只做大面積缺陷檢測的保留激光照明并加大濾波器圓點直徑即可抑制部分散斑。模擬調參時可以做一個快速掃描用 2.3 節的對象對多個r0計算輸出邊緣強度for nu_cut in [10e3, 20e3, 40e3, 80e3]: H (FU nu_cut).astype(np.float32) out_tmp np.abs(np.fft.ifft2(np.fft.ifftshift( np.fft.fftshift(np.fft.fft2(obj)) * H))) edge out_tmp[obj 0.5].mean() bg out_tmp[obj 0.2].mean() print(nu_cut, edge - bg)這里edge - bg是邊緣區域與背景區域的輸出強度差。掃描結果一般會在某個nu_cut處出現峰值繼續增大截止半徑邊緣內部細節被濾掉差值反而下降。現場調光路時就按這個趨勢找靈敏區。5. 光學邊緣提取的驗證方法階躍響應、閾值對接與工程檢查5.1 用一維階躍目標驗證邊緣保持率在做整機標定時先在物面放置一張高反差分標定板拍一條與邊緣方向垂直的線。理想情況下4f 系統輸出的是階躍信號的導數即一個尖峰。測量這個尖峰的半高寬就能評估系統對邊緣的保持能力。step np.ones(256) step[64:] 0.0 f_step np.fft.fftshift(np.fft.fft(step)) freq np.fft.fftshift(np.fft.fftfreq(step.size, dpitch)) flt (np.abs(freq) 20e3).astype(float) out_step np.abs(np.fft.ifft(np.fft.ifftshift(f_step * flt))) fwhm np.sum(out_step 0.5 * out_step.max()) * pitch * 1e6 print(f邊緣響應FWHM: {fwhm:.2f} um)這段代碼把一維階躍當成物面透過率做高通濾波然后通過輸出峰值的半高寬評估邊緣被“拖寬”了多少。FWHM 越小邊緣提取越銳但在實際光路中FWHM 不會小于照明波長和數值孔徑決定的愛里斑尺寸。5.2 從光學邊緣到數字閾值與精定位算法對接光學邊緣提取的輸出是強度值不是二值化邊緣。后續接數字閾值時需要先做歸一化否則不同照明亮度下閾值漂移。常見做法是在輸出圖像上取一個不含目標的背景窗口計算均值 μ 和標準差 σ然后設閾值threshold μ k σk 通常取 3 到 5。如果 k 太小散斑和灰塵會被當成邊緣k 太大低對比度邊緣丟失。這個方法比直接取固定灰度值可靠因為它自動適應照明波動。4f 系統輸出的邊緣是多像素寬亞像素定位建議用灰度重心法而非梯度法。因為光學邊緣由于衍射振鈴并非單峰直接取梯度最大值會鎖定在振鈴環上重心計算則更穩定。5.3 實驗調試檢查清單先確認物面在透鏡 L1 前焦面并用刀口法找頻譜面位置再放濾波器。遮擋中心時觀察像面是否出現對稱的衍射條紋不對稱說明光軸沒有對準圓點中心。用已知分辨率板代替測試圖拍攝邊緣輸出確認 20 cycles/mm 附近有穩定響應。檢查輸出圖像四個角的亮度是否一致不一致可能是透鏡 L2 孔徑切割導致漸暈。記錄光源波長、焦距、截止半徑、探測器曝光時間四個參數保證同一產線可復現。最后一點經驗頻譜面上阻擋低頻的小圓點盡量貼在透明玻璃片上而不是用裸線或大頭針。裸線邊緣衍射會形成明顯的十字或圓環衍射條紋在邊緣圖像上表現為固定圖案用圖像處理很難完全去除。本文還有配套的精品資源點擊獲取