如何在python上显示所有8位图像



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

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

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

IM = r"C:UsersNicoDesktoptarea2MR-cerebro-ANONIM.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位,只需修改第二个"上的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()

更新(应答(:

我终于得到了我想要的东西,所以我会把我的代码放在这里,以防有人想改进它,因为我知道它可能没有那么优化,但我是一个初学者,所以这就是我所做的,如果有人想优化它,请随意做。此外,也许有了这个结果,我的问题现在更清楚了,它适用于所有8位,只需修改第二个"上的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()

最新更新