摩爾條紋 原理以及matlab 實現

一、簡介

莫爾條紋的形成原理-CSDN博客

“莫爾”一詞源于法文“Moire”,其原本的含義是“波動”或者“起波紋的”。早在古代時期,人們便偶然發現,當把兩塊薄的絲綢織物相互疊加放置時,能夠看到一種呈現不規則形態的花紋。此后,人們就把由兩種條紋相互疊加而產生的圖形命名為莫爾條紋。

在1874年的時候,英國著名的物理學家瑞利率先將莫爾條紋當作一種計量測試的手段,由此開創了莫爾測試技術這一嶄新的領域。

從廣義的范疇來講,莫爾測試技術理應涵蓋所有把莫爾圖案作為計量測試手段的各類方法。不過,按照習慣上的說法,它通常是特指利用計量光柵元件來產生莫爾條紋的那一類計量測試方法,也就是我們常說的光柵莫爾條紋法。

時至今日,莫爾條紋已經在科學研究以及工程技術等諸多領域得到了極為廣泛的應用。作為一種精密的計量手段,莫爾條紋可應用于測角、測長、測振等不同的專業領域當中。并且,隨著光電子技術不斷向前發展,莫爾條紋在自動跟蹤、軌跡控制、變形測試以及三維物體表面輪廓測試等方面,同樣有著十分廣泛的應用。

簡單的說就是:

莫爾條紋(Moire Pattern)是一種由兩個周期性圖案重疊時產生的干涉現象,表現為明暗相間的條紋。其原理基于光的干涉和周期結構的相互作用。

?

原本靜止的條紋在移動另一個條紋的時候整個都動起來了?

莫爾條紋是什么?當柵格紙經過“圖案”時,有趣的科學現象發生了_嗶哩嗶哩_bilibili

二、分類

?針對莫爾條紋的形成原理,已經發展出了多種理論,大致可歸納為以下三種:

一,基于遮光原理來闡釋。該理論主張莫爾條紋的產生,是源于一塊光柵的不透光線紋對另一塊光柵透光縫隙產生的遮擋作用。所以,能夠依據光柵副疊合線紋的交點軌跡,去呈現亮條紋的亮度分布情況。
二,基于衍射干涉原理來解釋。按照這一理論,由條紋所構建形成的全新亮度分布,可以通過衍射波之間相互干涉所產生的結果來加以描述。


三,基于傅里葉變換原理來解釋。依據傅里葉變換原理,能夠把光柵副透射光場分解成為具有不同空間頻率的離散分量,而莫爾條紋恰恰是由那些低于光柵頻率的空間頻率項所構成的。
?

三、遮光原理

遮光原理

當兩個具有相似周期旋轉角度的圖案(如光柵、網格、線條等)重疊時,它們的透光或反射部分會相互調制,產生低頻的、肉眼可見的條紋(莫爾條紋)。這個光柵結構可以是實際光柵,也可以是光柵的像。由于兩塊光柵的柵距相等(或近似相等),并且線紋寬度等于線紋間距,線紋間又有微小的夾角,那么兩塊光柵的線紋必然在空間相交。透過光線的區域形成亮帶,不透光的區域形成暗帶,其余區域介于亮帶與暗帶之間,這樣就構成了清晰的莫爾條紋圖像。

最常用的方法:

幾何法

直觀、簡便只適用于局部

序數方程法

適用于全場,可導出莫爾條紋方程。

方法1:疊加兩個正弦波柵格

% 設置參數
width = 500; % 圖像寬度
height = 500; % 圖像高度
f1 = 0.05; % 第一個柵格的頻率
f2 = 0.04; % 第二個柵格的頻率
theta = 10; % 第二個柵格的旋轉角度(度)% 創建網格
[x, y] = meshgrid(1:width, 1:height);% 生成第一個正弦波柵格(水平方向)
pattern1 = sin(2*pi*f1*x);
imshow(pattern1, []);
title('正弦波柵格條紋1')% 生成第二個正弦波柵格(旋轉一定角度)
x_rot = x*cosd(theta) + y*sind(theta);
pattern2 = sin(2*pi*f2*x_rot);
imshow(pattern2, []);
title('正弦波柵格條紋2')% 疊加兩個圖案生成摩爾條紋
moire = pattern1 + pattern2;imshow(pattern1, []);
imshow(pattern2, []);% 顯示結果
figure;
imshow(moire, []);
title('正弦波柵格生成的摩爾條紋');
colormap(gray);

