我有幾種不同尺寸的產品圖像,我在sci-kit中運行聚類算法,學習將相似圖像分組在一起。這些圖像的大小有所不同,但一般在500×500,我縮小下來到250x250的使用Sci-Kit對調整大小的圖像進行聚類
def read_img(path, mode='L', size_one=(250, 250)):
return misc.imresize(misc.imread(path, mode=mode), size_one)
一旦我得到的載體,我從中取出白色邊框和扁平的載體。
問題是,一些圖像在視覺上非常相似具有不同的質量(由於調整大小前的大小)。他們沒有被選爲獨立的集羣。
例如,這兩幅圖像雖然非常相似,但質量略有不同,不會聚集在一起。
- 我試圖玩弄於SCI-KIT AffinityPropagation和K均值聚類學習的參數,但它仍然沒有幫助。
- 有這兩個向量之間的較大差異,以及
我可以從集羣預角度來看做些什麼來改善呢?我剛剛開始使用這個,任何反饋都會非常有幫助。
在此先感謝
編輯:這裏是我如何修剪邊界,更好的方法將是非常歡迎也。
def trim_img_border(img):
shape = img.shape
temp_rows = []
for row in img:
if check_row(row):
temp_rows.append(row)
temp_rows_T = np.transpose(np.array(temp_rows))
out = []
for row in temp_rows_T:
if check_row(row):
out.append(row)
return round_img(misc.imresize(np.transpose(np.array(out)), shape))
def check_row(row):
srow = sorted(list(set(row)))
if srow == [255] or srow == [254, 255] or srow == [253, 254, 255]:
return False
return True
聚類是一個非凸優化問題,因此只能保證收斂到一些局部最優解。也許聚類在這裏只是錯誤的方法。考慮像感知哈希和合作的替代方案。 – sascha
謝謝,讓我試試看。 – browskie