Как создать сферическое изображение с гладкими краями - PullRequest
0 голосов
/ 27 мая 2020

Попытка создать призрачное трехмерное изображение с известным объемом, чтобы создать откалиброванный золотой стандарт: сферу.

Я пробовал этот код, но он не дает мне того, чего я действительно хочу.

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import medpy.io as mdpy
from scipy import signal

def create_bin_sphere(arr_size, center, r):
    coords = np.ogrid[:arr_size[0], :arr_size[1], :arr_size[2]]
    distance = np.sqrt((coords[0] - center[0])**2 + (coords[1]-center[1])**2 + (coords[2]-center[2])**2) 
    return 10*(distance <= r)


arr_size = (100,100,100)
sphere_center = (50,50,50)
r=30
sphere = create_bin_sphere(arr_size,sphere_center, r)


kernel = np.array([[[0,1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2,1,0]]])
sphere_smooth = scipy.signal.oaconvolve(sphere, kernel, mode="same")
from medpy.io import load, save
save(sphere_smooth ,r'x\x\x\x\x\sphere_smooth.mhd')

Не работает как i wi sh: изображение в itk snap in x plan

Я бы предпочел не менять форму сферы ("сглаженная" "стать яйцевидным), иметь эффект размытия по всей окружности и уменьшать ее толщину, и, наконец, инвертировать плотность (белый снаружи и серый внутри сферы).

Если вы можете мне помочь, я буду признателен ...

...