Я пытаюсь визуализировать различия между изображениями в 3D, чтобы легче было различать положительные и отрицательные различия.
Однако мне удалось составить базовый график изображения между значениями matplotlib
интерполирует значения.Мне нужно, чтобы это были ступенчатые изменения между пикселями.
Я часто тестирую изображения с очень низким разрешением, например, 16 на 16, поэтому интерполяция имеет большой эффект.
Файл Numpy из 16 на 16 изображений: https://wetransfer.com/downloads/c916f76e0d86a61c00c2ed4cfe4ae97520190210192200/60d87c
Один из способов решить эту проблему - повторить значения, однако, это кажется очень неэффективным и требует очистки тиков после.
![enter image description here](https://i.stack.imgur.com/u5BiD.png)
Код для создания изображения выше:
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
SubIm = np.load("Subtract_Image.npy")
def ImPlot2D3D(img, cmap=plt.cm.jet):
Z = img[::1, ::1]
fig = plt.figure(figsize=(14, 7))
# 2D Plot
ax1 = fig.add_subplot(1, 2, 1)
im = ax1.imshow(Z, cmap=cmap)
ax1.set_title('2D')
ax1.grid(False)
# 3D Plot
ax2 = fig.add_subplot(1, 2, 2, projection='3d')
X, Y = np.mgrid[:Z.shape[0], :Z.shape[1]]
ax2.plot_surface(X, Y, Z, cmap=cmap)
ax2.set_title('3D')
plt.show()
ImPlot2D3D(SubIm)
Я просмотрел гистограммы 3D, но все они используют схемы биннинга, и яне может заставить его работать на изображение.