После полудня,
Я занимаюсь глубоким изучением целых изображений слайдов (биомедицинские изображения физических образцов). Я использую openslide для разбиения всего слайд-изображения (размером 5 ГБ) на более мелкие фрагменты всего изображения, а затем преобразую его в цветовое пространство RGB (я считаю, что патч находится в RGBA как объект изображения PIL). Если я использую 5-кратное увеличение, я обнаруживаю, что когда я сохраняю изображение вниз, я обнаруживаю странный шум в пикселе, который выглядит так, как будто многие пиксели флуоресцентны (не присутствуют при больших увеличениях). Мой вопрос: кто-нибудь знает, почему это вызывает функция read_region библиотеки Openslide, или они знают, как я могу выполнить некоторую постобработку, чтобы удалить этот артефакт из изображения? Я попытался способы преобразования изображения см. Ниже
1.
for w in range(boundaries[0][0], boundaries[0][1], 500):
for h in range(boundaries[1][0], boundaries[1][1], 500):
patch = scan.read_region((w-2000, h-2000), 3, (500, 500))
img2 = img[h-2000:h+2000, w-2000:w+2000,:]
patch=np.asarray(patch)
patchRGB = cv2.cvtColor(patch, cv2.COLOR_RGBA2RGB)
print(np.mean(patchRGB), img2.shape)
if (img2.shape == (4000, 4000, 3) and np.mean(patchRGB) < 200) and np.mean(patchRGB) > 50:
cv2.imwrite('output/test/images/'+os.path.basename(ndpi)[:-5]+'_'+str(w)+'_'+str(h)+'.png', patchRGB)
cv2.imwrite('output/test/masks/'+os.path.basename(ndpi)[:-5]+'_'+str(w)+'_'+str(h)+'_masks.png', img2)
2.
for w in range(boundaries[0][0], boundaries[0][1], 500):
for h in range(boundaries[1][0], boundaries[1][1], 500):
patch = scan.read_region((w-2000, h-2000), 3, (500, 500))
img2 = img[h-2000:h+2000, w-2000:w+2000,:]
patchRGB = patch.convert('RGB')
print(np.mean(patchRGB), img2.shape)
if (img2.shape == (4000, 4000, 3) and np.mean(patchRGB) < 200) and np.mean(patchRGB) > 50:
patchRGB.save('output/5x/images/'+os.path.basename(ndpi)[:-5]+'_'+str(w)+'_'+str(h)+'.png')
cv2.imwrite('output/5x/masks/'+os.path.basename(ndpi)[:-5]+'_'+str(w)+'_'+str(h)+'_masks.png', img2)