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