【问题标题】:Circular mask in MatlabMatlab中的圆形掩码
【发布时间】:2015-06-02 09:23:34
【问题描述】:

我在 Matlab 中创建了六个用于遮罩的圆圈。每个面具的内半径和外半径都是不同的。这些面罩用于检测载玻片上的寄生虫。我有这个代码(其中一个面具),但我想在共享图像中做白色区域来圈出它。我怎样才能做到这一点?或有另一种方法来掩盖共享的图片? MidpointCircle.m

resize_factor = 1;
inner_rad = 15*4/resize_factor;
outer_rad = 20*4/resize_factor;

ec_2 = floor(0.5*(outer_rad+inner_rad)*2*pi);

center = outer_rad+2; 
mask1_size = center*2;

circleimg = zeros(mask1_size,mask1_size);
circleimg = MidpointCircle(circleimg, outer_rad, center, center, 1);
circleimg = MidpointCircle(circleimg, inner_rad, center, center, 1);
mask1 = circleimg;

【问题讨论】:

    标签: matlab geometry image-masking


    【解决方案1】:

    好的,现在我明白了。

    您的函数 MidpointCircle 只创建一个圆的边框,而不是填充整个圆。以下代码计算到中心的距离并选择所有小于外半径和大于内半径的值:

    clear all;
    
    resize_factor = 1;
    inner_rad = 15*4/resize_factor;
    outer_rad = 20*4/resize_factor;
    
    ec_2 = floor(0.5*(outer_rad+inner_rad)*2*pi);
    
    center = outer_rad+2; 
    mask1_size = center*2;
    
    [x,y] = meshgrid(1:mask1_size,1:mask1_size);
    
    distance = (x-center).^2+(y-center).^2;
    mask = distance<outer_rad^2 & distance>inner_rad^2;
    
    figure(1);
    imshow(mask)
    

    结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 2017-12-05
      • 2016-12-24
      相关资源
      最近更新 更多