【问题标题】:MATLAB: how do I crop out a circle from an imageMATLAB:如何从图像中裁剪出一个圆圈
【发布时间】:2011-06-06 19:27:56
【问题描述】:

我需要在 MATLAB 中裁剪一个圆圈。

我需要进行虹膜分割,我已经确定了虹膜的中心点和半径,我需要将其从图像中切掉。

我有一个向量 ci,ci(1) 是 X 坐标,ci(2) 是 Y 坐标,ci(3) 是圆的半径。

【问题讨论】:

    标签: matlab image-processing crop


    【解决方案1】:

    一种方法是创建一个二进制掩码,圆圈内为 1,圆圈外为 0。然后,您可以使用此数组用 NaN 遮盖圆外的所有内容,或读取遮罩内图像的像素值。

    要创建圆形蒙版,一种简单的方法是创建以虹膜为中心的坐标数组,并设置距离阈值,如下所示:

    [xx,yy] = ndgrid((1:imageSize(1))-ci(1),(1:imageSize(2))-ci(2));
    mask = (xx.^2 + yy.^2)<ci(3)^2;
    

    【讨论】:

    • 这是我的答案... =) 非常好。 +1。为了分割图像,只需将其与蒙版相乘。让外面有零。
    • @Marnix:对不起 :)。无论如何,我建议将 NaN 放在外面,比如image(~mask) = NaN;,这样imshow(image,[]) 中的自动缩放就不会被图像中的所有零所影响。
    • 我有这个错误:??? “逻辑”类型的输入参数的未定义函数或方法“sqrt”。在这一行掩码 = sqrt((xx.^2 + yy.^2)
    • @Leo.peis:对不起,是括号错误。实际上,甚至不需要取平方根(您可以将半径平方而不是圆不等式),所以我就这样修复了它。
    • @Jonas 感谢您的代码!我正在尝试优化一个需要花费大量时间来计算的函数,它基于循环邻域。更准确地说,我有不同的圆形邻域,并且在每个邻域内部,我想计算它们下面的像素值的平均值、标准差和中值。这是在 DoG 比例表示的上下文中完成的。圆形过滤器的大小由在特定比例下关联的半径给出 (scalespace_radii):pastebin.com/WkS5ShMf 欢迎任何有关如何改进计算的建议!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多