本文基于信息光学初等函数及基础几何图形学,用Matlab定义并编写得到几何图形掩膜的函数。
Fouction Code
- 掩膜主函数定义如下:
% 作者:ZQJ
% 日期:2021.1.29 星期五
%***********************几何图形掩膜函数**************************
function mask_ = f_Masks
mask_.single_silt = @mask1;
mask_.rect_hole = @mask2;
mask_.circle_hole = @mask3;
mask_.cir_srceen = @mask4;
mask_.triangle_hole = @mask5;
end
单狭缝掩膜
- 基于一维矩形函数,得到单狭缝掩膜;
- 函数定义和代码如下:
function my_mask = mask1(m_unit_width,N,silt_width)
% 函数功能:利用一维矩形函数产生单狭缝掩膜
% 参数
% m_unit_width:掩膜的单位像素宽度
% N:一维方向上的像素点个数(例1024即1024x1024)
% silt_width:单狭缝的宽度
mask_x = -m_unit_width*N/2 : m_unit_width : m_unit_width*(N/2-1);
mask_y = rectpuls(mask_x,silt_width);
% plot(mask_x,mask_y);
[mask_column,~] = meshgrid(mask_y);
my_mask = mask_column;
end
矩形孔掩膜
- 基于二维矩形函数,得到矩形孔掩膜;
- 函数定义和代码如下:
function my_mask = mask2(m_unit_width,N,rect_width,rect_height)
% 函数功能:利用二维矩形函数产生矩形孔掩膜
% 参数
% m_unit_width:掩膜的单位像素宽度
% N:一维方向上的像素点个数(例1024即1024x1024)
% rect_width:矩形孔的宽度
% rect_height:矩形孔的高度
mask_x = -m_unit_width*N/2 : m_unit_width : m_unit_width*(N/2-1);
[mask_x_axis,mask_y_axis] = meshgrid(mask_x);
mask_z_axis = rectpuls(mask_x_axis,rect_width).*rectpuls(mask_y_axis,rect_height);
my_mask = mask_z_axis;
end
圆孔掩膜
- 基于基础几何图形理论,得到圆孔掩膜;
- 函数定义和代码如下:
function my_mask = mask3(m_unit_width,N,cir_R)
% 函数功能:产生圆孔掩膜
% 参数
% m_unit_width:掩膜的单位像素宽度
% N:一维方向上的像素点个数(例1024即1024x1024)
% cir_R:圆孔掩膜的半径
mask_x = linspace(-m_unit_width*N/2,m_unit_width*N/2,N);
[mask_x_axis,mask_y_axis] = meshgrid(mask_x);
my_mask = zeros(N);
my_mask(abs(mask_x_axis + 1i*mask_y_axis) < cir_R) = 1;
end
圆屏掩膜
- 基于基础几何图形理论,得到圆屏掩膜;
- 函数定义和代码如下:
function my_mask = mask4(m_unit_width,N,cir_R)
% 函数功能:产生圆屏掩膜
% 参数
% m_unit_width:掩膜的单位像素宽度
% N:一维方向上的像素点个数(例1024即1024x1024)
% cir_R:掩膜圆屏的半径
mask_x = linspace(-m_unit_width*N/2,m_unit_width*N/2,N);
[mask_x_axis,mask_y_axis] = meshgrid(mask_x);
my_mask = ones(N);
my_mask(abs(mask_x_axis + 1i*mask_y_axis) < cir_R) = 0;
end
三角孔掩膜
- 基于基础几何图形理论,得到三角孔掩膜;
- 函数定义和代码如下:
function my_mask = mask5(m_unit_width,N,triangle_a)
% 函数功能:产生三角孔掩膜(近似等边三角形)
% 参数
% m_unit_width:掩膜的单位像素宽度
% N:一维方向上的像素点个数(例1024即1024x1024)
% triangle_a:三角形的边长为m_unit_width的倍数
my_mask = zeros(N);
r = double(uint8(triangle_a*m_unit_width/3));
for col = (m_unit_width*(N/2-triangle_a)+1):m_unit_width:(m_unit_width*(N/2+triangle_a)+1) %定义扫描区域
for row = (m_unit_width*(N/2-triangle_a)+1):m_unit_width:(m_unit_width*N/2+1)
x = col - (m_unit_width*N/2+1);
y = (m_unit_width*N/2+1) - row;
if(y <= (sqrt(3)* x + m_unit_width*triangle_a) && y <= (-sqrt(3)* x + m_unit_width*triangle_a)) %60°倾角
my_mask((row+r),col) = 1;
end
end
end
end
仿真结果图:
- 单狭缝掩膜
- 矩形孔掩膜
- 圆孔掩膜
- 圆屏掩膜
- 三角孔掩膜
专栏内容供作者本人或大家学习使用,多多指教 ~