матрицу. Сверточный фильтр презадан – это просто одномерный массив из нескольких чисел. Моя задача написать программу, которая будет работать эффективно, и еще мне нужно работать с int8 типом.
Я пишу на python, использую numpy.
Я использовал функцию из numpy convolve.
Я не могу понять, могу ли я использовать быстрое преобразование Фурье или нет (и нужно ли мне это вообще)? Scipy’евский fftconvolve возвращает комплексные числа, а мне нужны int8.
def convolve(A: np.array):
output = np.zeros(shape=A.shape, dtype=np.int8)
for i in np.arange(A.shape[0]):
output[i] = np.convolve(a=A[i], v=KERNEL, mode="same")
return output
Моя функция вот так выглядит. Это является оптимальным решением или это неэффективное решение?
свертывание это convolution? если да, то для чего тебе это нужно?
Convolution, да. Это часть моей домашки.
а входные данные это звук или фото? fft преобразует в частоты
Входные данные у меня – матрица с рандомными integers int8.
Эта матрица с рандомными integers, но упражнение из серии computer vision. Поэтому можем представить, что на входе у меня чб изображение.
что за курс если не секрет?
FFT для ускорения вычисления свёртки? Если массив не очень большой, то смысла нет. Если большой, то можно использовать fftconvolve из scipy. Эта функция как раз вычисляет свёртку через преобразование Фурье.
Проход по массиву в питоновских циклах — плохая идея.
Обсуждают сегодня