医学数字图像处理实验报告1(2023)

校徽标

《医学图像处理与分析》

实验名称

实验一 搭建开发环境

实验目的与要求

  1. 配置本地VS Code Jupyter开发环境
  • 要求1:完成VS Code安装,在VS Code中完成Jupyter安装,配置好本地Python环境
  • 要求2:安装与医学图像处理与分析相关的第三方库:

!pip install matplotlib --upgrade

!pip install numpy --upgrade

!pip install PIL --upgrade

!pip install pydicom

  • 要求3:创建notebook,并运行以下代码验证开发环境:

#在ipynob里显示图像

%matplotlib inline  

import numpy as np

from PIL import Image

from matplotlib import pyplot as plt

#产生图像数据

d=[i for i in range(256)]*100  

#转化为字节串        

imgd=bytes(d)              

#根据图像数据,生成宽256高100的渐变灰度图像              

img=Image.frombytes('L',(256,100),imgd)    

print(f'图像的格式是:{img.format},图像的类型是:{img.mode}, 图像的宽高是{img.size}')

imgar=np.array(img)

#关键坐标轴的显示

plt.axis(False)

#将数组显示为图像

plt.imshow(imgar,cmap='gray')

plt.show()

运行上述代码后显示以下图像:

  • 要求4:分析上述代码,特别是与图像有关的像素值,图像的宽,高,以及图像的类型等
  1. AI Studio开发环境

1、菜单下的新件选项的,练习新建笔记本,新建终端,新建文本文件,新建python文件功能;

2、在AI Studio里新建一个images文件夹,上传图片到新建的images文件夹里。

  • 要求3:创建notebook完成,安装内容1中要求2中列出的4个库,并完成内容1中要求3中验证开发环境的代码。
  1. 笔记本(Notebook)基本操作
  • 要求1:笔记本中单元格的基本操作,新建,插入,删除,运行;
  • 要求2:在笔记本里写不少于10行Python的代码并运行。
  • 要求3:将VS Code中的笔记本上传到AI Studio,运行;将AI Studio中的笔记本下载到本地,并用VS Code 运行。
  1. 修改内容1中要求3内的代码,完成以下任务:
  • 要求1:生成一幅纯黑色的图,生成一幅纯白色图
  • 要求2:生成一幅具有灰阶的图像
  • 要求3:调节2中的间隔分析人的视觉能分辨多少个灰阶
  • 要求4:生成横条纹的图像

实验过程

  • 要求1:生成一幅纯黑色的图,生成一幅纯白色图
  1. d = [0 for i in range(256)] * 100
  2. img = bytes(d)
  3. img = Image.frombytes('L', (256,100), img)
  4. imgar = np.array(img)
  5. plt.axis(False)
  6. plt.imshow(imgar, vmin = 0, vmax = 255,cmap = 'gray')
  7. plt.savefig('Black.png')
  8. plt.show()
  • Black
  1. d = [255 for i in range(256)] * 100
  2. img = bytes(d)
  3. img = Image.frombytes('L', (256,100), img)
  4. imgar = np.array(img)
  5. # plt.axis(False)
  6. plt.imshow(imgar, vmin = 0, vmax = 255,cmap = 'gray')
  7. plt.savefig('white.png')
  8. plt.show()
  • white

要求2:生成一幅具有灰阶的图像

  1. d = [i // 16 * 16 for i in range(256) ] * 100 
  2. img = bytes(d)
  3. img = Image.frombytes('L', (256,100), img)
  4. imgar = np.array(img)
  5. plt.axis(False)
  6. plt.imshow(imgar, vmin = 0, vmax = 255,cmap = 'gray')
  7. plt.savefig('gray.png')
  8. plt.show()

gray

  • 要求3:调节2中的间隔分析人的视觉能分辨多少个灰阶
  1. def figureGray(n):
  2.   d = [i // n * n  for i in range(256) ] * 100 
  3.   img = bytes(d)
  4.   img = Image.frombytes('L', (256,100), img)
  5.   imgar = np.array(img)
  6.   plt.axis(False)
  7.   plt.imshow(imgar, vmin = 0, vmax = 255,cmap = 'gray')
  8.   plt.savefig(f'{n} - 灰阶图像')
  9.   plt.show()

Main函数:

  1. for i in range(1,30):
  2.  figureGray(i)

1 - 灰阶图像2 - 灰阶图像3 - 灰阶图像4 - 灰阶图像5 - 灰阶图像6 - 灰阶图像7 - 灰阶图像8 - 灰阶图像9 - 灰阶图像10 - 灰阶图像11 - 灰阶图像12 - 灰阶图像13 - 灰阶图像14 - 灰阶图像15 - 灰阶图像

  • 要求4:生成横条纹的图像
  1. def figureGray(n):
  2.   d = [i // n * n  for i in range(256) ] * 100 
  3.   img = bytes(d)
  4.   img = Image.frombytes('L', (256,100), img)
  5.   imgar = np.array(img)
  6.   imgar = imgar.T
  7.   plt.axis(False)
  8.   plt.imshow(imgar, vmin = 0, vmax = 255,cmap = 'gray')
  9.   plt.savefig('横向灰阶图像.png')
  10.   plt.show()

主函数:

  1. figureGray(16)

横向灰阶图像

结果分析

  • 分析实验结果。

对于要求3,我们选取n从1到30,以n为间隔进行制作灰阶图像,然后观察到n = 5时,人眼就分辨清楚灰阶图像。

对于纵向条纹变换到横向条纹,我们将数字矩阵进行转置,然后进行绘图。

posted @ 2023-03-17 16:19  哲远甄骏  阅读(117)  评论(0)    收藏  举报