У меня есть 2 изображения, к которым я хочу применить фильтр. Первый - .tif
черно-белый, а другой .png
черно-белый, но (я полагаю) с цветным каналом.
Вот ссылка на мой github дляimages:
вот 2 исходных изображения
cameraman.tif
:
einstein.png
:
У меня нет проблем с применением фильтра к первому изображению cameraman.tif
со следующим результатом:
Что касается второго изображения (einstein.png
), я должен сначала прочитать его в формате оттенков серого, чтобы иметь возможность применить фильтр вообще. Но когда я применяю фильтр, изображение не меняется:
Вот код:
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')