예제 #1
0
def arcVSprojectFigure(scnene_plotter, data_name, segment_id, result_data):
    fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(11, 5))
    font_size = 15
    fig.subplots_adjust(left=0.15, right=0.9, top=0.86, hspace=0.1, wspace=0.05)
    fig.suptitle("Arc-Length Interpolation VS Project 3D", fontsize=font_size)

    plt.subplot(131)
    plt.title('Normal Vectors\n', fontsize=font_size)
    scnene_plotter.showNormalImage()
    plt.axis('off')

    legend_gt = ("Ground Truth", (1.0, 0.0, 0.0))
    legend_al = ("Arc-Length", (0.0, 1.0, 0.0))
    legend_3d = ("Project 3D", (0.0, 0.0, 1.0))

    plotVectors(plt, result_data["ps"], result_data["normals_gt"], color=legend_gt[1], l=70, step=2)
    plotVectors(plt, result_data["ps"], result_data["normals_al"], color=legend_al[1], l=70, step=2)
    plotVectors(plt, result_data["ps"], result_data["normals_3D"], color=legend_3d[1], l=70, step=2)

    plt.legend(bbox_to_anchor=(0.2, 1), handles=[mpatches.Patch(color=legend_gt[1], label=legend_gt[0]),
                        mpatches.Patch(color=legend_al[1], label=legend_al[0]),
                        mpatches.Patch(color=legend_3d[1], label=legend_3d[0])])
    error_max = 30.0
    error_min = 0.0

    plt.subplot(132)
    scnene_plotter.showNormalImage()
    plt.axis('off')
    plt.title('Arc-Length Error\n %5.2f $^\circ$' %np.average(result_data["normals_al_error"]), fontsize=font_size)
    error_colors = scalarToColor(result_data["normals_al_error"], vmin=error_min, vmax=error_max)
    plotSegment(plt, result_data["ps"], error_colors)

    plt.subplot(133)
    scnene_plotter.showNormalImage()
    plt.axis('off')
    plt.title('Project 3D Error\n %5.2f $^\circ$' %np.average(result_data["normals_3d_error"]), fontsize=font_size)
    error_colors = scalarToColor(result_data["normals_3d_error"], vmin=error_min, vmax=error_max)
    plotSegment(plt, result_data["ps"], error_colors)

    ax_colorbar = fig.add_axes([0.9, 0.15, 0.03, 0.7])

    scalar_map = scalarMap(error_min, error_max)
    scalar_map.set_array([error_min, error_max])
    fig.colorbar(scalar_map, cax=ax_colorbar)

    result_name = "arc_vs_project"
    result_dir = resultDir(result_name)

    result_file = resultFile(result_dir, data_name + "_%s" % segment_id)
    plt.savefig(result_file, transparent=True)
예제 #2
0
def curvatureVSconeAnglesNormal(scnene_plotter, data_name, segment_id, result_data):
    fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(11, 5))
    font_size = 15
    fig.subplots_adjust(left=0.05, right=0.9, top=0.86, hspace=0.1, wspace=0.05)
    fig.suptitle("Arc-Length Interpolation", fontsize=font_size)

    plt.subplot(131)
    scnene_plotter.showNormalImage()
    plt.axis("off")
    plt.title("Ground Truth\n", fontsize=font_size)
    plotSegment(plt, result_data["ps"], color=(0.5, 0.1, 0.1))
    # plotVectors(plt, result_data["ps"], result_data["normals_gt"], step=5)

    plt.subplot(132)
    scnene_plotter.showNormalImage()
    plt.axis("off")
    plt.title("Interpolated Normal\n", fontsize=font_size)
    plotNormalColors(plt, result_data["ps"], result_data["normals_al"])

    plt.subplot(133)
    plt.title("Interpolation Error\n %4.1f $^\circ$" % np.max(result_data["normals_al_error"]), fontsize=font_size)
    scnene_plotter.showNormalImage()
    plt.axis("off")

    error_min = 0.0
    error_max = 30.0
    # error_max = np.max([0.0, np.max(result_data["normals_al_error"])])
    error_colors = scalarToColor(result_data["normals_al_error"], vmin=error_min, vmax=error_max)
    plotSegment(plt, result_data["ps"], error_colors)

    ax_colorbar = fig.add_axes([0.9, 0.15, 0.03, 0.7])

    scalar_map = scalarMap(error_min, error_max)
    scalar_map.set_array([error_min, error_max])
    fig.colorbar(scalar_map, cax=ax_colorbar)

    result_name = "cone_vs_curvature/normal"
    result_dir = resultDir(result_name)

    result_file = resultFile(result_dir, data_name + "_%s" % segment_id)
    plt.savefig(result_file, transparent=True)