物体分割的算法问题?(200分)
物体分割的算法问题?
约束描述:矿石块(一般呈凸多边形或凸曲线,有少量凹的情况)、块有最大尺寸限制、二值化的二维数据(矿石、非矿石)、有部分矿石块有重叠(较小区域)的连接在一起、有多块连接的可能
需要的算法:尽量将粘在一起的矿石块分割开来(但不需要拟合矿石边界进行复原)
我所设想的分割算法描述
1. 得到每个粘结物体的出发点(最高点的y0,最高点对应的最左边x0) (这有很多算法都可以得到,比如与区域填充相似的算法)
2. 从(x0,y0)出发按逆时针方向遍历矿石边界,包括可能的内边界(多块矿石连接形成中空的封闭区域)
3. 找出凹点坐标,及其凹的方向: 考虑某个边界点周围几个边界点是否形成凹形,连续的凹点合并成一个凹点(中间)
[3.5. 很接近的凹点合并为一个凹点]
4. 求凹点集合A中凹点两两间的距离,距离较小的并且方向相对的考虑成为分割点:
即:对凹点a,求出与a较接近的凹点B[b0,b1,...]; 求取B中角度与a的角度差+180度(角度约束到0-360并取绝对值)小于某值的点集B'
根据距离和角度关系决定最佳切割和是否进行切割,从A中排除进行了切割的点
5. 对剩下的A中的点,直接求取其延长线与粘结物体的割线长度,并根据长度来判断是否进行切割
已知缺点:1. 算法实现比较麻烦;2. 三块呈三角形连接的情况分割肯定不好。。。
有什么更简单、或更好的算法,给出流程描述就行了
(另一百分在 http://expert.csdn.net/Expert/TopicView1.asp?id=2336471
由于那个贴子没有人给出好的解答,总不能给自己分吧)