Реконструкция патчей изображения sklearn приводит к чистому изображению - PullRequest
1 голос
/ 09 апреля 2019
System:
    python: 3.6.8 |Anaconda custom (64-bit)| (default, Dec 29 2018, 19:04:46)  [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)]
executable: /Users/steve/miniconda3/envs/retinanet/bin/python
   machine: Darwin-18.2.0-x86_64-i386-64bit

BLAS:
    macros: SCIPY_MKL_H=None, HAVE_CBLAS=None
  lib_dirs: /Users/steve/miniconda3/envs/retinanet/lib
cblas_libs: mkl_rt, pthread

Python deps:
       pip: 19.0.3
setuptools: 40.8.0
   sklearn: 0.20.3
     numpy: 1.16.2
     scipy: 1.2.1
    Cython: 0.29.6
    pandas: 0.24.2

Я пытаюсь преобразовать изображение в патчи, а затем преобразовать его обратно в изображение и сохранить. Есть две функции, которые, кажется, делают это.

https://scikit -learn.org / стабильный / модули / генерироваться / sklearn.feature_extraction.image.extract_patches_2d.html # sklearn.feature_extraction.image.extract_patches_2d

https://scikit -learn.org / стабильный / модули / полученные / sklearn.feature_extraction.image.reconstruct_from_patches_2d.html # sklearn.feature_extraction.image.reconstruct_from_patches_2d

Используя следующий код, воссоздание патчей, кажется, просто "чернит" изображение и уменьшает его размер (исходный размер изображения составляет 31 МБ, а новый размер составляет 33 КБ). Нет цвета, ничего. Мусор.

import numpy as np
from PIL import Image
from sklearn.feature_extraction import image as skl
image = Image.open('./myimage.tif')
image = np.array(image)[..., :3]
patches = skl.extract_patches_2d(image, (300, 300), max_patches = 250)
reconstruct = skl.reconstruct_from_patches_2d(patches, image.shape)
# i need this as uint8, as i'm saving it back into an image
# i tried using skimage.img_as_ubyte, but i recieve an error
reconstruct = reconstruct.astype(np.uint8)
Image.fromarray(reconstruct, 'RGB').save('./myimage.out.tif')

Есть ли что-то, что я делаю не так? Патчи, возвращаемые из extract_patches_2d, имеют цвет и выглядят хорошо. Поэтому я ожидаю, что реконструкция будет вести себя так же.

...