给定两个三角形网格,图像变形(Python)

时间:2019-03-14 14:14:33

标签: python python-3.x image geometry mesh

我想将一张图像变形为修改后的三角形网格。

我知道我必须为每对三角形找到一个仿射变换矩阵,但是问题是,当我从轮廓提取三角形时,三角形的数量与原始轮廓不同,因为内部的黄色轮廓除以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。

enter image description here

0 个答案:

没有答案