Por ejemplo:
M =
1 2
3 4
[diffX, diffY] = gradient(M)
diffX =
1 1
1 1
diffY =
2 2
2 2
Se aprecia que diffX es la diferencia entre los elementos de las filas y diffY es la diferencia entre los elementos de las columnas.
Aplicando este concepto a las imagenes en escala de grises :
function fotocopia(imagen, salida)
im = imread(imagen);
[diffX,diffY] = gradient(im);
fotocopia = (diffX.^2 + diffY.^2).^(1/2);
fotocopia = fotocopia * 3;
fotocopia = 255 - fotocopia;
imwrite(fotocopia,salida);
endfunction
El operador . es para que se haga la operación a cada elemento de la matriz (elevar al cuadrado elemento por elemento)
La multiplicación por 3 es para realzar los bordes
La resta es para que el fondo quede blanco y el contorno oscuro (255 = blanco, 0 = negro).
fotocopia("plum.jpg","fotocopia.jpg");