help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: What happen when you substract two rows?


From: Andreas Weber
Subject: Re: What happen when you substract two rows?
Date: Sun, 06 Jul 2014 21:18:15 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Icedove/24.5.0

Am 05.07.2014 20:16, schrieb burita:
> Hello,
> I'm a java JEE develloper and I'm having quite some trouble understanding
> this piece of code :
> 
> img=imread(“test.jpg”);
> c=0;
> for i=img
>    for j=1:rows(i)-1
>       c+=uint64(abs(i(j)-i(j+1)));
>    endfor
> endfor
> c
> 
> img is a 3 dimensional array MxNx3Color, each color goes from 1 to 255
> what I don't understand is this : i(j)-i(j+1)

The inner loop tries to calculate the sum over the absolute valus
between the difference of subsequent elements.

The result of i(j)-i(j+1) is clamped to 0 because of uint8 arithmetic
and I don't know if this is intentional... See this example

octave:76> uint8(5)- uint8(7)
ans = 0

> It does image row n - imagne row n+1
Not, it doesn't, see above

If you have problemx understanding that code I suggest adding outputs
and create a small MxNx3 matrix for testing:

For example:

img = uint8(randi(255, 2, 3, 2))
c=0;
for i=img
  i
   for j=1:rows(i)-1
      tmp = uint64(abs(i(j)-i(j+1)))
      c+=tmp;
   endfor
endfor
c

btw: if the output is really intentional, the hole code can be written as

c = sum(diff(flipdim(img, 1), 1, 1)(:))

which is *much* faster.

HTH, Andy






reply via email to

[Prev in Thread] Current Thread [Next in Thread]