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

Простейшие вопросы в области инженерной разработки

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

Postby Dionisij on 06 Nov 2019, 12:48

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

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

Для решения задачи пытаюсь использовать Array Subset для выделения субматрицы (по размеру аппертуры), два цикла (внутренний для перемещения субматрицы по столбцам (вдоль строки), внешний для перемещения по строкам) для формирования выходной матрицы применяю Insert Into Array. В программе осуществлена попытка реализации только части аппертуры (при такой реализации потом придеться опять организовывть двойной цикл что бы сложение элементов производить по строкам).
Image
Image
Столкнулся с массой проблем:
1) В выходной матрице в конце строки появляются дополнительные элементы которых быть не должно
2) Начиная со второй строки начальные элементы не суммируются а просто копируются, с ростом номера строки количество этих элементов увеличивается.
3) Ни как не могу разобраться с тем как задать дискретный шаг перемещения аппертуры. т.е. у в первой строке у меня суммируются соседние элементы: 1+2 ; 2+3 ; 3+4... а должны только 1+2 ; 3+4. Если добавить суммирование счетчика итераций i + размер аппертуры будет пропущено начальное значение (и дискретный шаг суммирования элементов все равно у меня увы не получился)
Image
Attachments
Цикл матрицы (аппертура).vi
(10.92 KiB) Downloaded 13 times
User avatar
Dionisij
interested
interested
 
Posts: 6
Joined: 18 Nov 2015, 22:41
LabVIEW Version: 2013
Karma: 0

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

Postby zxc_pavel on 06 Nov 2019, 14:37

Для изображений в labview есть imaq, там есть медианный фильтр
Если руками написать, то в примере length - это сколько точек вокруг "0" - нет усреднения, "1" - окно 3x3 ...
Attachments
Mean_1.vi
(25.3 KiB) Downloaded 12 times
0611.png
0611.png (11.81 KiB) Viewed 216 times
zxc_pavel
assistant
assistant
 
Posts: 124
Joined: 02 Jun 2016, 12:07
LabVIEW Version: 14
Karma: 76

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

Postby IvanLis on 06 Nov 2019, 14:52

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

1.png

Untitled 1.vi
lv2010 save from lv2016
(150.83 KiB) Downloaded 12 times
User avatar
IvanLis
professor
professor
 
Posts: 4839
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2015, 2016
Karma: 784
hardware VIP bloggers teachers


Return to Для чайников

Who is online

Users browsing this forum: No registered users and 1 guest

cron