【问题标题】:Matlab Image Edge Re-sizing/ThinningMatlab 图像边缘重新调整大小/细化
【发布时间】:2013-11-15 22:15:15
【问题描述】:

所以我目前正在做这个项目,我已经完成了 90% 的工作,只需要一个特定问题的帮助。

因此设置是,当您使用“墨西哥帽”数组(如下所示)对 RGB 图像的三个颜色通道执行二维卷积(使用 conv2)时,您将获得图像的边框。但是这些边框具有双线效果,我想改变它,以便只有单线形成边框。所以该项目要求,在将颜色图更改为灰色后,“您需要将输入图像中的每个像素转换为黑色像素(值 0)或白色像素(255),具体取决于输入中的像素是否为图像是否小于阈值。

您将根据作为输入参数给出的阈值百分比 (thrper) 计算图像中每个颜色层的阈值。例如,主脚本文件调用这个函数,其值为 .75 作为 thrper。这意味着该函数会将值在全范围底部 75% 的像素转换为黑色(新值 = 0),将值在全范围顶部 25% 的像素转换为白色(新值 = 255)。例如,如果红色层值的范围是 -100 到 +300,那么 0.75 的 thrper 的红色阈值将是 200。"

有人可以解释一下如何做到这一点吗?我真的尝试了一切,无论我做什么,我都没有得到正确的输出(仍然得到双线效果)。我真正需要知道的是如何计算正确的阈值。

【问题讨论】:

    标签: image matlab resize edge-detection


    【解决方案1】:

    听起来您正在做一些边缘(边界)检测。墨西哥帽阵列会在您的图像中找到边缘,但如果边缘是倾斜的(有点宽的边缘),您的边缘可能有 2 条线。然而,每条边只有一个过零点。这在matlab中很容易实现。我们称您的墨西哥帽过滤器为 MHfilt。不是使用 0 和 255 值来选择点,而是使图像二值化。这意味着您将所有低于 0.75 的值放在 0 上,其余的放在 1 上。调用该图像 Im 并将其提供给 Matlab 的边缘函数。

    ImEdge = edge(Im,'zerocross',MHfilt);
    

    阅读更多关于边缘函数here 阅读有关过零的更多信息here

    希望对你有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 2016-10-01
      • 2018-06-15
      • 2011-12-07
      相关资源
      最近更新 更多