Скользящее суммирование элементов матрицы

Простейшие вопросы в области инженерной разработки
Ответить
Аватара пользователя
Dionisij
interested
interested
Сообщения: 6
Зарегистрирован: 18 ноя 2015, 22:41
Версия LabVIEW: 2013

Скользящее суммирование элементов матрицы

Сообщение Dionisij »

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

Разрешение изображение непостоянно - т.е. размер матрицы может изменятся.
Размер аппертуры так же может меняться (но матрица аппертуры квадратная).

Для решения задачи пытаюсь использовать Array Subset для выделения субматрицы (по размеру аппертуры), два цикла (внутренний для перемещения субматрицы по столбцам (вдоль строки), внешний для перемещения по строкам) для формирования выходной матрицы применяю Insert Into Array. В программе осуществлена попытка реализации только части аппертуры (при такой реализации потом придеться опять организовывть двойной цикл что бы сложение элементов производить по строкам).
Изображение
Изображение
Столкнулся с массой проблем:
1) В выходной матрице в конце строки появляются дополнительные элементы которых быть не должно
2) Начиная со второй строки начальные элементы не суммируются а просто копируются, с ростом номера строки количество этих элементов увеличивается.
3) Ни как не могу разобраться с тем как задать дискретный шаг перемещения аппертуры. т.е. у в первой строке у меня суммируются соседние элементы: 1+2 ; 2+3 ; 3+4... а должны только 1+2 ; 3+4. Если добавить суммирование счетчика итераций i + размер аппертуры будет пропущено начальное значение (и дискретный шаг суммирования элементов все равно у меня увы не получился)
Изображение
Вложения
Цикл матрицы (аппертура).vi
(10.92 КБ) 108 скачиваний
Аватара пользователя
zxc_pavel
adviser
adviser
Сообщения: 242
Зарегистрирован: 02 июн 2016, 12:07
Версия LabVIEW: 15
Благодарил (а): 9 раз
Поблагодарили: 23 раза
Контактная информация:

Re: Скользящее суммирование элементов матрицы

Сообщение zxc_pavel »

Для изображений в labview есть imaq, там есть медианный фильтр
Если руками написать, то в примере length - это сколько точек вокруг "0" - нет усреднения, "1" - окно 3x3 ...
Вложения
Mean_1.vi
(25.3 КБ) 99 скачиваний
0611.png
0611.png (11.81 КБ) 1356 просмотров
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5461
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 27 раз
Поблагодарили: 86 раз

Re: Скользящее суммирование элементов матрицы

Сообщение IvanLis »

Dionisij, не совсем понятно, что Вы хотите получить...
Если Вы работаете с 2D массивом, то зачем вы переходите на строки? Выделяйте из исходного 2D массив (необходимый ROI) и обрабатывайте его.
Но я подразумеваю, что нужно реализовать обычную свертку, для этого используется функция Convolution, нужно только правильно ядро сформировать. Я в примере сделал "среднее значение". Вот результат:
Снимок экрана от 2019-11-06 14-44-02.png
1.png
Untitled 1.vi
lv2010 save from lv2016
(150.83 КБ) 113 скачиваний
Ответить

Вернуться в «Для чайников»