之前在项目中遇到了图像分割问题,涉及到了动态规划算法dijkstra,简单做个小结:
我的应用场景是在复杂噪声的图像中分割出前景(Epoxy),也可以算是图像分割中的前景背景分割问题,之前的做法是基于图像灰度做阈值分割,阈值分割最大的弱点是图像不同区域的灰度渐变,很难用一个阈值完美的将感兴趣区域提取出来,即使加上了run-time和retry机制仍然达不到理想的分割效果;
改进的算法是提取前景背景之间的轮廓线,这里的做法是:
1 Edge detect
首先提取特征点,这里的特征点可以覆盖很广,设定的阈值要求可以较低,让更多的初始特征点都能够提取出来,可选用的方法如Harris等;
2 Edge linking
linking的目的是为了给初始特征点去噪,这是一种比阈值去噪更为有效的空间去噪方法,具体做法是定义一些方向模板,遍历所有噪声点及其领域来进行linking,孤立的edge在这个过程中即被去除,剩下的能够很好的表征图像的轮廓信息,当然,linking之后仍然有一些小的线条或者块状edges,这需要更好的噪声去除逻辑;
3 dijkstra
Dijkstra算法解决的是带权重的有向图上单源最短路劲问题,在我们的案例中,我们分别定义:
1)权重:edge在待求contour中的置信值