diagonal pixel differences of image matrix

1 Ansicht (letzte 30 Tage)
mahesh chathuranga
mahesh chathuranga am 17 Sep. 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]

Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 17 Sep. 2013
Bearbeitet: Andrei Bobrov am 17 Sep. 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';

Weitere Antworten (1)

Teja Muppirala
Teja Muppirala am 17 Sep. 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 Kommentare
Andrei Bobrov
Andrei Bobrov am 17 Sep. 2013
Hi Teja! +1. I again forgotten about conv.
Teja Muppirala
Teja Muppirala am 17 Sep. 2013
Hello Andrei! conv is simpler, but your solution is definitely more creative and interesting.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Operating on Diagonal Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by