diagonal pixel differences of image matrix
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Andrei Bobrov
2013-9-17
编辑:Andrei Bobrov
2013-9-17
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 个评论
更多回答(1 个)
Teja Muppirala
2013-9-17
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 个评论
Teja Muppirala
2013-9-17
Hello Andrei! conv is simpler, but your solution is definitely more creative and interesting.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Operating on Diagonal Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!