К счастью Champion дирижабль Пика + группа [6139371] точность посадки, беззаботной возврат крови

К счастью Champion дирижабль Пика + группа [6139371] точность посадки, беззаботной возврат крови

Q группа технических экспертов 6139371 онлайн одно руководства руководства в течение всего дня! Многолетний опыт и знания, чтобы поделиться! Выиграй команда научит вас практические планы!

Двусторонняя фильтрация (двусторонний фильтр) в нелинейной фильтрации. Это подход к пространственной близости к значению пикселя подобия изображения связывания. При фильтрации, метод фильтрации с учетом пространственной информации , аналогичной близости цветовой информации во время фильтрации шума, сглаживание изображения, края , сохраняющий и делать.
Двусторонняя фильтрация связывания двух гауссовских фильтра. Ответственный вес близость вычислительное пространство, которое обычно используется принцип Гаусса фильтра. В то время как другой отвечает за веса в расчете подобия значений пикселей. При одновременном действии двух гауссовских фильтра, это двусторонний фильтрации.

Если фильтр Гаусса (пространственная близость) принцип не ясно, рекомендуются прочитать эти две статей
OpenCV фильтр Гаусса Подробных и код для достижения
быстрого фильтра Гаусса, Gaussian Blur, Gaussian сглаживания (двумерный шаг интегрирования объема одномерной свертки)

Смотрите здесь, блогеры думают , вы Gaussian фильтр (пространственная близость) понял и освоен, то мы начинаем объяснять двусторонний фильтрацию.
В вышеупомянутых двух статьях, гауссы (пространственная близость) являются двумерный гауссовым нормальным распределение по матрице изображений делает операцию свертки. Учтите , что пространственное пиксельные значения отношения расстояния в окрестностях. Рассчитано по массе в ядре , соответствующее диапазон размеров, пространственную близость от различных точек центральной точки, и вычисленной матрица свертки ядерных изображений. Наконец, после фильтрации изображения для достижения эффекта сглаживания, и края изображений будут иметь определенную степень гладкости, так что все изображение становится размытым, края не могут быть сохранены.

Основная идея двусторонний фильтрации является: принцип гауссов фильтр (пространственная близость), центральная точка через каждую точку, чтобы вычислить пространственную близость различных весов, чтобы оптимизировать его значение оптимизировано для пространства и веса близости значений пикселей, рассчитанной произведение веса вычисления подобия, оптимизированные весовые значени для свертки изображений дополнительно. Таким образом, чтобы достичь края сохраняющего удаления шума.

Во-первых, двусторонняя формула фильтрации

г (I, J) представляет собой точку выхода;
S (I, J) относится к (I, J) в качестве диапазона размеров центра из (2n + 1) (2n + 1) а;
F (K, L) , представитель (ы) входные точки;
W (I, J, K, L) представляет собой прохождение двух гауссовых функций вычисленных значение (здесь, а не вес)

Мы трансформировали приведенную выше формулу, формула предполагается, что ш (I, J, K, L) равна т, то


При условии m1 + m2 + m3 ... + тп = М, есть

На этом этапе вы можете видеть, это, очевидно, операция свертки ядерной матрицы и изображений. Отличающееся тем, что первые точка м1 / М представитель (или последняя точка, чтобы увидеть, как обратно) от веса, а матрица изображения с помощью оператора свертки для ядерных и взвешивал, чтобы получить окончательное значение выходного сигнала.

Далее мы обсудим ключ W (I, J, K, L)
WS пространственная близость к гауссовой функции, иг является функцией Гаусса к значению пикселя подобия

 

Можно увидеть, ш является WS продукта и сог. Для WS, это обычная гауссова функция фильтра подставляется в координаты, то входное значение представляет собой программу для Сигмы, которая является расчетом пространственно смежной функции.
И сог этого сходство значения пикселя (цветовое пространство) вычисляется, следует отметить , что это функция Гаусса для значений координат, верхняя 2sigmar ^ 2 является нормой, где величина | f (I, J) -f (к, л ) | ^ 2. Является ли абсолютное значение квадрата значений пикселей двух точек разницы. Отличающееся тем , что цветное изображение при вычислении разности (I, J) RGB значения канала трехточечный минуса суммы (K, L) точки и каждый значение цветовых каналов RGB. Это цветовое пространство вычисляется, а не в виде одного канала, но в конечном матрицы свертки умножается на значение одного канала и правого канала вместо суммы трех.

Во- вторых, двустороннее распределение веса фильтрации (Фото из Интернета)
(1) Когда изображение нежной степени изменения в регионе, значение пикселя (значение RGB) , разрыв в окрестности или менее. В это время сога бесконечно близко к 1, так что в это время является обычной двусторонний гауссова фильтрацией, добиться эффекта сглаживания изображения.

