Matlab:产生“几何图形掩膜”函数

本文基于信息光学初等函数及基础几何图形学,用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:一维方向上的像素点个数(例10241024x1024)
% 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:一维方向上的像素点个数(例10241024x1024)
% 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:一维方向上的像素点个数(例10241024x1024)
% 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:一维方向上的像素点个数(例10241024x1024)
% 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:一维方向上的像素点个数(例10241024x1024)
% 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
仿真结果图:
  • 单狭缝掩膜
    在这里插入图片描述
  • 矩形孔掩膜
    在这里插入图片描述
  • 圆孔掩膜
    在这里插入图片描述
  • 圆屏掩膜
    在这里插入图片描述
  • 三角孔掩膜
    在这里插入图片描述

专栏内容供作者本人或大家学习使用,多多指教 ~

  • 14
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值