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

假设矩阵大小为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

下面在主函数中调用该函数:

inputfilename = "E:\shipwreck.jpg";
im = imread(inputfilename);
im = rgb2gray(im); % 转化为灰度图
figure(10)
subplot(1,2,1)
imshow(im)
[im,im_mask] = circle_mask(im);
subplot(1,2,2)
imshow(im)

在这里插入图片描述

  • 1
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值