diagonal pixel differences of image matrix
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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]
0 Commenti
Risposta accettata
Andrei Bobrov
il 17 Set 2013
Modificato: Andrei Bobrov
il 17 Set 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';
0 Commenti
Più risposte (1)
Teja Muppirala
il 17 Set 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 Commenti
Teja Muppirala
il 17 Set 2013
Hello Andrei! conv is simpler, but your solution is definitely more creative and interesting.
Vedere anche
Categorie
Scopri di più su Image Processing Toolbox in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!