【发布时间】:2026-01-03 22:40:01
【问题描述】:
我正在尝试测试如果我将(最初)使用 pydicom 模块从 .dcm 文件中读取的 16 位图像转换为 8 位图像,我会丢失多少信息。这是我正在使用的可视化代码:
from mpl_toolkits.axes_grid1 import ImageGrid
import matplotlib.pyplot as plt
%matplotlib inline
def show_images(images, row_num=1, col_num=None):
if not col_num:
col_num = len(images)
fig = plt.figure(figsize=(12., 12.))
grid = ImageGrid(fig, 111, nrows_ncols=(row_num, col_num),axes_pad=0.1)
for ax, im in zip(grid, images):
ax.axis('off')
ax.imshow(im, cmap="gray")
show_images([raw_image_8, agcwd_image_8, raw_image_16, agcwd_image_16], row_num=2, col_num=2)
这是我得到的输出:
如您所见,视觉上完全没有区别。现在这是由于 ImageGrid 类,还是我不知道的其他一些内置功能,还是真的没有区别?
注意我是如何获得图像的:
- 使用 pydicom 作为 16 位图像从 .dcm 文件中读取它们
- 将它们以 .png 格式写回磁盘
- 使用 cv2.imread("image_path") 我获得了 8 位图像(默认 OpenCV 设置),使用 cv2.imread("image_path", -1) 我获得了 16 位图像(-1参数告诉 OpenCV 按原样读取图像)。
【问题讨论】:
标签: python opencv matplotlib