Не ответ, но слишком долго для комментария.Я думаю, что основная причина ваших проблем уже в инициализации массива:
img = np.array(ds.pixel_array, dtype = np.uint8)
uint8, вероятно, не то, что у вас есть в файле DICOM.Во-первых, потому что это выглядит как изображение CT, которое обычно хранится с 10+ bpp, а во-вторых, потому что артефакты, с которыми вы сталкиваетесь, выглядят мне очень знакомыми.Такие артефакты (плотные кости отображаются черным цветом, эффекты градиента) обычно возникают, если> 8-битные пиксельные данные интерпретируются как 8-битные.
Кстати: мне кажется, что оба изображения выглядят некорректно.
Извините за то, что вы не являетесь экспертом по питону и просто способны сказать, что не так, но не можете сказать, как сделать это правильно.