正弦波1

正弦波2

合成的摩爾波紋

?方法2:疊加兩個圓形柵格

% 設置參數
width = 500;
height = 500;
f1 = 0.03; % 第一個圓形柵格的頻率
f2 = 0.025; % 第二個圓形柵格的頻率
cx = width/2; % 中心x坐標
cy = height/2; % 中心y坐標% 創建網格
[x, y] = meshgrid(1:width, 1:height);% 計算到中心的距離
r = sqrt((x-cx).^2 + (y-cy).^2);% 生成兩個圓形柵格
pattern1 = sin(2*pi*f1*r);pattern2 = sin(2*pi*f2*r);
imshow(pattern2, []);
title('圓形柵格生成的條紋2')% 疊加生成摩爾條紋
moire = pattern1 + pattern2;% 顯示結果
figure;
imshow(moire, []);
title('圓形柵格生成的摩爾條紋');
colormap(gray);

圓形波1

圓形波2?

圓形摩爾紋?

方法3:疊加兩個不同角度的直線柵格

合成條紋:

?

% 參數設置
N = 512; % 圖像大小
d1 = 20; % 光柵1周期(像素)
d2 = 22; % 光柵2周期(像素)
theta = 5; % 光柵2旋轉角度(度)% 生成光柵1(水平方向)
[x, y] = meshgrid(1:N, 1:N);
grating1 = 0.5 + 0.5 * cos(2*pi*x/d1);% 生成光柵2(旋轉theta角度)
theta_rad = deg2rad(theta);
x_rot = x*cos(theta_rad) + y*sin(theta_rad);
grating2 = 0.5 + 0.5 * cos(2*pi*x_rot/d2);% 疊加光柵生成摩爾條紋
moire_pattern = grating1 .* grating2;% 顯示結果
figure;
subplot(1,3,1); imshow(grating1, []); title('光柵1');
subplot(1,3,2); imshow(grating2, []); title('光柵2');
subplot(1,3,3); imshow(moire_pattern, []); title('摩爾條紋');

總結:

四、衍射干涉原理

方法一:雙光束干涉
  1. 裝置:分束器將激光分為兩束相干光,以微小角度?θ交匯。

  2. 干涉:兩束光在重疊區域形成等間距干涉條紋(類似楊氏雙縫),條紋間距?Δx?為:

    其中?λ?為光波長。

  3. 摩爾條紋:若干涉光柵與另一光柵疊加,會形成次級摩爾條紋。

% 參數設置
N = 512; % 圖像大小
lambda = 10; % 波長(像素)
theta = 0.1; % 兩光束夾角(弧度)% 生成干涉條紋
[x, y] = meshgrid(1:N, 1:N);  % 生成512*512 的圖像
beam1 = exp(1i * 2*pi * sin(theta/2) * x / lambda);
beam2 = exp(1i * 2*pi * sin(-theta/2) * x / lambda);
interference = abs(beam1 + beam2).^2;% 顯示結果
figure;
imshow(interference, []);
title('雙光束干涉條紋');colorbar;

方法二:Talbot 自成像效應
  1. 單光柵衍射:一束平行光通過周期性光柵后,在特定距離會自成像。

  2. 疊加第二光柵:在 Talbot 距離附近放置第二光柵,與自成像光柵疊加產生摩爾條紋。

% 參數設置
N = 512; % 圖像大小
d = 20; % 光柵周期(像素)
lambda = 632.8e-9; % 波長(m)
z_T = 2 * d^2 / lambda; % Talbot 距離(理論計算)% 生成初始光柵(正弦光柵)
[x, y] = meshgrid(1:N, 1:N);
grating = 0.5 + 0.5 * cos(2*pi*x/d);% 模擬光傳播(菲涅爾衍射)
k = 2*pi/lambda;
z = z_T / 10; % 觀察距離(小于Talbot距離)
propagated = fft2(grating);
[fx, fy] = meshgrid((-N/2:N/2-1)/N, (-N/2:N/2-1)/N);
H = exp(1i * k * z * sqrt(1 - (lambda*fx).^2 - (lambda*fy).^2));
propagated = ifft2(propagated .* fftshift(H));% 疊加第二光柵生成摩爾條紋
grating2 = 0.5 + 0.5 * cos(2*pi*x/(d+2)); % 周期略有不同
moire_talbot = abs(propagated) .* grating2;% 顯示結果
figure;
subplot(1,3,1); imshow(grating, []); title('初始光柵');
subplot(1,3,2); imshow(abs(propagated), []); title('衍射后光場');
subplot(1,3,3); imshow(moire_talbot, []); title('Talbot 摩爾條紋');

