我有一个小图像块列表。所有这些都是相同的大小(例如:16x16)。它们是黑白的,像素值在0-255之间。我想对这些图像进行排序,以尽量减少它们之间的差异。
我想到的是计算相邻块之间像素的mean absolute difference(MAD)(例如:块N对块N + 1,块N + 1对块N + 2,......) 。 由此我可以计算出那些MAD值的总和(例如:sum = mad1 + mad2 + ...)。我想要的是找到最小化该总和的顺序。
之前:
之后:(这只是手工完成以提供一个例子,这些块可能有更好的排序,特别是那些有垂直条纹的块)
答案 0 :(得分:0)
根据 RaymoAisla 评论指出这与Travelling salesman problem类似,我决定使用Nearest neighbour algorithm实施解决方案。虽然不完美,但它会产生很好的效果:
这是代码:
In [36]: r = np.loadtxt(sio, delimiter=",", skiprows=0, dtype=[('f0',int),('f1'
...: ,int),('f2',int),('f3',int),('f4',int),('f5',float),('f6',float),('f7'
...: ,int),('f8',int)])
In [38]: r.shape
Out[38]: (4,)
In [45]: r.dtype
Out[45]: dtype([('f0', '<i4'), ('f1', '<i4'), ('f2', '<i4'), ('f3', '<i4'), ('f4', '<i4'), ('f5', '<f8'), ('f6', '<f8'), ('f7', '<i4'), ('f8', '<i4')])