Eşik değeri ile Görüntüden Yüzey Çizimi

Aug 19 2020

Z-değerlerinin depolandığı iki boyutlu bir diziden bir yüzey grafiği yapmak istiyorum (piksel değerlerinin verildiği bir görüntüye benzer).

Verilerim 512x512'lik bir dizidir:

Z
Out[85]: 
array([[0., 0., 0., ..., 0., 0., 0.],
       [0., 0., 0., ..., 0., 0., 0.],
       [0., 0., 0., ..., 0., 0., 0.],
       ...,
       [0., 0., 0., ..., 0., 0., 0.],
       [0., 0., 0., ..., 0., 0., 0.],
       [0., 0., 0., ..., 0., 0., 0.]])

İlgilenilen değerler resmin orta kısmındadır.

Sadece merkezi dairesel bölgenin yüzey grafiği olarak çizileceği resim

Yüzey grafiğini şununla yaptım:

X = np.arange(1, 513)
Y = np.arange(1, 513)
X, Y = np.meshgrid(X, Y)
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X, Y, Z, vmin=0.01)
plt.show()

Sonuç:

Herhangi bir maskeleme veya eşikleme olmadan Ortaya Çıkan Görüntü

Kötü bir stil dışında, sadece dairesel merkezi bölgeyi çizmek ve tüm değerlerin sıfır olduğu dış kare bölgeyi çizmek istemiyorum.

Değerlere nasıl eşik veya maske verebilirim? Yoksa çok daha iyi bir yaklaşım var mı? Python / numpy ect'te oldukça yeni olduğum için bir örneği gerçekten takdir ediyorum.

Çok teşekkür ederim!

Yanıtlar

2 P.Leibner Aug 19 2020 at 15:11

Yüzey grafiğinizde sıfırların grafiğini bastırmanın bir yolu, Z-Dizinizdeki sıfırları (veya çizmek istemediğiniz tüm değerleri) aşağıdaki gibi nans ile değiştirmektir:

Z[Z==0]=np.nan

Bu size istediğiniz arsayı vermelidir.