五、傅里葉變換原理

?方法1:頻域合成兩光柵的疊加

步驟:

其核心思想是通過頻域操作(如濾波、頻譜疊加)控制空域周期性結構的疊加效果

  1. 在頻域生成兩個不同頻率的正弦光柵頻譜。

  2. 通過傅里葉逆變換(IFFT)得到空域光柵。

  3. 疊加兩光柵生成摩爾條紋。

% 參數設置
N = 512;                % 圖像大小
f1 = 1/20;              % 光柵1的頻率(周期=20像素)
f2 = 1/22;              % 光柵2的頻率(周期=22像素)% 生成頻域坐標
[fx, fy] = meshgrid(-N/2:N/2-1);
fx = fx / N; fy = fy / N;% 生成兩個光柵的頻譜(狄拉克函數模擬理想光柵)
G1 = zeros(N);
G1(abs(fx - f1) < 0.001 & abs(fy) < 0.001) = 1;  % 光柵1(沿x方向)
G2 = zeros(N);
G2(abs(fx - f2) < 0.001 & abs(fy) < 0.001) = 1;  % 光柵2(沿x方向)% 傅里葉逆變換得到空域光柵
grating1 = real(ifft2(ifftshift(G1)));
grating2 = real(ifft2(ifftshift(G2)));% 疊加光柵生成摩爾條紋
moire_pattern = grating1 .* grating2;% 顯示結果
figure;
subplot(1,3,1); imshow(grating1, []); title('光柵1 (頻域生成)');
subplot(1,3,2); imshow(grating2, []); title('光柵2 (頻域生成)');
subplot(1,3,3); imshow(moire_pattern, []); title('摩爾條紋');

?方法2:頻域直接構造摩爾條紋頻譜

  1. 摩爾條紋的頻譜是兩光柵頻譜的卷積。

  2. 直接在頻域構造卷積后的頻譜,再逆變換得到空域條紋。

% 參數設置
N = 512;
f1 = 1/20;      % 光柵1頻率
f2 = 1/22;      % 光柵2頻率% 生成頻域坐標
[fx, fy] = meshgrid(-N/2:N/2-1);
fx = fx / N;% 構造兩光柵頻譜的卷積(摩爾條紋頻譜)
moire_spectrum = zeros(N);
moire_spectrum(abs(fx - (f1 - f2)) < 0.001) = 1;  % 低頻摩爾條紋成分% 傅里葉逆變換得到空域摩爾條紋
moire_pattern = real(ifft2(ifftshift(moire_spectrum)));% 顯示結果
figure;
subplot(1,2,1); imshow(log(abs(fftshift(moire_spectrum)) + 1), []); title('摩爾條紋頻譜');
subplot(1,2,2); imshow(moire_pattern, []); title('空域摩爾條紋');

?方法3:通過頻域濾波增強摩爾條紋

  1. 對兩光柵疊加后的圖像進行傅里葉變換。

  2. 在頻域濾除高頻成分,保留低頻摩爾條紋。

  3. 逆變換后得到純凈的摩爾條紋。

% 生成兩光柵疊加的空域圖像(同方法1)
[x, y] = meshgrid(1:N);
grating1 = cos(2*pi*f1*x);
grating2 = cos(2*pi*f2*x);
moire_raw = grating1 .* grating2;% 傅里葉變換
moire_fft = fftshift(fft2(moire_raw));% 設計低通濾波器(保留低頻摩爾條紋)
cutoff = 0.02;  % 截止頻率
H = sqrt(fx.^2 + fy.^2) < cutoff;% 頻域濾波
filtered_spectrum = moire_fft .* H;% 逆變換得到濾波后的摩爾條紋
moire_filtered = real(ifft2(ifftshift(filtered_spectrum)));% 顯示結果
figure;
subplot(1,3,1); imshow(moire_raw, []); title('原始疊加光柵');
subplot(1,3,2); imshow(log(abs(moire_fft) + 1), []); title('原始頻譜');
subplot(1,3,3); imshow(moire_filtered, []); title('濾波后摩爾條紋');

