[问题已使用其他过滤器解决,请参阅底部的更新。]
我正在使用C ++和ITK,我有一个灰度图像,代表腰椎的骨骼图。我正在尝试使用Canny过滤器检测其边框:为此,我使用官方ITK指南中的Canny filter implementation(我按原样使用该代码,因此我不在此处粘贴)。如您所见,输入图像非常简单,以这种方式提取轮廓并不困难。
我期待一个输出图像全黑,除了骨头的边框,应该是一个闭合的曲线。但是,ITK会生成您可以在右侧图像中看到的结果,包括多个,“同心”边框。
你如何解释这个结果?你有关于该算法发生了什么的正式解释吗?我试图修改过滤器的参数(方差,upperThresold和lowerThresold),但没有运气。一些参数组合给出了一个完全黑色的图像,并且它们都没有比这更好的结果。
更新:正如笔记一样,我使用“Gradient Magnitude Filter”解决了问题。通过该滤镜,我可以获得轮廓明确的形状。所以,这个问题对我来说不再是至关重要的,但为了好奇,我保持开放的态度。如果您对Canny过滤器的行为有任何想法,我可以测试它。