Я хочу деформировать одно изображение в измененную треугольную сетку.
Я знаю, что должен найти матрицу аффинного преобразования для каждой пары треугольников, но проблема в том, что когда я извлекаю треугольники из контуров, количество треугольников отличается от исходных контуров к новым, поскольку внутренний желтый контур делится на 2, и я предполагаю, что марширующие квадраты внутри триангуляции объединяют похожие точки.
Это мой код:
selected_file = '../IN/patient025_frame01_gt.nii.gz'
mask_in = nib.load(selected_file).get_fdata()[:,:,2]
mask_out = mask_in
fig, ax = plt.subplots(1,2)
contour_myo,contour_lv,contour_rv = find_contours(mask_in)
center = get_contour_center(contour_lv[0])
contour_in = contour_lv[0]
contour_out = ((contour_lv[0] - center)/2.0) + center
tmesh_in = generate_tmesh(contour_myo,contour_lv,contour_rv)
tmesh_out = generate_tmesh(contour_myo,[contour_out],contour_rv)
tri1 = np.float32([tmesh_in.edges])
tri2 = np.float32([tmesh_out.edges])
print(tmesh_out.edges.shape,tmesh_in.edges.shape)
ax[0].triplot(tmesh_in, 'b-', lw=0.2)
ax[0].imshow(mask_in, interpolation='nearest', cmap='viridis')
ax[1].triplot(tmesh_out, 'b-', lw=0.2)
ax[1].imshow(mask_out, interpolation='nearest', cmap='viridis')
plt.show()
generate_tmesh использует matplotlib.tri.Triangulation.