diagonal pixel differences of image matrix

2 vues (au cours des 30 derniers jours)
mahesh chathuranga
mahesh chathuranga le 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]

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 17 Sep 2013
Modifié(e) : Andrei Bobrov le 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';

Plus de réponses (1)

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

Connectez-vous pour commenter.

Catégories

En savoir plus sur Image Processing Toolbox dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by