0

首先,对不起我的英语不好,我会说西班牙语,所以我会尽力解释我的问题。

我有一个标准化 ([0-255]) dicom 图像,我想显示 8 个图像,但改变位深度,我的意思是:1 位图像、2 位图像、3 位图像等。我的代码只是打开和标准化图像,因为我不知道应该怎么做才能得到我想要的东西,也许将所有像素值转换为二进制,但我真的不太了解,我开始学习数字图像处理。这是我的代码

import numpy as np
import matplotlib.pyplot as plt
import pydicom as dicom


IM = r"C:\Users\Nico\Desktop\tarea2\MR-cerebro-ANON\IM.dcm"
data = dicom.read_file(IM)
imagen = data.pixel_array[200]
img_norm = []
for pixel in imagen:
    img_norm.append((pixel/np.amax(imagen)*255))
plt.imshow(img_norm,cmap='bone'),plt.axis('off')
plt.title('Imagen normalizada')
plt.show()

更新:

我终于得到了我想要的东西,所以我会把我的代码放在这里以防有人想改进它,因为我知道它可能没有那么优化,但我是一个初学者,所以这就是我所做的,如果有人愿意的话优化它,随意做。另外,也许有了这个结果,我的问题现在更清楚了,它适用于所有 8 位,只需修改第二个“for”上的 int 函数。这些是我得到标准化的图像1 位图像6 位图像

bin1 = []
bin11 = []
for i in c:
    for j in i:
        bin1.append('00000000'+bin(j)[2::])
for b in bin1:   
    bin11.append(int(b[-1:],2))    
plt.imshow(np.reshape(bin22,(480,480)),cmap='gray')
plt.title('Imagen de 1 bits')
plt.show()
4

1 回答 1

0

更新(答案):

我终于得到了我想要的东西,所以我会把我的代码放在这里以防有人想改进它,因为我知道它可能没有那么优化,但我是一个初学者,所以这就是我所做的,如果有人愿意的话优化它,随意做。另外,也许有了这个结果,我的问题现在更清楚了,它适用于所有 8 位,只需修改第二个“for”上的 int 函数。这里有一些图像,我得到了1 位图像5 位图像6 位图像, 8 位图像

bin1 = []
bin11 = []
for i in c:
    for j in i:
        bin1.append('00000000'+bin(j)[2::])
for b in bin1:   
    bin11.append(int(b[-1:],2))    
plt.imshow(np.reshape(bin22,(480,480)),cmap='gray')
plt.title('Imagen de 1 bits')
plt.show()
于 2020-11-12T05:16:18.440 回答