(2) Когда значение пикселя (значение RGB), в тяжести области изменения изображения, например, в краевой области, окрестность зазора сильно различается. В это время в направлении нулевого Wr подхода значения, тем больше разницы в цвете, тем больше приближения сога 0, окончательное значение 0 в целом приближения уравнения. Конечный результат является весом 0. Поэтому, когда окончательный расчет, то не будет влиять на выходное значение.


Таким образом, изображение, которое и гладкой, сохраняя при этом края изображения.

В- третьих, двусторонняя фильтрация для достижения (фото из Интернета)
эффект первого смотреть на двусторонней фильтрации

 

Функция принимает три параметра, фильтр пластины (ядро) радиус N, а параметры Сигмы Сигмара.
(. 1) Основная функция реализуется

Основной ИНТ (аннулируются)
{
// [. 1] Изображение чтение Src
CV = CV :: :: Mat imread СРК ( "pic3.jpg");
// [2] DST целевая картинка
CV :: Mat DST;
// [ 3] N , тем больше уровень фильтрации нечеткого (2 * N + 1) сигма пространства , тем больше коэффициента подобия нечеткого Сигмара
myBialteralFilter (СРК &, & DST, 25, 12.5, 50);
. // [4] форма отображает
резюме :: imshow ( "Пульт SRC 1006534767", то SRC);
CV :: imshow ( "ДСТ 1006534767", DST);
CV :: WaitKey (0);
CV :: destroyAllWindows ();

вернуть 0;
}
1.
2
3.
4.
5.
6.
7.
8.
9.
10
. 11
12
13
14
15
16
(2) двусторонний основная функция фильтрации, обратите внимание , что текущие веса и не нормализованы, нормированным необходимо при расчете, рассчитываются по формуле объяснить самую большую точку.

/ * Двусторонние функции фильтрации * /
пустота myBialteralFilter (Мат :: * Пульт SRC CV, резюме :: Мат ДСТ *, Int N, двойной к Сигмы, Двойной Зигмар)
{
// [. 1] Инициализация
* ДСТ = (* SRC) .clone ( );
INT = 2 * N + 1 _size;.
// [2] вычисляются пространственные веса и веса подобия
Int каналов = (* DST) .channels ();
двойной _colorArray * = NULL;
Двойной spaceArray ** _ = NULL , ;
_colorArray = get_color_Array (_size, каналы, Сигмара);
_spaceArray = get_space_Array (_size, каналы, чтобы Сигмы);
// фильтр [3] .
doBialteral (ДСТ, N, _colorArray, _spaceArray);

возвращение;
}
. 1
2
. 3
. 4
. 5
. 6
. 7
. 8
. 9
10
. 11
12
13
14
15
16
17.
гауссовой функции в координатном (пространственной близости) (3) .

/ * Вычислить пространственный вес * /
двойная ** get_space_Array (_size INT, Int каналов, двойные к Сигме)
{
// [. 1] Космические веса
Int I, J;
// [1-1] инициализация массива
дважды ** _ spaceArray = новый двойной * [_ площадь + 1 ]; // многорядные, последняя строка из первого разряда грубых данных
для (I = 0; я <_size + 1. Я ++) {
. _spaceArray [I] = новый новый двойной [_size + 1 ];
}
// [1-2] гауссово распределение расчет
INT center_i, center_j;
center_i = center_j = _size / 2;
_spaceArray [_size] [0] = 0.0f;
// [1-3] функция Гаусса
для (I = 0; я <_size, я ++) {
для (J = 0, J <_size; j ++) {
_spaceArray [I] , [Дж] =
ехр (- (1.0f) * (((I - center_i) * (I - center_i ) + (J - center_j) * (J - center_j)) /
(* 2.0f до сигмы к Сигме *)));
_spaceArray [_size] [0] + = _spaceArray [I] , [Дж];
}
}
вернуть _spaceArray;
}
. 1
2
. 3
. 4
. 5
. 6
. 7
. 8
. 9
10
. 11
12
13
14
15
16
17.
18
19.
20
21
22
23
24
25
(4. ) функция Гаусса для значений координат (цветовое пространство)