關鍵參數說明

參數作用
f1, f2控制兩光柵的頻率,差異越小,摩爾條紋周期越大。
cutoff低通濾波的截止頻率,影響摩爾條紋的清晰度。
N圖像分辨率,值越大模擬越精細,但計算量增加。

?六、應用場景

  • 精密測量:用于檢測微小位移、形變或振動(如光柵尺)。

  • 防偽技術:紙幣、證件上的莫爾圖案用于防偽。

  • 圖像處理:消除掃描圖像時的摩爾紋(如去摩爾紋濾鏡)。

  • 藝術設計:通過疊加圖案創造動態視覺效果。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82768.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82768.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82768.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【海康USB相機被HALCON助手連接過后,MVS顯示無法連接故障。】

在Halcon里使用助手調用海康USB相機時&#xff0c;如果這個界面點擊了【是】 那么恭喜你&#xff0c;相機只能被HALCON調用使用&#xff0c;使用MVS或者海康開發庫&#xff0c;將查找不到相機 解決方式&#xff1a; 右鍵桌面【此電腦】圖標 ->選擇【管理】 ->選擇【設備…

數據治理是什么意思?數據治理平臺有哪些?

目錄 一、數據治理的概念 1. 數據治理的定義 2. 數據治理的目標 二、數據治理的實施流程 1. 規劃階段 2. 評估階段 3. 執行階段 4. 監控與評估階段 三、常見的數據治理平臺 1. FineDataLink 2. IBM InfoSphere Information Governance Catalog 四、總結 隨著企業業…

高效工具-tldr

喜歡使用命令操作的小伙伴&#xff0c;肯定會遇到一個問題&#xff0c;查看命令如何使用時&#xff0c;會列出一堆&#xff0c;特別是英文&#xff0c;看的直發懵。前段時間我也是研究git命令&#xff0c;也遇到了類似的問題。好在有大數據&#xff0c;幫我普及相關的知識。 在…

安卓添加設備節點權限和selinux訪問權限

# 1 修改設備節點權限及配置屬性設置節點值 ## 1.1 修改設備節點權限 ### 1.1.1 不會手動卸載的節點 在system/core/rootdir/init.rc中添加節點權限 在on boot下面添加 chown system system /sys/kernel/usb/host chmod 0664 /sys/kernel/usb/host ### 1.1.2 支持熱插拔的…

ssm學習筆記(尚硅谷) day1

創建新項目 maven的聚合 1. 標記父類項目 標簽<packaging>pom</packaging>表示將該項目標記為父類項目&#xff0c;必須添加。 以下是標簽<packing>的常見取值 groupId在pom.xml中&#xff0c;可以從pom.xml直接修改。 2. 通過<modules>添加子項目…

基于Java,SpringBoot,Vue,UniAPP醫院預約掛號買藥就診病例微信小程序系統設計

摘要 隨著醫療信息化的不斷推進以及“互聯網醫療”模式的廣泛普及&#xff0c;傳統醫院掛號流程中存在的排隊時間長、資源分配不均等問題日益凸顯&#xff0c;急需通過數字化手段加以解決。本研究設計并實現了一套基于Java、SpringBoot、Vue與UniAPP技術棧的醫院預約掛號微信小…

Axure項目實戰:運輸統計頁引入echarts實現高保真設計(JS代碼ctrl+c ctrl+v懂得來)

親愛的小伙伴,在您瀏覽之前,煩請關注一下,在此深表感謝!如有幫助請訂閱專欄! Axure產品經理精品視頻課已登錄CSDN可點擊學習https://edu.csdn.net/course/detail/40420 案例視頻: 數據統計引入echarts示例演示 課程主題:運輸統計頁引入echarts實現高保真設計 主要內容…

python打卡day39

圖像數據與顯存 知識點回顧 圖像數據的格式&#xff1a;灰度和彩色數據模型的定義顯存占用的4種地方 模型參數梯度參數優化器參數數據批量所占顯存神經元輸出中間狀態 batchisize和訓練的關系 作業&#xff1a;今日代碼較少&#xff0c;理解內容即可 在 PyTorch 中&#xff0c;…

15.1 【基礎項目】使用 HTML、CSS 和 TypeScript 構建的簡單計數器應用

