2013-05-20 2 views
1

Моя книга говорит это о том образе ядра концепции в OpenCVOpenCV: Понимание ядра

Когда вычисление осуществляется по пиксельной окрестности, он является общим для представить это с помощью матрицы ядра. Это ядро ​​описывает, как связанные с вычислением пикселей вычисляются для получения желаемого результата .

В методах размытия изображений мы используем размер ядра.

cv::GaussianBlur(inputImage,outputImage,Size(1,1),0,0) 

Так что, если я говорю, что размер ядра Size(1,1) это значит ядро ​​есть только 1 пиксель?

Пожалуйста, посмотрите на следующее изображение

enter image description here

В здесь, какой размер ядра? Size(3,3)? Если я скажу размер Size(1,1) на этом изображении, значит ли это, что ядро ​​получило только 1 пиксель, а значение пикселя равно 0 (первое значение на изображении)?

ответ

3

Изображение проводке является 3x3 ядро, которое будет определено cv::Size(3,3). Вы правы в том, что cv::Size(1,1) соответствует одному пикселю, но «cv::Size(1,1)» в отношении изображения не имеет смысла. Ядро 1x1 просто имеет значение [1].

5

Размер ядра в примере изображения, которое вы указали, 3-на-3 (Size(3,3)), да. Размер ядра 1-на-1 равен, хотя это было бы не очень интересно.

Общее название операции, выполняемой GaussianBlur, является сверткой .

Функция GaussianBlur создает гауссовское ядро, которое в основном представляет собой матрицу, представляющую, как вы должны объединять окно n-на-n пикселей, чтобы получить одно значение пикселя (используя гауссовский шаблон размытия в этом случае).

Ядро размером 1 на 1 не может выполнять ничего, кроме скалярного умножения изображения; т. е. свертка по матрице 1 на 1 [c] составляет всего c * inputImage.

Как правило, вы хотите, чтобы выбрать н-на-н Gaussian ядро, которое удовлетворяет следующему условию:

  • распространение гауссовых (т.е.стандартное отклонение или отклонение), чтобы он размывал сумму, которую вы хотите
    • большее количество означает больше размытия; меньшее число означает, что меньше размытости
  • выбрать п достаточно большим, чтобы не усечь гауссовой слишком близко к режиму

Ссылки:

+0

Спасибо большое за ответ. Особая благодарность за объяснение о GaussianBlur. +1 от меня :) –

+0

@Knight Не совсем понятно, почему другой ответ получил специальную галочку - независимо от того, что плавает ваша лодка. –

+0

«Большее число означает большее размытие» - я это заметил. Но в официальных официальных примерах они повторяются 31 раз! http://docs.opencv.org/doc/tutorials/imgproc/gausian_median_blur_bilateral_filter/gausian_median_blur_bilateral_filter.html#smoothing Любая идея о том, почему они просто просто не используют большой размер ядра вместо циклов? Даже размер редактируется внутри цикла, его можно легко размыть, получив большой размер, например Size (21,21) –

1

Это изображение является ядром и размером 3x3. Ядра применяются к изображению путем умножения соответствующих значений пикселей и получения суммы из 9 результатов. Это называется сверткой/фильтрацией в литературе. Вы можете посмотреть на следующих ресурсах для получения дополнительной информации:

http://en.wikipedia.org/wiki/Kernel_(image_processing) http://homepages.inf.ed.ac.uk/rbf/HIPR2/filtops.htm http://www.cse.usf.edu/~r1k/MachineVisionBook/MachineVision.files/MachineVision_Chapter4.pdf

Смежные вопросы