사실 파이썬을 사용하여 MRI 영상에서 일 해요. 이미지 포맷은 내가 X, Y 또는 Z 도끼에 조각을 시각화하는 방법을 얻을 NIFTI 형식이지만, 지금은 TU 사용 소벨은 그들 각각 필터링 그 조각 새로운 NIFTI 이미지를 생성합니다.
그에 대한:
- I 메인 .nii.gz 이미지를로드 (IMG = nib.load (im_path))
- 나는 새로운 이름으로 다시 메인 .nii.gz 이미지를로드 "img_sobel"(img_sobel = nib.load (im_path))
- 각 슬라이스에 대한 루프를 만들기
- 소벨은 슬라이스를 필터링
- img_sobel의 대응하는 슬라이스에 슬라이스를 교체 ( "img_sobel_data [:, : SL] == np.hypot (SX, SY)")
- 루프 후, 이름이 "image_XXX_Sobel"와 img_sobel 저장
부가 적 줄거리를 사용하여, 나는 각 조각에 소벨 필터링 작업을 볼 수 있지만, 그것은 라인 "img_sobel_data을 [:, :, SL] == np.hypot (SX, SY)"보인다 작동하지 않는다, 왜?
여기에 lopp 부분이다 :
# Name the interested data
img_data = img.get_fdata()
img_sobel_data = img_sobel.get_fdata()
header = img.header
nb_img = header.get_data_shape()
nb_img_h = nb_img[2] #Hauteur
for sl in range(0,nb_img_h):
slice_h = img_data[:, :, sl]
#Sobel
sx = ndimage.sobel(slice_h, axis=0, mode='constant')
sy = ndimage.sobel(slice_h, axis=1, mode='constant')
sobel_h = np.hypot(sx, sy)
img_sobel_data[:, :, sl] = sobel_h #Change the image slice to the sobel one
# Save Sobel:
nib.save(img_sobel,imSobel_path)
뭐가 문제 야 ? 우리는 파이썬에서 다른 하나의 이미지 슬라이스를 대체 할 수 있습니까? 이 문제를 해결하기위한 트릭이 있습니까?
감사합니다 !
편집 : OK 내가 조금 더 얻을 왜 그렇게 쉽게 taht를 수행 할 수 없습니다 나는 NIFTI 이미지의 조각을 추출을 필터링,하지만 난 NIFTI 이미지 자체를 변경하지 않은! 지금 내 질문은 그래서 어떻게 img_sobel.get_fdata에서 NIFTI 이미지의 get ()을 변경하려면?
당신은하지 않았다 단순히 때문에 제대로 아핀 및 헤더로, 당신의 img_sobel_data 저장 이 Nifti 이미지 저장하려는 경우, 당신은 헤더와 저장하기 전에 아핀 제공해야 img_sobel = nib.Nifti1Image(img_sobel_data, affine=img_sobel_affine, header=header)
당신이 CV2 라이브러리를 사용하여 다른 형식의 이미지를 저장할 수 있습니다 그렇지 않으면 cv2.imwrite
이미지를 저장을 JPG 또는 PNG 확장한다.
#======================================
# Importing Necessary Libs
#======================================
import nibabel as nib
import numpy as np
from scipy import ndimage, misc
import matplotlib.pyplot as plt
#==============================
img = nib.load(Nifti_img_path)
img_sobel = nib.load(Nifti_img_sobel_path)
#==============================
if True:
# Name the interested data
img_data = img.get_fdata()
img_sobel_data = img_sobel.get_fdata()
img_sobel_affine = img_sobel.affine
header = img.header
nb_img = header.get_data_shape()
nb_img_h = nb_img[2] #Hauteur
for sl in range(0,nb_img_h):
slice_h = img_data[:, :, sl]
#Sobel
sx = ndimage.sobel(slice_h, axis=0, mode='constant')
sy = ndimage.sobel(slice_h, axis=1, mode='constant')
sobel_h = np.hypot(sx, sy)
img_sobel_data[:, :, sl] = sobel_h #Change the image slice to the sobel one
# Save Sobel:
img_sobel = nib.Nifti1Image(img_sobel_data, affine=img_sobel_affine, header=header)
nib.save(img_sobel,imSobel_path)
#==============================