Borrar filtros
Borrar filtros

diagonal pixel differences of image matrix

1 visualización (últimos 30 días)
mahesh chathuranga
mahesh chathuranga el 17 de Sept. de 2013
is there any method to get the diagonal pixel differences(left right diagonal) of a image matrix.for example , i have to obtain [-8 -2 -4;4 2 -16;0 2 4] from [2 1 8 24;9 10 3 12;2 5 8 19;1 2 3 4]

Respuesta aceptada

Andrei Bobrov
Andrei Bobrov el 17 de Sept. de 2013
Editada: Andrei Bobrov el 17 de Sept. de 2013
b = [2 1 8 24;9 10 3 12;2 5 8 19;1 2 3 4];
out = rot90(spdiags(tril(triu(flipud(diff(flipud(spdiags(b,-2:2))))),2)));
other variant without spdiags
s = size(b);
c = ones(s + [0 s(1)-1]);
c1 = rot90(tril(triu(c),s(2)-1));
c1(c1>0) = b';
c2 = diff(c1');
c3 = c2(:,end-1:-1:2);
t = tril(triu(ones(size(c3))),s(2)-2);
c3 = rot90(c3);
out = zeros(s-1)';
out(:) = c3(rot90(t)>0);
out = -out';

Más respuestas (1)

Teja Muppirala
Teja Muppirala el 17 de Sept. de 2013
b = [2 1 8 24;9 10 3 12;2 5 8 19;1 2 3 4];
conv2(b,[-1 0; 0 1],'valid')
  2 comentarios
Andrei Bobrov
Andrei Bobrov el 17 de Sept. de 2013
Hi Teja! +1. I again forgotten about conv.
Teja Muppirala
Teja Muppirala el 17 de Sept. de 2013
Hello Andrei! conv is simpler, but your solution is definitely more creative and interesting.

Iniciar sesión para comentar.

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by