Меня немного смущает вопрос, потому что вопрос касается фильтров sobel, но вы предоставили функцию, которая добавляет шум к изображению.
Для начала, вот функция Sobel , которая будет вызывать классические функции sobel (которые будут вычислять градиенты dx и dy).
Во-вторых, есть более общий filter2D , который позволит вам применить произвольное ядро (например, то, которое вы создали в вопросе).
Наконец, если вы хотите применить другое ядро в каждом канале или полосе, вы можете сделать так, как подразумевает документация filter2D, и вызвать split для изображения, а затем вызвать filter2D для каждого канала, а затем объединить значения в одноканальное изображение с использованием матричных операторов.
Самая сложная вещь, которую, я думаю, вы могли бы спросить, - это как найти местоположения той соли, которую вы добавили к изображению, и ответом было бы сделать ядро для каждой полосы следующим образом:
полоса 0:
[[ 0, 0, 0],
[ 0, 1, 0],
[ 0, 0, 0]]
группа 1:
[[ 1, 0, 0],
[ 0, 0, 0],
[ 0, 0, 0]]
группа 2:
[[ 0, 1, 0],
[ 0, 0, 0],
[ 0, 0, 0]]
Обязательно поместите якорь в центр ядра (1,1).