/ProductSegmentation

货架物品分割

Primary LanguageMATLAB

V3.1
 
	货架栏数比较少时,检测出多条水平分割线的问题
	
V3.0

1. 行分割的改动部分
	直接用canny边缘检测算法,对图片进行边缘提取(以前是利用Efficient graph-based image segmentation算法先对图片过分割,
再利用sobel算法进行边缘提取)。利用canny进行边缘提取后,再经腐蚀、膨胀运算。最后利用radon算法进行水平分割线检测。(此版
本的算法较之前简单明了,省去了许多冗余的操作,如“去除小部件”);
	
2. 列分割的改动部分
	此部分较之前有两大主要改动:
列分割之前,对行分割的得到的每栏图片进行再处理,去除标签栏对后续操作的影响,方法实现见新增的函数adjHorImgsV11();
之前的版本利用窗口扫描的方式,提取主色调进行列分割,后发现这种方法适应性不强,影响分割结果的参数多,如扫描窗口大小、
用于直方图统计的bin的个数等。此版本中改用先提取边缘,再用radon算法检测垂直分割线的方法。实现细节详见GetHorLinesV21()。

3. 区块合并的改动部分
	此部分较之前有两大主要改动:
不再利用色调来合并,而是通过统计相邻区块HSV前两通道H,S的直方图,作为特征向量,后比较两特征向量的余弦相似度来决定两区
块是否应该合并在一起。
如图1所示,之前的方法分别比较 (1, 2)  (2, 3)  (3, 4)  (4, 5)  (5, 6),如果区块1与2相似,则去除分割线a,如区块2与3相似,
则去除分割线b,以此类推。这种方法会出现如下问题:假设1,2为一个物品,3,4为别一物品,b为其真实分割线,但如果(2, 3)判断
出现错误,就是将1,2,3,4合并在一起。改进方法在于此时不再单独用(2, 3)来判定分割线b,而是应该用(1+2, 3)来判定分割b,以
此类推。