/ * Вычислить вес подобия * /
двойной * get_color_Array (_size INT, Int каналы, двойной Сигмар)
{
// [2] подобие веса
INT н-;
Двухместный * _colorArray новый новый = [255 * 2 канала +]; / / общая последняя разряда
Двойной WR = 0.0f;
_colorArray [255 * + каналы 1.] = 0.0f;
для (п = 0; п <255 * + каналы 1; п. - ++) {
_colorArray [п] = ехр (( * из -1.0f является (п-п- *)) / (2.0f * * Зигмар Сигмара));
_colorArray [255 * + каналы 1.] + = _colorArray [п];
}
возвращать _colorArray;
}
. 1
2
. 3
. 4
. 5
. 6
. 7
. 8
. 9
10
. 11
12
13
14
(5) фильтрации

/ *双边扫描计算* /
пустота doBialteral (резюме :: Мат * _src, Int N, двойной * _colorArray, двойной ** _ spaceArray)
{
INT _size = (2 * N + 1);
резюме :: Mat температура = (* _src) .clone ();
// [1]扫描
для (INT I = 0; я <(* _src) .rows; я ++) {
для (Int J = 0; J <(* _src) .cols; j ++) {
// [2]忽略边缘 ,
если (я> (_size / 2) - 1 && J> (_size / 2) - 1 &&
г <(* _src) .rows - (_size / 2) && J <(* _src) .cols - (_size / 2)) {

// [3] указывает , чтобы найти входное изображение, точка входа как центр выровнен с центром ядерной
// опорной точки в качестве центральной сердцевины оператора свертки => 180 ° гауссова управл юща матрица вычисления
@ координатные значение веса представителя Ij свертки ядра представитель изображения точка ввода координат
// оператор свертки (е * г) (I, J) = F (ик, JL) г (K, L) F представляет входное изображение для ядерной г
// в ядерной опорной точки (F * г) (I, J) = F (i - (к-аги), J- (л- а ^)) г (K, L) аи а , точка отсчета ядерной
// взвешенной сумма Примечание: координата в ядре 0,0 верхние левое происхождение
[. 3] Двойная СУММА = {0.0,0.0,0.0};
INT X, Y, значение;
Двойная space_color_sum = 0.0f;
// Примечание: уравнение поздней точки в диапазоне размеров в ядерном
// двусторонний формула G (IJ из) = (F1 , F2 * * М1 + М2 + ... Fn * Мп) / (М1 + М2 + ... Mn)
// space_color_sum = (M1 + M12 + ... Mn) ,
для (INT K = 0, K <_size, K ++) {
для (INT L = 0, L <_size, L ++) {
х = I - к + (_size / 2); // картина х (х, у) это точка ввода
у = J - L + (_size / 2); // картина у (I, J) является текущий момент выходной
Значения = абс ((* _ SRC) .at <резюме :: Vec3b> (I, J) [0] + (* _src) .at <резюме :: Vec3b> (I, J) [1] + (* _src) .at <резюме :: Vec3b> (I, J) [2]
- (* _src) .at <резюме :: Vec3b> (х, у) [0] - (* _src) .at <резюме :: Vec3b> (х, у) [1] - (* _src) .at <резюме :: Vec3b> (х, у) [2]);
space_color_sum + = (_colorArray [значения] * _spaceArray [к] [л]);
}
}
//计算过程
для (INT = 0; к <_size; K ++) {
для (Int л = 0; л <_size; л ++) {
х = я - к + (_size / 2); //原图х (х, у)是输入点
у = J - L + (_size / 2); //原图у (I, J)是当前输出点
значения = абс ((* _ ЦСИ) .at <резюме :: Vec3b> (I, J) [0] + (* _src) .at <резюме :: Vec3b > (I, J) [1] + (* _src) .at <резюме :: Vec3b> (I, J) [2]
- (* _src) .at <резюме :: Vec3b> (х, у) [0 ] - (* _src) .at <резюме :: Vec3b> (х, у) [1] - (* _src) .at <резюме :: Vec3b> (х, у) [2]);

сумма [с] + = ((* _src) .at <резюме :: Vec3b> (х, у) [с]
* _colorArray [значения]
* _spaceArray [к] [л])
/ space_color_sum;
}
}
}
Для (Int с = 0; с <3; C ++) {
temp.at <резюме :: Vec3b> (I, J) [с] = сумма [с];
}
}
}
}
//放入原图
(* _src) = temp.clone ();

возвращение;
}
----------------
Отказ от ответственности: Эта статья CSDN блоггера «Цинчэншань Mountain монаха» из оригинальной статьи, следовать CC 4.0 BY-SA об авторском соглашении, воспроизводить, пожалуйста , приложите оригинал ссылка на источник и это утверждение.
Оригинальная ссылка: https: //blog.csdn.net/qq_36359022/article/details/80198890

рекомендация

отwww.cnblogs.com/qun115991/p/11710346.html