0

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

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

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

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

4

1 回答 1

0

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

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

在此处阅读有关边缘功能的更多信息 在此处阅读 有关过零的更多信息

我希望这会对你有所帮助

于 2013-11-05T10:36:14.230 回答