Может ли кто-нибудь объяснить мне сходства и различия, Корреляции и свертывания? Пожалуйста, объясните интуицию, а не математическое уравнение (т.е. Переверните ядро /импульс). Примеры приложений в домене обработки изображений для каждой категории также будут оценены.
Свертывание Vs Корреляция
Ответ 1
Вероятно, вы получите гораздо лучший ответ на обмен стеками dsp, но... для начала я нашел несколько подобных терминов, и они могут быть сложными для определения определений.
- Корреляция
- Кросс-корреляция
- Свертка
- Коэффициент корреляции
- Продукт с раздвижными точками
- Корреляция Пирсона
1, 2, 3 и 5 очень похожи.
4,6 аналогичны
Обратите внимание, что все эти термины имеют точечные продукты, поднимающие головы.
Вы спросили о Correlation и Convolution - они концептуально одинаковы, за исключением того, что вывод перевернут в свертке. Я подозреваю, что вы, возможно, спрашивали о различии между коэффициентом корреляции (например, Pearson) и сверткой/корреляцией.
Предпосылки
Я предполагаю, что вы знаете, как вычислить dot-продукт. Для двух равномерных векторов v и w, каждый из которых имеет три элемента, произведение алгебраических точек равно v [0] * w [0] + v [1] * w [1] + v [2] * w [2]
Существует много теории за точкой продукта с точки зрения того, что она представляет и т.д.
Обратите внимание, что точечный продукт представляет собой одно число (скаляр), представляющее отображение между этими двумя векторами/точками v, w. В геометрии часто вычисляется косинус угла между двумя векторами, который использует точечный продукт. Косинус угла между двумя векторами находится между -1 и 1 и может рассматриваться как мера сходства.
Коэффициент корреляции (Pearson)
Коэффициент корреляции между равной длиной v, w является просто точечным произведением двух нулевых средних сигналов (вычесть среднее v из v, чтобы получить zmv и среднее w из w, чтобы получить zmw - здесь zm является сокращением для нулевого среднего), деленное на величины zmv и zmw.
чтобы создать число между -1 и 1. Близко к нулю означает небольшую корреляцию, близкую к +/- 1, является высокой корреляцией. он измеряет сходство между этими двумя векторами.
Для лучшего определения см. http://en.wikipedia.org/wiki/Pearson_product-moment_correlation_coefficient.
Свертка и корреляция
Когда мы хотим скоррелировать/свертывать v1 и v2, мы в основном вычисляем ряд точечных произведений и помещаем их в выходной вектор. Скажем, что v1 - три элемента, а v2 - 10 элементов. Точечные продукты, которые мы вычисляем, следующие:
output[0] = v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2]
output[1] = v1[0]*v2[1]+v1[1]*v2[2]+v1[2]*v2[3]
output[2] = v1[0]*v2[2]+v1[1]*v2[3]+v1[2]*v2[4]
output[3] = v1[0]*v2[3]+v1[1]*v2[4]+v1[2]*v2[5]
output[4] = v1[0]*v2[4]+v1[1]*v2[5]+v1[2]*v2[6]
output[5] = v1[0]*v2[7]+v1[1]*v2[8]+v1[2]*v2[9]
output[6] = v1[0]*v2[8]+v1[1]*v2[9]+v1[2]*v2[10] #note this is
#mathematically valid but might give you a run time error in a computer implementation
Выход может быть перевернут, если требуется истинная свертка.
output[5] = v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2]
output[4] = v1[0]*v2[1]+v1[1]*v2[2]+v1[2]*v2[3]
output[3] = v1[0]*v2[2]+v1[1]*v2[3]+v1[2]*v2[4]
output[2] = v1[0]*v2[3]+v1[1]*v2[4]+v1[2]*v2[5]
output[1] = v1[0]*v2[4]+v1[1]*v2[5]+v1[2]*v2[6]
output[0] = v1[0]*v2[7]+v1[1]*v2[8]+v1[2]*v2[9]
Обратите внимание, что на выходе мы имеем менее 10 элементов, так как для простоты я вычисляю свертку только там, где определены как v1, так и v2
Отметим также, что свертка - это просто число точечных произведений. За эти годы была значительная работа, чтобы ускорить свертки. Широкоточные точечные продукты медленны и могут ускоряться, сначала преобразуя векторы в базовое пространство, и затем вычисляя одно векторное умножение, а затем инвертируя результат, хотя я не буду вдаваться в это...
Возможно, вы захотите посмотреть на эти ресурсы, а также на googling: Вычисление корреляции и значимости Pearson в Python
Ответ 2
Лучший ответ, который я получил, был из этого документа: http://www.cs.umd.edu/~djacobs/CMSC426/Convolution.pdf
Я собираюсь скопировать выдержку из документа:
"Ключевое различие между ними состоит в том, что свертка ассоциативна, т.е. если F и G являются фильтрами, то F * (GI) = (FG) * I. Если вы не верите в это, попробуйте простой пример, например, с помощью F = G = (- 1 0 1). Очень удобно, чтобы свертка была ассоциативной. Предположим, например, что мы хотим сгладить изображение и затем взять его производную. Мы могли бы сделать это, свернув изображение с гауссовым фильтром, а затем свертывание его с помощью производного фильтра. Но мы могли бы альтернативно свернуть производный фильтр с гауссовым, чтобы создать фильтр, называемый разностью гауссовых (DOG), а затем сверлить его с помощью нашего изображения. это то, что фильтр DOG можно предварительно вычислить, и нам нужно только сверлить один фильтр с нашим изображением.
В общем, люди используют свертку для операций обработки изображений, таких как сглаживание, и используют корреляцию для соответствия шаблону изображению. Затем мы не возражаем, что корреляция не является ассоциативной, потому что не имеет смысла объединять два шаблона в один с корреляцией, тогда как мы часто можем комбинировать два фильтра для свертки ".
Ответ 3
Свертывание подобно корреляции, за исключением того, что мы перебрасываем фильтр перед корреляцией