Я пытаюсь создать пользовательский граф смежности с помощью RAG, но во всех примерах создание графика только с использованием rag = graph.rag_mean_color(img, labels)
Я не хочу использовать эту функцию и хочу определить веса с помощью моего пользовательскогомеры.Поэтому я написал следующий код
labels1 = segmentation.slic(img_i.reshape(img.shape[0],img.shape[1]), compactness=30, n_segments=200)
out1 = color.label2rgb(labels1, img_i.reshape(img.shape[0],img.shape[1]), kind='avg')
plt.axis('off')
plt.imshow(out1)
print(labels1.shape)
...
g_seg = graph.rag.RAG()
for ix in range(0,img.shape[0]):
for iy in range(0,img.shape[1]):
idx = ix*img.shape[1] + iy
g_seg.add_node(idx,labels=[labels_slic[idx]])
win_rad = 7
for i in range(0,img.shape[0]):
for j in range(0,img.shape[1]):
for ii in range(-int(win_rad),int(win_rad)):
for jj in range(-int(win_rad),int(win_rad)):
if i+ii>0 and i+ii<img.shape[0] and j+jj>0 and j+jj<img.shape[1]:
idx = i*img.shape[1] + j
idc = (i+ii)*img.shape[1] + (j+jj)
w_tx = g_tx[idx][idc]['weight']
w_ic = g_ic[idx][idc]['weight']
g_seg.add_edge(idx, idc, weight=(w_tx*w_ic))
Но при использовании этого графика для нормализованного разрезаЯ получаю неправильный вывод
labels3 = graph.cut_normalized(labels1, g_seg,5.0,10)
Итак, я понимаю, что при создании графика я разрушаю особую структуру изображения, потому что я взялузлы - 1D массив, отбрасывающий их 2D координаты. Так что мне нужна помощь в понимании того, как я могу создать график, который сохраняет 2D-структуру изображения без изменений и дает результаты, которые мы получаем при rag = graph.rag_mean_color(img, labels)