проблема с применением фильтра к изображению `.png`, хотя фильтр отлично работает с изображением` .tif` - PullRequest
0 голосов
/ 06 октября 2019

У меня есть 2 изображения, к которым я хочу применить фильтр. Первый - .tif черно-белый, а другой .png черно-белый, но (я полагаю) с цветным каналом.

Вот ссылка на мой github дляimages:

вот 2 исходных изображения

cameraman.tif:

enter image description here

einstein.png:

enter image description here

У меня нет проблем с применением фильтра к первому изображению cameraman.tif со следующим результатом:

enter image description here

Что касается второго изображения (einstein.png), я должен сначала прочитать его в формате оттенков серого, чтобы иметь возможность применить фильтр вообще. Но когда я применяю фильтр, изображение не меняется:

enter image description here

Вот код:

import matplotlib.image as mpimg
import numpy as np
from skimage import color
from skimage import io

img =  plt.imread('cameraman.tif')
einstein_bw = color.rgb2gray(io.imread('einstein.png'))

def contrast(img, size=5):
    filtered = np.zeros_like(img)
    H, W = img.shape
    for i in range(size//2, H-size//2):
        for j in range(size//2, W-size//2):
            patch = img[i-size//2:i+size//2+1, j-size//2:j+size//2+1]
            filtered[i,j] =  1.2*img[i, j] - 1/(size**2)*np.mean(patch)
    return filtered

contrasted = contrast(img, 3)
plt.imshow(contrasted, cmap='gray')
plt.savefig('cameraman_contrast.png')

contrasted = contrast(einstein_bw, 5)
plt.imshow(contrasted, cmap='gray')
plt.savefig('einstein_contrast.png')
...