python 中图像用SimpleITK和numpy.ndarray表示的差异

1、
      SimpleITK: image[x,y,z]   x,y,z对应三维矩阵的列标、行标、深度,对应到图片上为图片宽度、高度、深度

      numpy: image_numpy_array[z,y,x]  x,y,z对应矩阵的深度、高度、宽度,对应到图片上为图像的深度、高度、宽度
     
      二者坐标恰好相反

2、 
      就本文中的(x,y,z)坐标顺序,无论在SimpleITK还是在numpy.ndarray中,都可对应到下图中,
python 中图像用SimpleITK和numpy.ndarray表示的差异_第1张图片

深度则像matlab中的三维矩阵相同,在xoy平面的垂直方向

3、简单的试验

import SimpleITK as sitk
from pyplotlib import plot as plt
a=sitk.Image(128,64,sitk.sitkUInt8)  #获得一张宽度128,高度64的图片
a[100,10]=255                        #在该坐标位置设置像素点的亮度为255
b=sitk.GetArrayFromImage(a)          #把SimpleITK.Image对象转化成numpy.ndarray
plt.imshow(b)
plt.show()                           #显示图片
python 中图像用SimpleITK和numpy.ndarray表示的差异_第2张图片
       下面对比numpy.ndarray中的坐标表示

b[10,100]=0               #清除上图中的亮点,注意区分坐标顺序,这里时【10,100]在a那里是[100,10]
b[60,10]=255              #在b(numpy.ndarray对象)的[60,10]处设值为255,对应a(SimpleITK.Image对象)的坐标为[10,60]
plt.imshow(b)
plt.show()                #显示图片如下图

python 中图像用SimpleITK和numpy.ndarray表示的差异_第3张图片

看到这里没看明白可以参看以下链接:http://insightsoftwareconsortium.github.io/SimpleITK-Notebooks/03_Image_Details.html

 
 

你可能感兴趣的:(python,simpleitk-image)