0
点赞
收藏
分享

微信扫一扫

matlab为图像添加圆形掩膜、制作圆形掩膜矩阵

八卦城的酒 2022-03-27 阅读 94

假设矩阵大小为m*n,取矩阵最中间一点为圆心,半径r=m/2。先用函数meshgrid生成矩阵对应的每一个坐标,然后用circle=x .^ 2 + y .^ 2生成代表半径的平方的矩阵,最后用find函数找到符合要求的元素,赋值为1,不符合要求的赋值为0 。具体程序如下:

function [masked_im,circ_mask] = circle_mask(im)
circ_mask=im;  
im_size = size(im);
m = im_size(1); %图像矩阵的行数
n = im_size(2); %图像矩阵的列数 

r = floor(m/2); %生成圆的半径  
m1 = -m/2:m/2-1;   %把圆心变到矩阵的中间  
n1 = -n/2:n/2-1;  
[x,y]=meshgrid(m1,n1);  
circle=x.^2+y.^2;   %计算出每一点到圆心的距离的平方  

circ_mask(find(circle>r*r))=0;   %找到圆外的元素,并赋值为0 
masked_im  = circ_mask;  % 这就是被遮掩后的图像

circ_mask(find(circle<=r*r))=1;  %找到圆内的元素,并赋值为1 ,这是图像掩膜 
end 
举报

相关推荐

0 条评论