Matlab图像边缘重新调整大小/细化

时间:2013-11-05 05:05:32

标签: image matlab resize edge-detection

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

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

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

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

1 个答案:

答案 0 :(得分:0)

听起来你正在做一些边缘(边界)检测。墨西哥帽阵列将在图像中找到边缘,但如果边缘倾斜(边缘稍宽),则边缘可能有2条线。但是,每个边缘只有一个零交叉。这在matlab中很容易实现。我们打电话给你的墨西哥帽过滤器MHfilt。而不是使用0和255值来选择点使图像二进制。这意味着你将所有值都设置在0.75以下,其余值设置为1.调用该图像Im并将其提供给Matlab的边缘函数。

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

详细了解边缘函数here 阅读更多关于zerocrossings here

的信息

我希望这会对你有所帮助