一個簡單的計數器應用是學習如何集成 HTML、CSS 和 TypeScript 的絕佳項目。該應用允許用戶對計數值進行增加、減少和重置&#xff0c;展示了 TypeScript 中基本的 DOM 操作和事件處理。 我們將構建的內容 我們將創建一個具有以下功能的計數器應用&#xff1a; 增加計數值減…

RT-Thread源碼閱讀(3)——內核對象管理

_object_container對象容器數組 在RT-Thread操作系統中&#xff0c;_object_container數組的作用是按類型分類管理內核對象&#xff0c;提供高效的類型檢查、資源管理和統計功能 struct rt_list_node {struct rt_list_node *next; /**< point to…

《智能醫學》征稿通知:7天可見刊,專科及以上可發表

香港科學出版社(Hong Kong Scientific Publishers Journals)是一家全球獨立高質量的學術出版機構&#xff0c;遵循國際開放獲取的出版(OA)原則。現已與科檢易學術攜手共同征集高質量文章。目前可出版來自高等學校、科研院所和企業的先進科技成果。包括理、工、農、醫、經、管、…

如何利用categraf的exec插件實現對Linux主機系統用戶及密碼有效期進行監控及告警?

需求描述 Categraf作為夜鶯監控平臺的數據采集工具&#xff0c;為了保障Linux主機的安全&#xff0c;需要實現對系統用戶密碼有效期的監控&#xff0c;并在密碼即將到期時及時告警&#xff0c;以提醒運維人員更改密碼。本章將詳細介紹如何利用Categraf的exec插件來實現這一功能…

RV1126-OPENCV 交叉編譯

一.下載opencv-3.4.16.zip到自己想裝的目錄下 二.解壓并且打開 opencv 目錄 先用 unzip opencv-3.4.16.zip 來解壓 opencv 的壓縮包&#xff0c;并且進入 opencv 目錄(cd opencv-3.4.16) 三. 修改 opencv 的 cmake 腳本的內容 先 cd platforms/linux 然后修改 arm-gnueabi.to…

如何加載私鑰為 SecKeyRef

本文介紹如何在 iOS/macOS 下將私鑰加載為 SecKeyRef&#xff0c;涵蓋 PEM 格式的 ECC 密鑰讀取、X9.63 數據構建、以及與 Keychain 的集成。 1. 使用 SecKeyCreateWithData 加載私鑰 Apple 提供的 SecKeyCreateWithData 方法可以直接將密鑰數據加載為 SecKeyRef 對象。 SecK…

Missashe考研日記—Day44-Day50

Missashe考研日記—Day44-Day50 寫在面前 本系列博客用于記錄博主一周的學習進度&#xff0c;具體知識總結在目前已有的筆記中&#xff1a;1.高數強化學習筆記2.計網復習筆記3.新增&#xff1a;線代題型總結 專業課408 這周先是把計網第三章數據鏈路層剩下的局域網以及之后…

Windows下安裝并使用kubectl查看K8S日志

【1】安裝kubectl 官網文檔&#xff1a;https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-windows/ 下載后得到 kubectl.exe&#xff0c;放到一個目錄下&#xff0c;然后配置環境變量。 此時CMD 進入DOS命令窗口 kubectl version【2】配置config文件 其實就是…

攻防世界János-the-Ripper

打開壓縮包是一個文件&#xff0c;用010Editor打開可以發現里面有隱藏文件flag.txt 此時想到分離文件&#xff0c;利用binwalk工具 利用binwalk生成出的是一個壓縮包&#xff0c;解壓縮但是發現竟然解壓需要密碼 這里就可以開始暴力破解密碼了&#xff0c;這里我用的是ARCHPR工…

XPlifeapp:高效打印,便捷生活

在數字化時代&#xff0c;雖然電子設備的使用越來越普遍&#xff0c;但打印的需求依然存在。無論是學生需要打印課表、資料&#xff0c;還是職場人士需要打印名片、報告&#xff0c;一個高效便捷的打印軟件都能大大提高工作效率。XPlifeapp就是這樣一款超級好用的手機打印軟件&…

【計算機網絡】第2章:應用層—Web and HTTP

目錄 一、Web 與 HTTP 二、總結 &#xff08;一&#xff09;Web 的定義與功能 &#xff08;二&#xff09;HTTP 協議的定義與功能 &#xff08;三&#xff09;HTTP 協議的核心機制 1. HTTP 請求與響應流程 2. HTTP 的連接類型 3. HTTP 的狀態碼 &#xff08;四&#xf…