Фильтр от RGB до серого не сохраняет форму - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть 209 изображений кошек / не кошек, и я хочу увеличить свой набор данных. Для этого используется следующий код, который я использую для преобразования каждого массива NumPy значений RGB в серый фильтр. Проблема в том, что мне нужно, чтобы их размеры были одинаковыми, чтобы моя нейронная сеть работала, но у них разные размеры. Код:

def rgb2gray(rgb):
  return np.dot(rgb[...,:3], [0.2989, 0.5870, 0.1140])

Normal Image Dimension: (64, 64, 3)
After Applying the Filter:(64,64)

Я знаю, что недостающие 3 - это, вероятно, значение RGB или что-то, но я не могу найти способ иметь "фиктивное" третье измерение, которое не повлияло бы на фактическое изображение. Может кто-нибудь предоставить альтернативу функции rgb2gray, которая поддерживает измерение?

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

Весь смысл применения этого фильтра в оттенках серого состоит в том, чтобы уменьшить количество каналов с 3 (т. Е. R, G и B) до 1 (т. Е. Серого).

Если вы действительно, действительно хотите получить 3-канальное изображение, которое выглядит точно так же, но занимает в 3 раза больше памяти, просто сделайте все 3 канала равными:

grey = np.dstack((grey, grey, grey))
0 голосов
/ 11 апреля 2020
def rgb2gray(rgb):
  return np.dot(rgb[...,:3], [[0.2989, 0.5870, 0.1140],[0.2989, 0.5870, 0.1140],[0.2989, 0.5870, 0.1140]])
...